diff options
author | luckytyphlosion <alan.rj.huang@gmail.com> | 2016-05-30 18:20:41 -0400 |
---|---|---|
committer | luckytyphlosion <alan.rj.huang@gmail.com> | 2016-05-30 18:20:41 -0400 |
commit | 3330662296eabb6b3b7f0eed1c79003c8873c712 (patch) | |
tree | dae9a2f40425a236a3ef6ecce453cf16b4359c26 /scripts | |
parent | 5b53dbe15d0f24c0ebcb537d7e11c106abd99867 (diff) | |
parent | d00b70b33ee909ad163f2cb1c639ce799db118d0 (diff) |
Merge pull request #9 from PikalaxALT/master
Disassemble banks 3A, 3F, and all outdoor maps
Diffstat (limited to 'scripts')
76 files changed, 3349 insertions, 1844 deletions
diff --git a/scripts/beach_house.asm b/scripts/beach_house.asm index d6112df7..6d53b7ce 100644 --- a/scripts/beach_house.asm +++ b/scripts/beach_house.asm @@ -12,37 +12,35 @@ BeachHouseTextPointers: SurfinDudeText: TX_ASM - ld a,[$d471] - bit 6,a - jr nz,.next - ld hl,.SurfinDudeText4 + ld a, [wd472] + bit 6, a + jr nz, .next + ld hl, .SurfinDudeText4 call PrintText jr .done .next - ld hl,$d492 - bit 0,[hl] - set 0,[hl] - jr nz,.next2 - ld hl,.SurfinDudeText1 + ld hl, wPreventBlackout + bit 0, [hl] + set 0, [hl] + jr nz, .next2 + ld hl, .SurfinDudeText1 jr .next3 .next2 - ld hl,.SurfinDudeText3 + ld hl, .SurfinDudeText3 .next3 call PrintText call YesNoChoice - ld a,[wCurrentMenuItem] + ld a, [wCurrentMenuItem] and a - jr nz,.xf226b - ld a,1 - ld [$cc3c],a - ld b,$3e - ld hl,$4000 - call $3e84 - ld hl,$d492 - set 1,[hl] + jr nz, .asm_f226b + ld a, 1 + ld [wDoNotWaitForButtonPressAfterDisplayingText], a + callba Func_f8000 + ld hl, wPreventBlackout + set 1, [hl] jr .done -.xf226b - ld hl,.SurfinDudeText2 +.asm_f226b + ld hl, .SurfinDudeText2 call PrintText .done jp TextScriptEnd @@ -62,9 +60,9 @@ SurfinDudeText: BeachHousePikachuText: TX_ASM - ld hl,.BeachHousePikachuText + ld hl, .BeachHousePikachuText call PrintText - ld a,PIKACHU + ld a, PIKACHU call PlayCry call WaitForSoundToFinish jp TextScriptEnd @@ -75,11 +73,11 @@ BeachHousePikachuText: BeachHouseSign1Text: TX_ASM - ld hl,.BeachHouseSign1Text2 - ld a,[$d471] - bit 6,a - jr z,.next - ld hl,.BeachHouseSign1Text1 + ld hl, .BeachHouseSign1Text2 + ld a, [wd472] + bit 6, a + jr z, .next + ld hl, .BeachHouseSign1Text1 .next call PrintText jp TextScriptEnd @@ -93,11 +91,11 @@ BeachHouseSign1Text: BeachHouseSign2Text: TX_ASM - ld hl,.BeachHouseSign2Text2 - ld a,[$d471] - bit 6,a - jr z,.next - ld hl,.BeachHouseSign2Text1 + ld hl, .BeachHouseSign2Text2 + ld a, [wd472] + bit 6, a + jr z, .next + ld hl, .BeachHouseSign2Text1 .next call PrintText jp TextScriptEnd @@ -111,11 +109,11 @@ BeachHouseSign2Text: BeachHouseSign3Text: TX_ASM - ld hl,.BeachHouseSign3Text2 - ld a,[$d471] - bit 6,a - jr z,.next - ld hl,.BeachHouseSign3Text1 + ld hl, .BeachHouseSign3Text2 + ld a, [wd472] + bit 6, a + jr z, .next + ld hl, .BeachHouseSign3Text1 .next call PrintText jp TextScriptEnd @@ -129,67 +127,65 @@ BeachHouseSign3Text: BeachHouseSign4Text: TX_ASM - ld a,1 - ld [$cc3c],a - ld a,[$d471] - bit 6,a - jr z,.xf2369 + ld a, 1 + ld [wDoNotWaitForButtonPressAfterDisplayingText], a + ld a, [wd472] + bit 6, a + jr z, .asm_f2369 - ld hl,$d492 - bit 1,[hl] - jr z,.next2 - ld a,0 - ld [$cc3c],a + ld hl, wPreventBlackout + bit 1, [hl] + jr z, .next2 + ld a, 0 + ld [wDoNotWaitForButtonPressAfterDisplayingText], a .next2 - ld hl,.BeachHousePrinterText2 + ld hl, .BeachHousePrinterText2 call PrintText - ld a,[$d492] - bit 1,a - jr z,.xf236f + ld a, [wPreventBlackout] + bit 1, a + jr z, .asm_f236f - ld a,1 - ld [$cc3c],a - ld hl,.BeachHousePrinterText3 + ld a, 1 + ld [wDoNotWaitForButtonPressAfterDisplayingText], a + ld hl, .BeachHousePrinterText3 call PrintText call YesNoChoice - ld a,[wCurrentMenuItem] + ld a, [wCurrentMenuItem] and a - jp z,$63d0 ; 0xf23d0 - call $36ec - ld hl,$d72f - set 6,[hl] + jp z, Func_f23d0 ; 0xf23d0 + call SaveScreenTilesToBuffer2 + ld hl, wd730 + set 6, [hl] xor a - ld [$cfca],a - ld hl,$510a - ld b,$3a - call $3e84 - call $3852 - ld hl,$d72f - res 6,[hl] - call $3dd8 - call $2f83 - call $3dc2 - call $36f8 - call $3ddb - call $3de0 - ld a,1 - ld [$cfca],a - jr .xf236f -.xf2369 - ld hl,.BeachHousePrinterText1 + ld [wUpdateSpritesEnabled], a + callab Func_e910a + call WaitForTextScrollButtonPress + ld hl, wd730 + res 6, [hl] + call GBPalWhiteOutWithDelay3 + call ReloadTilesetTilePatterns + call RestoreScreenTilesAndReloadTilePatterns + call LoadScreenTilesFromBuffer2 + call Delay3 + call GBPalNormal + ld a, 1 + ld [wUpdateSpritesEnabled], a + jr .asm_f236f +.asm_f2369 + ld hl, .BeachHousePrinterText1 call PrintText -.xf236f +.asm_f236f jp TextScriptEnd .BeachHousePrinterText1 TX_FAR _BeachHousePrinterText1 - db $d,"@" + db $d, "@" .BeachHousePrinterText2 TX_FAR _BeachHousePrinterText2 - db $d,"@" + db $d, "@" .BeachHousePrinterText3 TX_FAR _BeachHousePrinterText3 db "@" -.xf2383 +.BeachHousePrinterText4 TX_FAR _BeachHousePrinterText4 db "@" diff --git a/scripts/beach_house2.asm b/scripts/beach_house2.asm new file mode 100755 index 00000000..a2dd2114 --- /dev/null +++ b/scripts/beach_house2.asm @@ -0,0 +1,33 @@ +Func_f23d0: ; f23d0 + call SaveScreenTilesToBuffer2 + xor a + ld [wUpdateSpritesEnabled], a + ld hl, wd730 + set 6, [hl] + callab Func_e8c5c + ld hl, wd730 + res 6, [hl] + call GBPalWhiteOutWithDelay3 + call ReloadTilesetTilePatterns + call RestoreScreenTilesAndReloadTilePatterns + call LoadScreenTilesFromBuffer2 + call Delay3 + call GBPalNormal + ld hl, Text_f2412 + ld a, [hOaksAideResult] + and a + jr nz, .asm_f2406 + ld hl, Text_f240c +.asm_f2406 + call PrintText + jp TextScriptEnd + +Text_f240c: + TX_FAR _BeachHousePrinterText5 + TX_WAIT_BUTTON + db "@" + +Text_f2412: + TX_FAR _BeachHousePrinterText6 + TX_WAIT_BUTTON + db "@" diff --git a/scripts/bikeshop.asm b/scripts/bikeshop.asm index e639caf9..5723849d 100755 --- a/scripts/bikeshop.asm +++ b/scripts/bikeshop.asm @@ -1,5 +1,6 @@ BikeShopScript: ; 1d73c (7:573c) - jp EnableAutoTextBoxDrawing + call EnableAutoTextBoxDrawing + ret BikeShopTextPointers: ; 1d73f (7:573f) dw BikeShopText1 @@ -13,6 +14,7 @@ BikeShopText1: ; 1d745 (7:5745) ld hl, BikeShopText_1d82f call PrintText jp .Done + .asm_260d4 ld b, BIKE_VOUCHER call IsItemInBag @@ -29,10 +31,12 @@ BikeShopText1: ; 1d745 (7:5745) ld hl, BikeShopText_1d824 call PrintText jr .Done + .BagFull ld hl, BikeShopText_1d834 call PrintText jr .Done + .asm_41190 ld hl, BikeShopText_1d810 call PrintText @@ -50,8 +54,7 @@ BikeShopText1: ; 1d745 (7:5745) ld hl, wd730 set 6, [hl] coord hl, 0, 0 - ld b, $4 - ld c, $f + lb bc, 4, 15 call TextBoxBorder call UpdateSprites coord hl, 2, 2 @@ -62,11 +65,12 @@ BikeShopText1: ; 1d745 (7:5745) call PlaceString ld hl, BikeShopText_1d815 call PrintText - call HandleMenuInput - bit 1, a - jr nz, .cancel + ; This fixes the bike shop instatext glitch ld hl, wd730 res 6, [hl] + call HandleMenuInput + bit BIT_B_BUTTON, a + jr nz, .cancel ld a, [wCurrentMenuItem] and a jr nz, .cancel @@ -94,7 +98,7 @@ BikeShopText_1d815: ; 1d815 (7:5815) db "@" BikeShopCantAffordText: ; 1d81a (7:581a) - TX_FAR _BikeShopCantAffordText + TX_FAR _BikeShopText_1d81a db "@" BikeShopText_1d81f: ; 1d81f (7:581f) @@ -103,10 +107,11 @@ BikeShopText_1d81f: ; 1d81f (7:581f) BikeShopText_1d824: ; 1d824 (7:5824) TX_FAR _BikeShopText_1d824 - db $11, "@" + TX_SFX_KEY_ITEM + db "@" BikeShopComeAgainText: ; 1d82a (7:582a) - TX_FAR _BikeShopComeAgainText + TX_FAR _BikeShopText_1d82a db "@" BikeShopText_1d82f: ; 1d82f (7:582f) diff --git a/scripts/billshouse.asm b/scripts/billshouse.asm index 56f2204f..4f01021e 100755 --- a/scripts/billshouse.asm +++ b/scripts/billshouse.asm @@ -2,7 +2,7 @@ BillsHouseScript: ; 1e76a (7:676a) call EnableAutoTextBoxDrawing ld a, [W_BILLSHOUSECURSCRIPT] ld hl, BillsHouseScriptPointers - jp CallFunctionInTable + jp JumpTable BillsHouseScriptPointers: ; 1e776 (7:6776) dw BillsHouseScript0 diff --git a/scripts/billshouse2.asm b/scripts/billshouse2.asm new file mode 100755 index 00000000..6f62a79f --- /dev/null +++ b/scripts/billshouse2.asm @@ -0,0 +1,158 @@ +Func_f2418: + ld hl, BillsHouseText_f243b + call PrintText + call YesNoChoice + ld a, [wCurrentMenuItem] + and a + jr nz, .asm_f2433 +.asm_f2427 + ld hl, BillsHouseText_f2440 + call PrintText + ld a, $2 + ld [W_BILLSHOUSECURSCRIPT], a + ret + +.asm_f2433 + ld hl, BillsHouseText_f2445 + call PrintText + jr .asm_f2427 + +BillsHouseText_f243b: + TX_FAR _BillsHouseText_1e865 + db "@" + +BillsHouseText_f2440: + TX_FAR _BillsHouseText_1e86a + db "@" + +BillsHouseText_f2445: + TX_FAR _BillsHouseText_1e86f + db "@" + +Func_f244a: + CheckEvent EVENT_GOT_SS_TICKET + jr nz, .asm_f247e + ld hl, BillsHouseText_f248c + call PrintText + lb bc, S_S_TICKET, 1 + call GiveItem + jr nc, .asm_f2485 + ld hl, BillsHouseText_f2491 + call PrintText + SetEvent EVENT_GOT_SS_TICKET + ld a, HS_CERULEAN_GUARD_1 + ld [wMissableObjectIndex], a + predef ShowObject + ld a, HS_CERULEAN_GUARD_2 + ld [wMissableObjectIndex], a + predef HideObject +.asm_f247e + ld hl, BillsHouseText_f249d + call PrintText + ret + +.asm_f2485 + ld hl, BillsHouseText_f2498 + call PrintText + ret + +BillsHouseText_f248c: + TX_FAR _BillThankYouText + db "@" + +BillsHouseText_f2491: + TX_FAR _SSTicketReceivedText + TX_SFX_KEY_ITEM + TX_BUTTON_SOUND + db "@" + +BillsHouseText_f2498: + TX_FAR _SSTicketNoRoomText + db "@" + +BillsHouseText_f249d: + TX_FAR _BillsHouseText_1e8cb + db "@" + +Func_f24a2: + ld hl, BillsHouseText_f24a9 + call PrintText + ret + +BillsHouseText_f24a9: + TX_FAR _BillsHouseText_1e8da + db "@" + +Func_f24ae: ; f24ae + ld a, [wCurMap] + cp BILLS_HOUSE + jr nz, .asm_f24d2 + call CheckPikachuAsleep + jr z, .asm_f24d2 + ld a, [W_BILLSHOUSECURSCRIPT] + cp $5 + ld e, $1b + ret z + cp $0 + ld e, $17 + ret z + CheckEventHL EVENT_MET_BILL_2 + ld e, $20 + ret z + ld e, $1f + ret + +.asm_f24d2 + ld e, $ff + ret + +Func_f24d5: + ld a, $ff + ld [wJoyIgnore], a + xor a + ld [wPlayerMovingDirection], a + call UpdateSprites + call UpdateSprites + ld hl, Data_f2505 + call Func_159b + ld a, $f ; pikachu + ld [wEmotionBubbleSpriteIndex], a + ld a, $1 + ld [wWhichEmotionBubble], a + predef EmotionBubble + call SetPikachuAsleep + callab InitializePikachuTextID + ret + +Data_f2505: + db $00 + db $20 + db $20 + db $20 + db $1e + db $3f + +Func_f250b: + ld hl, Data_f251c + ld b, SPRITE_FACING_UP + call Func_f0a82 + ld hl, Data_f2521 + ld b, SPRITE_FACING_RIGHT + call Func_f0a82 + ret + +Data_f251c: + db $00 + db $1f + db $1d + db $38 + db $3f + +Data_f2521: + db $00 + db $1e + db $1f + db $1f + db $1d + db $38 + db $3f diff --git a/scripts/blueshouse.asm b/scripts/blueshouse.asm index 6aa2eaec..959fb23e 100755 --- a/scripts/blueshouse.asm +++ b/scripts/blueshouse.asm @@ -1,8 +1,9 @@ BluesHouseScript: ; 19b3b (6:5b3b) call EnableAutoTextBoxDrawing - ld hl,BluesHouseScriptPointers - ld a,[W_BLUESHOUSECURSCRIPT] - jp CallFunctionInTable + ld hl, BluesHouseScriptPointers + xor a + call JumpTable + ret BluesHouseScriptPointers: ; 19b47 (6:5b47) dw BluesHouseScript0 @@ -12,10 +13,8 @@ BluesHouseScript0: ; 19b4b (6:5b4b) SetEvent EVENT_ENTERED_BLUES_HOUSE ; trigger the next script - ld a,1 - ld [W_BLUESHOUSECURSCRIPT],a - ret - + ld a, 1 + ld [W_BLUESHOUSECURSCRIPT], a BluesHouseScript1: ; 19b56 (6:5b56) ret @@ -27,31 +26,31 @@ BluesHouseTextPointers: ; 19b57 (6:5b57) BluesHouseText1: ; 19b5d (6:5b5d) TX_ASM CheckEvent EVENT_GOT_TOWN_MAP - jr nz,.GotMap + jr nz, .GotMap CheckEvent EVENT_GOT_POKEDEX - jr nz,.GiveMap - ld hl,DaisyInitialText + jr nz, .GiveMap + ld hl, DaisyInitialText call PrintText jr .done .GiveMap - ld hl,DaisyOfferMapText + ld hl, DaisyOfferMapText call PrintText lb bc, TOWN_MAP, 1 call GiveItem jr nc, .BagFull - ld a,HS_TOWN_MAP - ld [wMissableObjectIndex],a + ld a, HS_TOWN_MAP + ld [wMissableObjectIndex], a predef HideObject ; hide table map object - ld hl,GotMapText + ld hl, GotMapText call PrintText SetEvent EVENT_GOT_TOWN_MAP jr .done .GotMap - ld hl,DaisyUseMapText + ld hl, DaisyUseMapText call PrintText jr .done .BagFull - ld hl,DaisyBagFullText + ld hl, DaisyBagFullText call PrintText .done jp TextScriptEnd @@ -66,7 +65,7 @@ DaisyOfferMapText: ; 19baf (6:5baf) GotMapText: ; 19bb4 (6:5bb4) TX_FAR _GotMapText - db $11,"@" + db $11, "@" DaisyBagFullText: ; 19bba (6:5bba) TX_FAR _DaisyBagFullText diff --git a/scripts/celadoncity.asm b/scripts/celadoncity.asm index cfc8f197..233b38bd 100755 --- a/scripts/celadoncity.asm +++ b/scripts/celadoncity.asm @@ -1,5 +1,14 @@ -CeladonCityScript: ; 19956 (6:5956) +CeladonCityScript: ; 19a43 (6:5a43) call EnableAutoTextBoxDrawing + ld hl, CeladonCityScriptPointers + ld a, [W_CELADONCITYCURSCRIPT] + call JumpTable + ret + +CeladonCityScriptPointers: + dw CeladonCityScript1 + +CeladonCityScript1: ResetEvents EVENT_1B8, EVENT_1BF ResetEvent EVENT_67F ret @@ -99,8 +108,9 @@ CeladonCityText9: ; 199fe (6:59fe) db "@" CeladonCityText10: ; 19a03 (6:5a03) - TX_FAR _CeladonCityText10 - db "@" + TX_ASM + callba Func_f1ac6 + jp TextScriptEnd CeladonCityText11: ; 19a08 (6:5a08) TX_FAR _CeladonCityText11 diff --git a/scripts/celadoncity2.asm b/scripts/celadoncity2.asm new file mode 100755 index 00000000..12f7b366 --- /dev/null +++ b/scripts/celadoncity2.asm @@ -0,0 +1,8 @@ +Func_f1ac6: + ld hl, Text_f1acd + call PrintText + ret + +Text_f1acd: + TX_FAR _CeladonCityText10 + db "@" diff --git a/scripts/celadongamecorner.asm b/scripts/celadongamecorner.asm index c3872bab..5fc9cf97 100755 --- a/scripts/celadongamecorner.asm +++ b/scripts/celadongamecorner.asm @@ -4,7 +4,7 @@ CeladonGameCornerScript: ; 48bbd (12:4bbd) call EnableAutoTextBoxDrawing ld hl, CeladonGameCornerScriptPointers ld a, [W_CELADONGAMECORNERCURSCRIPT] - jp CallFunctionInTable + jp JumpTable CeladonGameCornerScript_48bcf: ; 48bcf (12:4bcf) ld hl, wd126 diff --git a/scripts/ceruleancity.asm b/scripts/ceruleancity.asm index 55254adc..59b0e525 100755 --- a/scripts/ceruleancity.asm +++ b/scripts/ceruleancity.asm @@ -2,7 +2,7 @@ CeruleanCityScript: ; 19480 (6:5480) call EnableAutoTextBoxDrawing ld hl, CeruleanCityScriptPointers ld a, [W_CERULEANCITYCURSCRIPT] - jp CallFunctionInTable + jp JumpTable CeruleanCityScript_1948c: ; 1948c (6:548c) xor a @@ -64,9 +64,7 @@ CeruleanCityScript0: ; 194c8 (6:54c8) ld a, [wWalkBikeSurfState] and a jr z, .asm_19512 - ld a, $ff - ld [wNewSoundID], a - call PlaySound + call StopAllMusic .asm_19512 ld c, BANK(Music_MeetRival) ld a, MUSIC_MEET_RIVAL @@ -136,23 +134,8 @@ CeruleanCityScript1: ; 19567 (6:5567) call SaveEndBattleTextPointers ld a, OPP_SONY1 ld [wCurOpponent], a - - ; select which team to use during the encounter - ld a, [W_RIVALSTARTER] - cp STARTER2 - jr nz, .NotSquirtle - ld a, $7 - jr .done -.NotSquirtle - cp STARTER3 - jr nz, .Charmander - ld a, $8 - jr .done -.Charmander - ld a, $9 -.done + ld a, 3 ld [wTrainerNo], a - xor a ld [hJoyHeld], a call CeruleanCityScript_1955d @@ -171,9 +154,7 @@ CeruleanCityScript2: ; 195b1 (6:55b1) ld a, $1 ld [hSpriteIndexOrTextID], a call DisplayTextID - ld a, $ff - ld [wNewSoundID], a - call PlaySound + call StopAllMusic callba Music_RivalAlternateStart ld a, $1 ld [H_SPRITEINDEX], a diff --git a/scripts/ceruleangym.asm b/scripts/ceruleangym.asm index fe0faea0..f1ef4c43 100755 --- a/scripts/ceruleangym.asm +++ b/scripts/ceruleangym.asm @@ -55,6 +55,7 @@ CeruleanGymScript_5c70d: ; 5c70d (17:470d) call DisplayTextID SetEvent EVENT_GOT_TM11 jr .asm_5c736 + .BagFull ld a, $7 ld [hSpriteIndexOrTextID], a @@ -158,7 +159,7 @@ CeruleanGymText7: ; 5c7d3 (17:47d3) CeruleanGymText_5c7d8: ; 5c7d8 (17:47d8) TX_FAR _CeruleanGymText_5c7d8 - db $11, $6, "@" + db "@" CeruleanGymText2: ; 5c7df (17:47df) TX_ASM diff --git a/scripts/ceruleanhouse1.asm b/scripts/ceruleanhouse1.asm index e703d830..0b9a9052 100755 --- a/scripts/ceruleanhouse1.asm +++ b/scripts/ceruleanhouse1.asm @@ -1,17 +1,106 @@ CeruleanHouse1Script: ; 1d6f6 (7:56f6) - jp EnableAutoTextBoxDrawing + call EnableAutoTextBoxDrawing + ret CeruleanHouse1TextPointers: ; 1d6f9 (7:56f9) dw CeruleanHouse1Text1 dw CeruleanHouse1Text2 + dw CeruleanHouse1Text3 + dw CeruleanHouse1Text4 CeruleanHouse1Text1: ; 1d6fd (7:56fd) - TX_FAR _CeruleanHouse1Text1 + TX_ASM + ld a, $1 + ld [wDoNotWaitForButtonPressAfterDisplayingText], a + CheckEvent EVENT_GOT_BULBASAUR_IN_CERULEAN + jr nz, .asm_1cfbf + ld hl, CeruleanHouse1Text_1cfc8 + call PrintText + ld a, [wPikachuHappiness] + cp 147 + jr c, .asm_1cfb3 + ld hl, CeruleanHouse1Text_1cfce + call PrintText + call YesNoChoice + ld a, [wCurrentMenuItem] + and a + jr nz, .asm_1cfb6 + ld a, $1 + ld [wDoNotWaitForButtonPressAfterDisplayingText], a + ld a, BULBASAUR + ld [wd11e], a + ld [wcf91], a + call GetMonName + ld a, $1 + ld [wDoNotWaitForButtonPressAfterDisplayingText], a + lb bc, BULBASAUR, 10 + call GivePokemon + jr nc, .asm_1cfb3 + ld a, [wAddedToParty] + and a + call z, WaitForTextScrollButtonPress + ld a, $1 + ld [wDoNotWaitForButtonPressAfterDisplayingText], a + ld hl, CeruleanHouse1Text_1cfd3 + call PrintText + ld a, HS_CERULEAN_BULBASAUR + ld [wMissableObjectIndex], a + predef HideObject + SetEvent EVENT_GOT_BULBASAUR_IN_CERULEAN +.asm_1cfb3 + jp TextScriptEnd + +.asm_1cfb6 + ld hl, CeruleanHouse1Text_1cfdf + call PrintText + jp TextScriptEnd + +.asm_1cfbf + ld hl, CeruleanHouse1Text_1cfd9 + call PrintText + jp TextScriptEnd + +CeruleanHouse1Text_1cfc8: + TX_FAR MelanieText1 + TX_WAIT_BUTTON + db "@" + +CeruleanHouse1Text_1cfce: + TX_FAR MelanieText2 + db "@" + +CeruleanHouse1Text_1cfd3: + TX_FAR MelanieText3 + TX_WAIT_BUTTON + db "@" + +CeruleanHouse1Text_1cfd9: + TX_FAR MelanieText4 + TX_WAIT_BUTTON + db "@" + +CeruleanHouse1Text_1cfdf: + TX_FAR MelanieText5 + TX_WAIT_BUTTON db "@" CeruleanHouse1Text2: ; 1d702 (7:5702) + TX_FAR MelanieBulbasaurText + TX_ASM + ld a, BULBASAUR + call PlayCry + jp TextScriptEnd + +CeruleanHouse1Text3: ; 1d702 (7:5702) + TX_FAR MelanieOddishText + TX_ASM + ld a, ODDISH + call PlayCry + jp TextScriptEnd + +CeruleanHouse1Text4: ; 1d702 (7:5702) + TX_FAR MelanieSandshrewText TX_ASM - ld a, $6 - ld [wWhichTrade], a - predef DoInGameTradeDialogue + ld a, SANDSHREW + call PlayCry jp TextScriptEnd diff --git a/scripts/ceruleanpokecenter.asm b/scripts/ceruleanpokecenter.asm index 5d888317..f4eb68ae 100755 --- a/scripts/ceruleanpokecenter.asm +++ b/scripts/ceruleanpokecenter.asm @@ -7,6 +7,7 @@ CeruleanPokecenterTextPointers: ; 5c64b (17:464b) dw CeruleanPokecenterText2 dw CeruleanPokecenterText3 dw CeruleanPokecenterText4 + dw CeruleanPokecenterText5 CeruleanPokecenterText4: ; 5c653 (17:4653) db $f6 @@ -21,3 +22,8 @@ CeruleanPokecenterText2: ; 5c655 (17:4655) CeruleanPokecenterText3: ; 5c65a (17:465a) TX_FAR _CeruleanPokecenterText3 db "@" + +CeruleanPokecenterText5: + TX_ASM + callab Func_f0f12 + jp TextScriptEnd diff --git a/scripts/cinnabargym.asm b/scripts/cinnabargym.asm index 649609b3..c5d462b3 100755 --- a/scripts/cinnabargym.asm +++ b/scripts/cinnabargym.asm @@ -3,7 +3,7 @@ CinnabarGymScript: ; 7574a (1d:574a) call EnableAutoTextBoxDrawing ld hl, CinnabarGymScriptPointers ld a, [W_CINNABARGYMCURSCRIPT] - jp CallFunctionInTable + jp JumpTable CinnabarGymScript_75759: ; 75759 (1d:5759) ld hl, wd126 diff --git a/scripts/cinnabarisland.asm b/scripts/cinnabarisland.asm index 48ded740..3a2e9a2b 100755 --- a/scripts/cinnabarisland.asm +++ b/scripts/cinnabarisland.asm @@ -6,7 +6,7 @@ CinnabarIslandScript: ; 1ca19 (7:4a19) ResetEvent EVENT_LAB_STILL_REVIVING_FOSSIL ld hl, CinnabarIslandScriptPointers ld a, [W_CINNABARISLANDCURSCRIPT] - jp CallFunctionInTable + jp JumpTable CinnabarIslandScriptPointers: ; 1ca34 (7:4a34) dw CinnabarIslandScript0 diff --git a/scripts/daycarem.asm b/scripts/daycarem.asm index 4a46e648..b80b3dac 100755 --- a/scripts/daycarem.asm +++ b/scripts/daycarem.asm @@ -50,11 +50,21 @@ DayCareMText1: ; 56254 (15:6254) ld a, PARTY_TO_DAYCARE ld [wMoveMonType], a call MoveMon + callab IsThisPartymonStarterPikachu + push af xor a ld [wRemoveMonFromBox], a call RemovePokemon + pop af + jr c, .depositedPikachuIntoDayCare ld a, [wcf91] call PlayCry + jr .asm_562e3 + +.depositedPikachuIntoDayCare + ldpikacry e, PikachuCry28 + callab PlayPikachuSoundClip +.asm_562e3 ld hl, DayCareComeSeeMeInAWhileText jp .done @@ -197,8 +207,27 @@ DayCareMText1: ; 56254 (15:6254) ld a, [hl] ld [de], a + ld a, [wPartyCount] + dec a + ld [wWhichPokemon], a + callab IsThisPartymonStarterPikachu + jr c, .withdrewPikachuFromDayCare ld a, [wcf91] call PlayCry + jr .asm_56430 + +.withdrewPikachuFromDayCare + ld a, $6 + ld [wd431], a + + ; GameFreak... TriHard + ld hl, Func_fc4fa + ld b, BANK(Func_fc4fa) + ld hl, Bankswitch + + ldpikacry e, PikachuCry35 + callab PlayPikachuSoundClip +.asm_56430 ld hl, DayCareGotMonBackText jr .done diff --git a/scripts/gary.asm b/scripts/gary.asm index 685e18fe..64734c58 100755 --- a/scripts/gary.asm +++ b/scripts/gary.asm @@ -2,7 +2,7 @@ GaryScript: ; 75f1d (1d:5f1d) call EnableAutoTextBoxDrawing ld hl, GaryScriptPointers ld a, [W_GARYCURSCRIPT] - jp CallFunctionInTable + jp JumpTable GaryScript_75f29: ; 75f29 (1d:5f29) xor a diff --git a/scripts/halloffameroom.asm b/scripts/halloffameroom.asm index 466ce77d..0f975673 100755 --- a/scripts/halloffameroom.asm +++ b/scripts/halloffameroom.asm @@ -2,7 +2,7 @@ HallofFameRoomScript: ; 5a49e (16:649e) call EnableAutoTextBoxDrawing ld hl, HallofFameRoomScriptPointers ld a, [W_HALLOFFAMEROOMCURSCRIPT] - jp CallFunctionInTable + jp JumpTable HallofFameRoomScript_5a4aa: ; 5a4aa (16:64aa) xor a diff --git a/scripts/mtmoon1.asm b/scripts/mtmoon1.asm index 4a5eeae3..a649481c 100755 --- a/scripts/mtmoon1.asm +++ b/scripts/mtmoon1.asm @@ -97,42 +97,37 @@ MtMoon1TrainerHeader7: ; 49a45 (12:5a45) MtMoon1Text1: ; 49a52 (12:5a52) TX_ASM ld hl, MtMoon1TrainerHeader0 - call TalkToTrainer - jp TextScriptEnd + jr MtMoon1TalkToTrainer MtMoon1Text2: ; 49a5c (12:5a5c) TX_ASM ld hl, MtMoon1TrainerHeader2 - call TalkToTrainer - jp TextScriptEnd + jr MtMoon1TalkToTrainer MtMoon1Text3: ; 49a66 (12:5a66) TX_ASM ld hl, MtMoon1TrainerHeader3 - call TalkToTrainer - jp TextScriptEnd + jr MtMoon1TalkToTrainer MtMoon1Text4: ; 49a70 (12:5a70) TX_ASM ld hl, MtMoon1TrainerHeader4 - call TalkToTrainer - jp TextScriptEnd + jr MtMoon1TalkToTrainer MtMoon1Text5: ; 49a7a (12:5a7a) TX_ASM ld hl, MtMoon1TrainerHeader5 - call TalkToTrainer - jp TextScriptEnd + jr MtMoon1TalkToTrainer MtMoon1Text6: ; 49a84 (12:5a84) TX_ASM ld hl, MtMoon1TrainerHeader6 - call TalkToTrainer - jp TextScriptEnd + jr MtMoon1TalkToTrainer MtMoon1Text7: ; 49a8e (12:5a8e) TX_ASM ld hl, MtMoon1TrainerHeader7 +MtMoon1TalkToTrainer: call TalkToTrainer jp TextScriptEnd diff --git a/scripts/mtmoon3.asm b/scripts/mtmoon3.asm index b3a994e2..1de3445d 100755 --- a/scripts/mtmoon3.asm +++ b/scripts/mtmoon3.asm @@ -1,6 +1,6 @@ MtMoon3Script: ; 49d0b (12:5d0b) call EnableAutoTextBoxDrawing - ld hl, MtMoon3TrainerHeader0 + ld hl, MtMoon3TrainerHeaders ld de, MtMoon3ScriptPointers ld a, [W_MTMOON3CURSCRIPT] call ExecuteCurMapScriptInTable @@ -37,13 +37,23 @@ CoordsData_49d37: ; 49d37 (12:5d37) db $08,$0E db $FF -MtMoon3Script_49d58: ; 49d58 (12:5d58) +MtMoon3Script_49cd7: ; 49d58 (12:5d58) + CheckAndResetEvent EVENT_57E + call nz, MtMoon3Script_49cec xor a ld [wJoyIgnore], a +MtMoon3Script_49ce5: ld [W_MTMOON3CURSCRIPT], a ld [W_CURMAPSCRIPT], a ret +MtMoon3Script_49cec: + ld a, HS_MT_MOON_JESSIE + call MtMoon3Script_49f93 + ld a, HS_MT_MOON_JAMES + call MtMoon3Script_49f93 + ret + MtMoon3ScriptPointers: ; 49d63 (12:5d63) dw MtMoon3Script0 dw DisplayEnemyTrainerTextAndStartBattle @@ -51,23 +61,41 @@ MtMoon3ScriptPointers: ; 49d63 (12:5d63) dw MtMoon3Script3 dw MtMoon3Script4 dw MtMoon3Script5 + dw MtMoon3Script6 + dw MtMoon3Script7 + dw MtMoon3Script8 + dw MtMoon3Script9 + dw MtMoon3Script10 + dw MtMoon3Script11 + dw MtMoon3Script12 + dw MtMoon3Script13 + dw MtMoon3Script14 + dw MtMoon3Script15 MtMoon3Script0: ; 49d6f (12:5d6f) + CheckEitherEventSet EVENT_GOT_DOME_FOSSIL, EVENT_GOT_HELIX_FOSSIL + call z, MtMoon3Script_49d28 + CheckEvent EVENT_BEAT_MT_MOON_3_TRAINER_0 + call z, MtMoon3Script_49e15 + ret + +MtMoon3Script_49d28: CheckEvent EVENT_BEAT_MT_MOON_EXIT_SUPER_NERD - jp nz, MtMoon3Script_49d91 + jp nz, .asm_49d4b ld a, [wYCoord] cp $8 - jp nz, MtMoon3Script_49d91 + jp nz, .asm_49d4b ld a, [wXCoord] cp $d - jp nz, MtMoon3Script_49d91 + jp nz, .asm_49d4b xor a ld [hJoyHeld], a ld a, $1 ld [hSpriteIndexOrTextID], a - jp DisplayTextID + call DisplayTextID + ret -MtMoon3Script_49d91: ; 49d91 (12:5d91) +.asm_49d4b CheckEitherEventSet EVENT_GOT_DOME_FOSSIL, EVENT_GOT_HELIX_FOSSIL jp z, CheckFightingMapTrainers ret @@ -75,57 +103,93 @@ MtMoon3Script_49d91: ; 49d91 (12:5d91) MtMoon3Script3: ; 49d9a (12:5d9a) ld a, [wIsInBattle] cp $ff - jp z, MtMoon3Script_49d58 + jp z, MtMoon3Script_49cd7 call UpdateSprites call Delay3 SetEvent EVENT_BEAT_MT_MOON_EXIT_SUPER_NERD xor a ld [wJoyIgnore], a ld a, $0 - ld [W_MTMOON3CURSCRIPT], a - ld [W_CURMAPSCRIPT], a + call MtMoon3Script_49ce5 ret MtMoon3Script4: ; 49dba (12:5dba) ld a, $1 ld [H_SPRITEINDEX], a call SetSpriteMovementBytesToFF - ld hl, CoordsData_49dea + ld hl, CoordsData_49dc7 + call ArePlayerCoordsInArray + jr c, .asm_49da8 + ld hl, CoordsData_49dc0 call ArePlayerCoordsInArray - jr c, .asm_49dd7 - ld hl, CoordsData_49df1 + jr c, .asm_49db0 + ld hl, CoordsData_49dd5 call ArePlayerCoordsInArray - jp nc, CheckFightingMapTrainers - ld de, MovementData_49df9 - jr .asm_49dda -.asm_49dd7 - ld de, MovementData_49df8 -.asm_49dda + jr c, .asm_49d9b + ld hl, CoordsData_49dce + call ArePlayerCoordsInArray + jr c, .asm_49da3 + jp CheckFightingMapTrainers + +.asm_49d9b + ld b, SPRITE_FACING_LEFT + ld hl, PikachuMovementData_49dd8 + call MtMoon3Script_4a325 +.asm_49da3 + ld de, MovementData_49ddd + jr .asm_49db3 + +.asm_49da8 + ld b, SPRITE_FACING_RIGHT + ld hl, PikachuMovementData_49dca + call MtMoon3Script_4a325 +.asm_49db0 + ld de, MovementData_49ddc +.asm_49db3 ld a, $1 ld [H_SPRITEINDEX], a call MoveSprite ld a, $5 - ld [W_MTMOON3CURSCRIPT], a - ld [W_CURMAPSCRIPT], a + call MtMoon3Script_49ce5 ret -CoordsData_49dea: ; 49dea (12:5dea) +CoordsData_49dc0: db $07,$0C db $06,$0B db $05,$0C db $FF -CoordsData_49df1: ; 49df1 (12:5df1) +CoordsData_49dc7: + db $07,$0C + db $FF + +PikachuMovementData_49dca: + db $00 + db $35 + db $33 + db $3f + +CoordsData_49dce: db $07,$0D db $06,$0E db $05,$0E db $FF -MovementData_49df8: ; 49df8 (12:5df8) - db NPC_MOVEMENT_RIGHT +CoordsData_49dd5: + db $07,$0D + db $FF -MovementData_49df9: ; 49df9 (12:5df9) - db NPC_MOVEMENT_UP,$FF +PikachuMovementData_49dd8: + db $00 + db $35 + db $34 + db $3f + +MovementData_49ddc: ; 49df8 (12:5df8) + db NPC_MOVEMENT_RIGHT +MovementData_49ddd: ; 49df9 (12:5df9) + db NPC_MOVEMENT_UP + db $FF MtMoon3Script5: ; 49dfb (12:5dfb) ld a, [wd730] @@ -135,23 +199,213 @@ MtMoon3Script5: ; 49dfb (12:5dfb) ld [wJoyIgnore], a ld a, $1 ld [wDoNotWaitForButtonPressAfterDisplayingText], a - ld a, $a + ld a, $b ld [hSpriteIndexOrTextID], a call DisplayTextID - CheckEvent EVENT_GOT_DOME_FOSSIL + CheckEvent EVENT_GOT_HELIX_FOSSIL jr z, .asm_49e1d - ld a, HS_MT_MOON_3_FOSSIL_2 + ld a, HS_MT_MOON_3_FOSSIL_1 jr .asm_49e1f .asm_49e1d - ld a, HS_MT_MOON_3_FOSSIL_1 + ld a, HS_MT_MOON_3_FOSSIL_2 .asm_49e1f ld [wMissableObjectIndex], a predef HideObject xor a ld [wJoyIgnore], a ld a, $0 - ld [W_MTMOON3CURSCRIPT], a - ld [W_CURMAPSCRIPT], a + call MtMoon3Script_49ce5 + ret + +MtMoon3Script_49e15: + ld a, [wXCoord] + cp $3 + ret nz + ld a, [wYCoord] + cp $5 + ret nz + call StopAllMusic + ld c, BANK(Music_JessieAndJames) + ld a, MUSIC_JESSIE_AND_JAMES + call PlayMusic + xor a + ld [hJoyHeld], a + ld a, $FF ^ (A_BUTTON | B_BUTTON) + ld [wJoyIgnore], a + ld a, HS_MT_MOON_JESSIE + call MtMoon3Script_49f84 + ld a, HS_MT_MOON_JAMES + call MtMoon3Script_49f84 + ld a, $1 + ld [wDoNotWaitForButtonPressAfterDisplayingText], a + ld a, $c + ld [hSpriteIndexOrTextID], a + call DisplayTextID + xor a + ld [wDoNotWaitForButtonPressAfterDisplayingText], a + ld a, $1 + ld [wSimulatedJoypadStatesIndex], a + ld a, D_UP + ld [wSimulatedJoypadStatesEnd], a + call StartSimulatingJoypadStates + ld a, $ff + ld [wJoyIgnore], a + ld a, $6 + call MtMoon3Script_49ce5 + ret + +MovementData_f9e65: + db $06 +MovementData_f9e66: + db $06 + db $06 + db $06 + db $06 + db $06 + db $FF + +MtMoon3Script6: + ld a, $ff + ld [wJoyIgnore], a + ld a, [wSimulatedJoypadStatesIndex] + and a + ret nz + call Delay3 + ld a, $2 + ld [H_SPRITEINDEX], a + ld de, MovementData_f9e65 + call MoveSprite + ld a, $ff + ld [wJoyIgnore], a + ld a, $7 + call MtMoon3Script_49ce5 + ret + +MtMoon3Script7: + ld a, $ff + ld [wJoyIgnore], a + ld a, [wd730] + bit 0, a + ret nz +MtMoon3Script8: + ld a, $2 + ld [wSpriteStateData1 + 2 * $10 + 1], a + ld a, SPRITE_FACING_DOWN + ld [wSpriteStateData1 + 2 * $10 + 9], a +MtMoon3Script9: + ld a, $6 + ld [H_SPRITEINDEX], a + ld de, MovementData_f9e66 + call MoveSprite + ld a, $ff + ld [wJoyIgnore], a + ld a, $a + call MtMoon3Script_49ce5 + ret + +MtMoon3Script10: + ld a, $ff + ld [wJoyIgnore], a + ld a, [wd730] + bit 0, a + ret nz +MtMoon3Script11: + ld a, $2 + ld [wSpriteStateData1 + 6 * $10 + 1], a + ld a, SPRITE_FACING_LEFT + ld [wSpriteStateData1 + 6 * $10 + 9], a + call Delay3 + ld a, $FF ^ (A_BUTTON | B_BUTTON) + ld [wJoyIgnore], a + ld a, $d + ld [hSpriteIndexOrTextID], a + call DisplayTextID +MtMoon3Script12: + ld hl, wd72d + set 6, [hl] + set 7, [hl] + ld hl, MtMoon3JessieJamesEndBattleText + ld de, MtMoon3JessieJamesEndBattleText + call SaveEndBattleTextPointers + ld a, OPP_ROCKET + ld [wCurOpponent], a + ld a, $2a + ld [wTrainerNo], a + xor a + ld [hJoyHeld], a + ld [wJoyIgnore], a + SetEvent EVENT_57E + ld a, $d + call MtMoon3Script_49ce5 + ret + +MtMoon3Script13: + ld a, $ff + ld [wJoyIgnore], a + ld a, [wIsInBattle] + cp $ff + jp z, MtMoon3Script_49cd7 + ld a, $2 + ld [wSpriteStateData1 + 2 * $10 + 1], a + ld [wSpriteStateData1 + 6 * $10 + 1], a + xor a + ld [wSpriteStateData1 + 2 * $10 + 9], a + ld [wSpriteStateData1 + 6 * $10 + 9], a + ld a, $FF ^ (A_BUTTON | B_BUTTON) + ld [wJoyIgnore], a + ld a, $1 + ld [wDoNotWaitForButtonPressAfterDisplayingText], a + ld a, $e + ld [hSpriteIndexOrTextID], a + call DisplayTextID + xor a + ld [wDoNotWaitForButtonPressAfterDisplayingText], a + call StopAllMusic + ld c, BANK(Music_JessieAndJames) + ld a, MUSIC_JESSIE_AND_JAMES + call PlayMusic + ld a, $ff + ld [wJoyIgnore], a + ld a, $e + call MtMoon3Script_49ce5 + ret + +MtMoon3Script14: + ld a, $ff + ld [wJoyIgnore], a + call GBFadeOutToBlack + ld a, HS_MT_MOON_JESSIE + call MtMoon3Script_49f93 + ld a, HS_MT_MOON_JAMES + call MtMoon3Script_49f93 + call UpdateSprites + call Delay3 + call GBFadeInFromBlack + ld a, $f + call MtMoon3Script_49ce5 + ret + +MtMoon3Script15: + call PlayDefaultMusic + xor a + ld [hJoyHeld], a + ld [wJoyIgnore], a + SetEvent EVENT_BEAT_MT_MOON_3_TRAINER_0 + ResetEventReuseHL EVENT_57E + ld a, $0 + call MtMoon3Script_49ce5 + ret + +MtMoon3Script_49f84: + ld [wMissableObjectIndex], a + predef ShowObject + call UpdateSprites + call Delay3 + ret + +MtMoon3Script_49f93: + ld [wMissableObjectIndex], a + predef HideObject ret MtMoon3TextPointers: ; 49e34 (12:5e34) @@ -162,242 +416,258 @@ MtMoon3TextPointers: ; 49e34 (12:5e34) dw MtMoon3Text5 dw MtMoon3Text6 dw MtMoon3Text7 + dw MtMoon3Text8 dw PickUpItemText dw PickUpItemText - dw MtMoon3Text_49f99 - -MtMoon3TrainerHeaders: ; 49e48 (12:5e48) -MtMoon3TrainerHeader0: ; 49e48 (12:5e48) - dbEventFlagBit EVENT_BEAT_MT_MOON_3_TRAINER_0 - db ($4 << 4) ; trainer's view range - dwEventFlagAddress EVENT_BEAT_MT_MOON_3_TRAINER_0 - dw MtMoon3BattleText2 ; TextBeforeBattle - dw MtMoon3AfterBattleText2 ; TextAfterBattle - dw MtMoon3EndBattleText2 ; TextEndBattle - dw MtMoon3EndBattleText2 ; TextEndBattle - -MtMoon3TrainerHeader2: ; 49e54 (12:5e54) + dw MtMoon3Text11 + dw MtMoon3Text12 + dw MtMoon3Text13 + dw MtMoon3Text14 + +MtMoon3TrainerHeaders: +MtMoon3TrainerHeader0: dbEventFlagBit EVENT_BEAT_MT_MOON_3_TRAINER_2 - db ($4 << 4) ; trainer's view range + db ($4 << 4) dwEventFlagAddress EVENT_BEAT_MT_MOON_3_TRAINER_2 - dw MtMoon3BattleText3 ; TextBeforeBattle - dw MtMoon3AfterBattleText3 ; TextAfterBattle - dw MtMoon3EndBattleText3 ; TextEndBattle - dw MtMoon3EndBattleText3 ; TextEndBattle + dw MtMoon3BattleText3 + dw MtMoon3AfterBattleText3 + dw MtMoon3EndBattleText3 + dw MtMoon3EndBattleText3 -MtMoon3TrainerHeader3: ; 49e60 (12:5e60) +MtMoon3TrainerHeader1: dbEventFlagBit EVENT_BEAT_MT_MOON_3_TRAINER_3 - db ($4 << 4) ; trainer's view range + db ($4 << 4) dwEventFlagAddress EVENT_BEAT_MT_MOON_3_TRAINER_3 - dw MtMoon3BattleText4 ; TextBeforeBattle - dw MtMoon3AfterBattleText4 ; TextAfterBattle - dw MtMoon3EndBattleText4 ; TextEndBattle - dw MtMoon3EndBattleText4 ; TextEndBattle + dw MtMoon3BattleText4 + dw MtMoon3AfterBattleText4 + dw MtMoon3EndBattleText4 + dw MtMoon3EndBattleText4 -MtMoon3TrainerHeader4: ; 49e6c (12:5e6c) +MtMoon3TrainerHeader2: dbEventFlagBit EVENT_BEAT_MT_MOON_3_TRAINER_4 - db ($4 << 4) ; trainer's view range + db ($4 << 4) dwEventFlagAddress EVENT_BEAT_MT_MOON_3_TRAINER_4 - dw MtMoon3BattleText5 ; TextBeforeBattle - dw MtMoon3AfterBattleText5 ; TextAfterBattle - dw MtMoon3EndBattleText5 ; TextEndBattle - dw MtMoon3EndBattleText5 ; TextEndBattle + dw MtMoon3BattleText5 + dw MtMoon3AfterBattleText5 + dw MtMoon3EndBattleText5 + dw MtMoon3EndBattleText5 - db $ff + db $FF + +MtMoon3Text2: +MtMoon3Text6: + db "@" + +MtMoon3Text12: + TX_FAR _MtMoonJessieJamesText1 + TX_ASM + ld c, 10 + call DelayFrames + ld a, PLAYER_DIR_UP + ld [wPlayerMovingDirection], a + ld a, $0 + ld [wEmotionBubbleSpriteIndex], a + ld a, $0 + ld [wWhichEmotionBubble], a + predef EmotionBubble + ld c, 20 + call DelayFrames + jp TextScriptEnd + +MtMoon3Text13: + TX_FAR _MtMoonJessieJamesText2 + db "@" -MtMoon3Text1: ; 49e79 (12:5e79) +MtMoon3JessieJamesEndBattleText: + TX_FAR _MtMoonJessieJamesText3 + db "@" + +MtMoon3Text14: + TX_FAR _MtMoonJessieJamesText4 + TX_ASM + ld c, 64 + call DelayFrames + jp TextScriptEnd + +MtMoon3Text1: TX_ASM CheckEvent EVENT_BEAT_MT_MOON_EXIT_SUPER_NERD - jr z, .asm_49e8d - and $c0 - jr nz, .asm_49eb8 - ld hl, MtMoon3Text_49f8f + jr z, .asm_4a02f + and $81 ; CheckEitherEventSetReuseA EVENT_GOT_DOME_FOSSIL, EVENT_GOT_HELIX_FOSSIL + jr nz, .asm_4a057 + ld hl, MtMoon3Text_4a116 call PrintText - jr .asm_49ebe -.asm_49e8d - ld hl, MtMoon3Text_49f85 + jr .asm_4a05d + +.asm_4a02f + ld hl, MtMoon3Text_4a10c call PrintText ld hl, wd72d set 6, [hl] set 7, [hl] - ld hl, MtMoon3Text_49f8a - ld de, MtMoon3Text_49f8a + ld hl, MtMoon3SuperNerdEndBattleText + ld de, MtMoon3SuperNerdEndBattleText call SaveEndBattleTextPointers ld a, [H_SPRITEINDEX] ld [wSpriteIndex], a call EngageMapTrainer call InitBattleEnemyParameters ld a, $3 - ld [W_MTMOON3CURSCRIPT], a - ld [W_CURMAPSCRIPT], a - jr .asm_49ebe -.asm_49eb8 - ld hl, MtMoon3Text_49f94 + call MtMoon3Script_49ce5 + jr .asm_4a05d + +.asm_4a057 + ld hl, MtMoon3Text_4a11b call PrintText -.asm_49ebe +.asm_4a05d jp TextScriptEnd -MtMoon3Text2: ; 49ec1 (12:5ec1) +MtMoon3Text3: TX_ASM ld hl, MtMoon3TrainerHeader0 - call TalkToTrainer - jp TextScriptEnd + jr MtMoon3TalkToTrainer -MtMoon3Text3: ; 49ecb (12:5ecb) +MtMoon3Text4: TX_ASM - ld hl, MtMoon3TrainerHeader2 - call TalkToTrainer - jp TextScriptEnd + ld hl, MtMoon3TrainerHeader1 + jr MtMoon3TalkToTrainer -MtMoon3Text4: ; 49ed5 (12:5ed5) - TX_ASM - ld hl, MtMoon3TrainerHeader3 - call TalkToTrainer - jp TextScriptEnd -MtMoon3Text5: ; 49edf (12:5edf) +MtMoon3Text5: TX_ASM - ld hl, MtMoon3TrainerHeader4 + ld hl, MtMoon3TrainerHeader2 +MtMoon3TalkToTrainer: call TalkToTrainer jp TextScriptEnd -MtMoon3Text6: ; 49ee9 (12:5ee9) +MtMoon3Text7: TX_ASM ld a, $1 ld [wDoNotWaitForButtonPressAfterDisplayingText], a - ld hl, MtMoon3Text_49f24 + ld hl, MtMoon3Text_4a0ae call PrintText call YesNoChoice ld a, [wCurrentMenuItem] and a - jr nz, .asm_49f21 + jr nz, .asm_4a0ab lb bc, DOME_FOSSIL, 1 call GiveItem - jp nc, MtMoon3Script_49f76 - call MtMoon3Script_49f69 + jp nc, MtMoon3Script_4a0fd + call MtMoon3Script_4a0f0 ld a, HS_MT_MOON_3_FOSSIL_1 ld [wMissableObjectIndex], a predef HideObject SetEvent EVENT_GOT_DOME_FOSSIL ld a, $4 - ld [W_MTMOON3CURSCRIPT], a - ld [W_CURMAPSCRIPT], a -.asm_49f21 + call MtMoon3Script_49ce5 +.asm_4a0ab jp TextScriptEnd -MtMoon3Text_49f24: ; 49f24 (12:5f24) +MtMoon3Text_4a0ae: TX_FAR _MtMoon3Text_49f24 db "@" -MtMoon3Text7: ; 49f29 (12:5f29) +MtMoon3Text8: TX_ASM ld a, $1 ld [wDoNotWaitForButtonPressAfterDisplayingText], a - ld hl, MtMoon3Text_49f64 + ld hl, MtMoon3Text_4a0eb call PrintText call YesNoChoice ld a, [wCurrentMenuItem] and a - jr nz, .asm_49f61 + jr nz, .asm_4a0e8 lb bc, HELIX_FOSSIL, 1 call GiveItem - jp nc, MtMoon3Script_49f76 - call MtMoon3Script_49f69 + jp nc, MtMoon3Script_4a0fd + call MtMoon3Script_4a0f0 ld a, HS_MT_MOON_3_FOSSIL_2 ld [wMissableObjectIndex], a predef HideObject SetEvent EVENT_GOT_HELIX_FOSSIL ld a, $4 - ld [W_MTMOON3CURSCRIPT], a - ld [W_CURMAPSCRIPT], a -.asm_49f61 + call MtMoon3Script_49ce5 +.asm_4a0e8 jp TextScriptEnd -MtMoon3Text_49f64: ; 49f64 (12:5f64) +MtMoon3Text_4a0eb: TX_FAR _MtMoon3Text_49f64 db "@" -MtMoon3Script_49f69: ; 49f69 (12:5f69) - ld hl, MtMoon3Text_49f6f +MtMoon3Script_4a0f0: + ld hl, MtMoon3Text_4a0f6 jp PrintText -MtMoon3Text_49f6f: ; 49f6f (12:5f6f) +MtMoon3Text_4a0f6: TX_FAR _MtMoon3Text_49f6f - db $11, $d, "@" + TX_SFX_KEY_ITEM + TX_WAIT_BUTTON + db "@" -MtMoon3Script_49f76: ; 49f76 (12:5f76) - ld hl, MtMoon3Text_49f7f +MtMoon3Script_4a0fd: + ld hl, MtMoon3Text_4a106 call PrintText jp TextScriptEnd -MtMoon3Text_49f7f: ; 49f7f (12:5f7f) +MtMoon3Text_4a106: TX_FAR _MtMoon3Text_49f7f - db $d, "@" + TX_WAIT_BUTTON + db "@" -MtMoon3Text_49f85: ; 49f85 (12:5f85) +MtMoon3Text_4a10c: TX_FAR _MtMoon3Text_49f85 db "@" -MtMoon3Text_49f8a: ; 49f8a (12:5f8a) +MtMoon3SuperNerdEndBattleText: TX_FAR _MtMoon3Text_49f8a db "@" -MtMoon3Text_49f8f: ; 49f8f (12:5f8f) +MtMoon3Text_4a116: TX_FAR _MtMoon3Text_49f8f db "@" -MtMoon3Text_49f94: ; 49f94 (12:5f94) +MtMoon3Text_4a11b: TX_FAR _MtMoon3Text_49f94 db "@" -MtMoon3Text_49f99: ; 49f99 (12:5f99) +MtMoon3Text11: TX_FAR _MtMoon3Text_49f99 - db $11, "@" - -MtMoon3BattleText2: ; 49f9f (12:5f9f) - TX_FAR _MtMoon3BattleText2 + TX_SFX_KEY_ITEM db "@" -MtMoon3EndBattleText2: ; 49fa4 (12:5fa4) - TX_FAR _MtMoon3EndBattleText2 - db "@" - -MtMoon3AfterBattleText2: ; 49fa9 (12:5fa9) - TX_FAR _MtMoon3AfterBattleText2 - db "@" - -MtMoon3BattleText3: ; 49fae (12:5fae) +MtMoon3BattleText3: TX_FAR _MtMoon3BattleText3 db "@" -MtMoon3EndBattleText3: ; 49fb3 (12:5fb3) +MtMoon3EndBattleText3: TX_FAR _MtMoon3EndBattleText3 db "@" -MtMoon3AfterBattleText3: ; 49fb8 (12:5fb8) +MtMoon3AfterBattleText3: TX_FAR _MtMoon3AfterBattleText3 db "@" -MtMoon3BattleText4: ; 49fbd (12:5fbd) +MtMoon3BattleText4: TX_FAR _MtMoon3BattleText4 db "@" -MtMoon3EndBattleText4: ; 49fc2 (12:5fc2) +MtMoon3EndBattleText4: TX_FAR _MtMoon3EndBattleText4 db "@" -MtMoon3AfterBattleText4: ; 49fc7 (12:5fc7) +MtMoon3AfterBattleText4: TX_FAR _MtMoon3AfterBattleText4 db "@" -MtMoon3BattleText5: ; 49fcc (12:5fcc) +MtMoon3BattleText5: TX_FAR _MtMoon3BattleText5 db "@" -MtMoon3EndBattleText5: ; 49fd1 (12:5fd1) +MtMoon3EndBattleText5: TX_FAR _MtMoon3EndBattleText5 db "@" -MtMoon3AfterBattleText5: ; 49fd6 (12:5fd6) +MtMoon3AfterBattleText5: TX_FAR _MtMoon3AfterBattleText5 db "@" + diff --git a/scripts/mtmoonpokecenter.asm b/scripts/mtmoonpokecenter.asm index fd3e4e53..320ed070 100755 --- a/scripts/mtmoonpokecenter.asm +++ b/scripts/mtmoonpokecenter.asm @@ -9,9 +9,10 @@ MtMoonPokecenterTextPointers: ; 492d5 (12:52d5) dw MtMoonPokecenterText4 dw MtMoonPokecenterText5 dw MtMoonPokecenterText6 + dw MtMoonPokecenterText7 MtMoonPokecenterText1: ; 492e1 (12:52e1) - db $ff + TX_POKECENTER_NURSE MtMoonPokecenterText2: ; 492e2 (12:52e2) TX_FAR _MtMoonPokecenterText1 @@ -23,72 +24,17 @@ MtMoonPokecenterText3: ; 492e7 (12:52e7) MtMoonPokecenterText4: ; 492ec (12:52ec) TX_ASM - CheckEvent EVENT_BOUGHT_MAGIKARP, 1 - jp c, .alreadyBoughtMagikarp - ld hl, MtMoonPokecenterText_4935c - call PrintText - ld a, MONEY_BOX - ld [wTextBoxID], a - call DisplayTextBoxID - call YesNoChoice - ld a, [wCurrentMenuItem] - and a - jp nz, .choseNo - ld [hMoney], a - ld [hMoney + 2], a - ld a, $5 - ld [hMoney + 1], a - call HasEnoughMoney - jr nc, .enoughMoney - ld hl, MtMoonPokecenterText_49366 - jr .printText -.enoughMoney - lb bc, MAGIKARP, 5 - call GivePokemon - jr nc, .done - xor a - ld [wPriceTemp], a - ld [wPriceTemp + 2], a - ld a, $5 - ld [wPriceTemp + 1], a - ld hl, wPriceTemp + 2 - ld de, wPlayerMoney + 2 - ld c, $3 - predef SubBCDPredef - ld a, MONEY_BOX - ld [wTextBoxID], a - call DisplayTextBoxID - SetEvent EVENT_BOUGHT_MAGIKARP - jr .done -.choseNo - ld hl, MtMoonPokecenterText_49361 - jr .printText -.alreadyBoughtMagikarp - ld hl, MtMoonPokecenterText_4936b -.printText - call PrintText -.done + callab Func_f218c jp TextScriptEnd -MtMoonPokecenterText_4935c: ; 4935c (12:535c) - TX_FAR _MtMoonPokecenterText_4935c - db "@" - -MtMoonPokecenterText_49361: ; 49361 (12:5361) - TX_FAR _MtMoonPokecenterText_49361 - db "@" - -MtMoonPokecenterText_49366: ; 49366 (12:5366) - TX_FAR _MtMoonPokecenterText_49366 - db "@" - -MtMoonPokecenterText_4936b: ; 4936b (12:536b) - TX_FAR _MtMoonPokecenterText_4936b - db "@" - MtMoonPokecenterText5: ; 49370 (12:5370) TX_FAR _MtMoonPokecenterText5 db "@" MtMoonPokecenterText6: ; 49375 (12:5375) - db $f6 + TX_CABLE_CLUB_RECEPTIONIST + +MtMoonPokecenterText7: + TX_ASM + callab Func_f0f12 + jp TextScriptEnd diff --git a/scripts/mtmoonpokecenter2.asm b/scripts/mtmoonpokecenter2.asm new file mode 100755 index 00000000..fa42f440 --- /dev/null +++ b/scripts/mtmoonpokecenter2.asm @@ -0,0 +1,66 @@ +Func_f218c: + CheckEvent EVENT_BOUGHT_MAGIKARP, 1 + jp c, .alreadyBoughtMagikarp + ld hl, MtMoonPokecenterText_4935c + call PrintText + ld a, MONEY_BOX + ld [wTextBoxID], a + call DisplayTextBoxID + call YesNoChoice + ld a, [wCurrentMenuItem] + and a + jp nz, .choseNo + ; $000500 + xor a + ld [hMoney], a + ld [hMoney + 2], a + ld a, $5 + ld [hMoney + 1], a + call HasEnoughMoney + jr nc, .enoughMoney + ld hl, MtMoonPokecenterText_49366 + jr .printText +.enoughMoney + lb bc, MAGIKARP, 5 + call GivePokemon + jr nc, .done + ; $000500 + xor a + ld [wPriceTemp], a + ld [wPriceTemp + 2], a + ld a, $5 + ld [wPriceTemp + 1], a + ld hl, wPriceTemp + 2 + ld de, wPlayerMoney + 2 + ld c, $3 + predef SubBCDPredef + ld a, MONEY_BOX + ld [wTextBoxID], a + call DisplayTextBoxID + SetEvent EVENT_BOUGHT_MAGIKARP + jr .done +.choseNo + ld hl, MtMoonPokecenterText_49361 + jr .printText +.alreadyBoughtMagikarp + ld hl, MtMoonPokecenterText_4936b +.printText + call PrintText +.done + ret + +MtMoonPokecenterText_4935c: ; 4935c (12:535c) + TX_FAR _MtMoonPokecenterText_4935c + db "@" + +MtMoonPokecenterText_49361: ; 49361 (12:5361) + TX_FAR _MtMoonPokecenterText_49361 + db "@" + +MtMoonPokecenterText_49366: ; 49366 (12:5366) + TX_FAR _MtMoonPokecenterText_49366 + db "@" + +MtMoonPokecenterText_4936b: ; 4936b (12:536b) + TX_FAR _MtMoonPokecenterText_4936b + db "@" diff --git a/scripts/museum1f.asm b/scripts/museum1f.asm index 75dc1ce8..75c0d74e 100755 --- a/scripts/museum1f.asm +++ b/scripts/museum1f.asm @@ -5,7 +5,8 @@ Museum1FScript: ; 5c0f7 (17:40f7) ld [wDoNotWaitForButtonPressAfterDisplayingText], a ld hl, Museum1FScriptPointers ld a, [W_MUSEUM1FCURSCRIPT] - jp CallFunctionInTable + call JumpTable + ret Museum1FScriptPointers: ; 5c109 (17:4109) dw Museum1FScript0 @@ -40,207 +41,25 @@ Museum1FTextPointers: ; 5c12b (17:412b) Museum1FText1: ; 5c135 (17:4135) TX_ASM - ld a, [wYCoord] - cp $4 - jr nz, .asm_8774b - ld a, [wXCoord] - cp $d - jp z, Museum1FScript_5c1f9 - jr .asm_b8709 -.asm_8774b - cp $3 - jr nz, .asm_d49e7 - ld a, [wXCoord] - cp $c - jp z, Museum1FScript_5c1f9 -.asm_d49e7 - CheckEvent EVENT_BOUGHT_MUSEUM_TICKET - jr nz, .asm_31a16 - ld hl, Museum1FText_5c23d - call PrintText - jp Museum1FScriptEnd -.asm_b8709 - CheckEvent EVENT_BOUGHT_MUSEUM_TICKET - jr z, .asm_3ded4 -.asm_31a16 - ld hl, Museum1FText_5c242 - call PrintText - jp Museum1FScriptEnd -.asm_3ded4 - ld a, MONEY_BOX - ld [wTextBoxID], a - call DisplayTextBoxID - xor a - ld [hJoyHeld], a - ld hl, Museum1FText_5c21f - call PrintText - call YesNoChoice - ld a, [wCurrentMenuItem] - and a - jr nz, .asm_de133 - xor a - ld [hMoney], a - ld [hMoney + 1], a - ld a, $50 - ld [hMoney + 2], a - call HasEnoughMoney - jr nc, .asm_0f3e3 - ld hl, Museum1FText_5c229 - call PrintText - jp .asm_de133 -.asm_0f3e3 - ld hl, Museum1FText_5c224 - call PrintText - SetEvent EVENT_BOUGHT_MUSEUM_TICKET - xor a - ld [wPriceTemp], a - ld [wPriceTemp + 1], a - ld a, $50 - ld [wPriceTemp + 2], a - ld hl, wPriceTemp + 2 - ld de, wPlayerMoney + 2 - ld c, $3 - predef SubBCDPredef - ld a, MONEY_BOX - ld [wTextBoxID], a - call DisplayTextBoxID - ld a, SFX_PURCHASE - call PlaySoundWaitForCurrent - call WaitForSoundToFinish - jr .asm_0b094 -.asm_de133 - ld hl, Museum1FText_5c21a - call PrintText - ld a, $1 - ld [wSimulatedJoypadStatesIndex], a - ld a, D_DOWN - ld [wSimulatedJoypadStatesEnd], a - call StartSimulatingJoypadStates - call UpdateSprites - jr Museum1FScriptEnd -.asm_0b094 - ld a, $1 - ld [W_MUSEUM1FCURSCRIPT], a - jr Museum1FScriptEnd - -Museum1FScript_5c1f9: ; 5c1f9 (17:41f9) - ld hl, Museum1FText_5c22e - call PrintText - call YesNoChoice - ld a, [wCurrentMenuItem] - cp $0 - jr nz, .asm_d1144 - ld hl, Museum1FText_5c233 - call PrintText - jr Museum1FScriptEnd -.asm_d1144 - ld hl, Museum1FText_5c238 - call PrintText -Museum1FScriptEnd: ; 5c217 (17:4217) + callba Func_f1c1b jp TextScriptEnd -Museum1FText_5c21a: ; 5c21a (17:421a) - TX_FAR _Museum1FText_5c21a - db "@" - -Museum1FText_5c21f: ; 5c21f (17:421f) - TX_FAR _Museum1FText_5c21f - db "@" - -Museum1FText_5c224: ; 5c224 (17:4224) - TX_FAR _Museum1FText_5c224 - db "@" - -Museum1FText_5c229: ; 5c229 (17:4229) - TX_FAR _Museum1FText_5c229 - db "@" - -Museum1FText_5c22e: ; 5c22e (17:422e) - TX_FAR _Museum1FText_5c22e - db "@" - -Museum1FText_5c233: ; 5c233 (17:4233) - TX_FAR _Museum1FText_5c233 - db "@" - -Museum1FText_5c238: ; 5c238 (17:4238) - TX_FAR _Museum1FText_5c238 - db "@" - -Museum1FText_5c23d: ; 5c23d (17:423d) - TX_FAR _Museum1FText_5c23d - db "@" - -Museum1FText_5c242: ; 5c242 (17:4242) - TX_FAR _Museum1FText_5c242 - db "@" - -Museum1FText2: ; 5c247 (17:4247) +Museum1FText2: ; 5c135 (17:4135) TX_ASM - ld hl, Museum1FText_5c251 - call PrintText + callba Func_f1d2a jp TextScriptEnd -Museum1FText_5c251: ; 5c251 (17:4251) - TX_FAR _Museum1FText_5c251 - db "@" - -Museum1FText3: ; 5c256 (17:4256) +Museum1FText3: ; 5c135 (17:4135) TX_ASM - CheckEvent EVENT_GOT_OLD_AMBER - jr nz, .asm_5c285 - ld hl, Museum1FText_5c28e - call PrintText - lb bc, OLD_AMBER, 1 - call GiveItem - jr nc, .BagFull - SetEvent EVENT_GOT_OLD_AMBER - ld a, HS_OLD_AMBER - ld [wMissableObjectIndex], a - predef HideObject - ld hl, ReceivedOldAmberText - jr .asm_5c288 -.BagFull - ld hl, Museum1FText_5c29e - jr .asm_5c288 -.asm_5c285 - ld hl, Museum1FText_5c299 -.asm_5c288 - call PrintText + callba Func_f1d36 jp TextScriptEnd -Museum1FText_5c28e: ; 5c28e (17:428e) - TX_FAR _Museum1FText_5c28e - db "@" - -ReceivedOldAmberText: ; 5c293 (17:4293) - TX_FAR _ReceivedOldAmberText - db $0B, "@" - -Museum1FText_5c299: ; 5c299 (17:4299) - TX_FAR _Museum1FText_5c299 - db "@" - -Museum1FText_5c29e: ; 5c29e (17:429e) - TX_FAR _Museum1FText_5c29e - db "@" - -Museum1FText4: ; 5c2a3 (17:42a3) +Museum1FText4: ; 5c135 (17:4135) TX_ASM - ld hl, Museum1FText_5c2ad - call PrintText + callba Func_f1d80 jp TextScriptEnd -Museum1FText_5c2ad: ; 5c2ad (17:42ad) - TX_FAR _Museum1FText_5c2ad - db "@" - -Museum1FText5: ; 5c2b2 (17:42b2) +Museum1FText5: ; 5c135 (17:4135) TX_ASM - ld hl, Museum1FText_5c2bc - call PrintText + callba Func_f1d8c jp TextScriptEnd - -Museum1FText_5c2bc: ; 5c2bc (17:42bc) - TX_FAR _Museum1FText_5c2bc - db "@" diff --git a/scripts/museum1f2.asm b/scripts/museum1f2.asm new file mode 100755 index 00000000..f6dfa509 --- /dev/null +++ b/scripts/museum1f2.asm @@ -0,0 +1,211 @@ +Func_f1c1b: + ld a, [wYCoord] + cp $4 + jr nz, .asm_f1c2c + ld a, [wXCoord] + cp $d + jp z, .asm_f1cde + jr .asm_f1c48 + +.asm_f1c2c + cp $3 + jr nz, .asm_f1c38 + ld a, [wXCoord] + cp a, $c + jp z, .asm_f1cde +.asm_f1c38 + CheckEvent EVENT_BOUGHT_MUSEUM_TICKET + jr nz, .asm_f1c4f + ld hl, Museum1FText_f1d20 + call PrintText + jp .asm_f1cfc + +.asm_f1c48 + CheckEvent EVENT_BOUGHT_MUSEUM_TICKET + jr z, .asm_f1c58 +.asm_f1c4f + ld hl, Museum1FText_f1d25 + call PrintText + jp .asm_f1cfc + +.asm_f1c58 + ld a, $13 + ld [wTextBoxID], a + call DisplayTextBoxID + xor a + ld [hJoyHeld], a + ld hl, Museum1FText_f1d02 + call PrintText + call YesNoChoice + ld a, [wCurrentMenuItem] + and a + jr nz, .asm_f1cbf + xor a + ld [hMoney], a + ld [hMoney + 1], a + ld a, $50 + ld [hMoney + 2], a + call HasEnoughMoney + jr nc, .asm_f1c89 + ld hl, Museum1FText_f1d0c + call PrintText + jp .asm_f1cbf + +.asm_f1c89 + ld hl, Museum1FText_f1d07 + call PrintText + SetEvent EVENT_BOUGHT_MUSEUM_TICKET + xor a + ld [wPriceTemp], a + ld [wPriceTemp + 1], a + ld a, $50 + ld [wPriceTemp + 2], a + ld hl, wPriceTemp + 2 + ld de, wPlayerMoney + 2 + ld c, 3 + predef SubBCDPredef + ld a, $13 + ld [wTextBoxID], a + call DisplayTextBoxID + ld a, SFX_PURCHASE + call PlaySoundWaitForCurrent + call WaitForSoundToFinish + jr .asm_f1cd7 + +.asm_f1cbf + ld hl, Museum1FText_f1cfd + call PrintText + ld a, $1 + ld [wSimulatedJoypadStatesIndex], a + ld a, D_DOWN + ld [wSimulatedJoypadStatesEnd], a + call StartSimulatingJoypadStates + call UpdateSprites + jr .asm_f1cfc + +.asm_f1cd7 + ld a, $1 + ld [W_MUSEUM1FCURSCRIPT], a + jr .asm_f1cfc + +.asm_f1cde + ld hl, Museum1FText_f1d11 + call PrintText + call YesNoChoice + ld a, [wCurrentMenuItem] + cp 0 + jr nz, .asm_f1cf6 + ld hl, Museum1FText_f1d16 + call PrintText + jr .asm_f1cfc + +.asm_f1cf6 + ld hl, Museum1FText_f1d1b + call PrintText +.asm_f1cfc + ret + +Museum1FText_f1cfd: + TX_FAR _Museum1FText_5c21a + db "@" + +Museum1FText_f1d02: + TX_FAR _Museum1FText_5c21f + db "@" + +Museum1FText_f1d07: + TX_FAR _Museum1FText_5c224 + db "@" + +Museum1FText_f1d0c: + TX_FAR _Museum1FText_5c229 + db "@" + +Museum1FText_f1d11: + TX_FAR _Museum1FText_5c22e + db "@" + +Museum1FText_f1d16: + TX_FAR _Museum1FText_5c233 + db "@" + +Museum1FText_f1d1b: + TX_FAR _Museum1FText_5c238 + db "@" + +Museum1FText_f1d20: + TX_FAR _Museum1FText_5c23d + db "@" + +Museum1FText_f1d25: + TX_FAR _Museum1FText_5c242 + db "@" + +Func_f1d2a: + ld hl, Museum1FText_f1d31 + call PrintText + ret + +Museum1FText_f1d31: + TX_FAR _Museum1FText_5c251 + db "@" + +Func_f1d36: + CheckEvent EVENT_GOT_OLD_AMBER + jr nz, .asm_f1d64 + ld hl, Museum1FText_f1d6b + call PrintText + lb bc, OLD_AMBER, 1 + call GiveItem + jr nc, .asm_f1d5f + SetEvent EVENT_GOT_OLD_AMBER + ld a, HS_OLD_AMBER + ld [wMissableObjectIndex], a + predef HideObject + ld hl, Museum1FText_f1d70 + jr .asm_f1d67 + +.asm_f1d5f + ld hl, Museum1FText_f1d7b + jr .asm_f1d67 + +.asm_f1d64 + ld hl, Museum1FText_f1d76 +.asm_f1d67 + call PrintText + ret + +Museum1FText_f1d6b: + TX_FAR _Museum1FText_5c28e + db "@" + +Museum1FText_f1d70: + TX_FAR _ReceivedOldAmberText + TX_SFX_ITEM + db "@" + +Museum1FText_f1d76: + TX_FAR _Museum1FText_5c299 + db "@" + +Museum1FText_f1d7b: + TX_FAR _Museum1FText_5c29e + db "@" + +Func_f1d80: + ld hl, Museum1FText_f1d87 + call PrintText + ret + +Museum1FText_f1d87: + TX_FAR _Museum1FText_5c2ad + db "@" + +Func_f1d8c: + ld hl, Museum1FText_f1d93 + call PrintText + ret + +Museum1FText_f1d93: + TX_FAR _Museum1FText_5c2bc + db "@" diff --git a/scripts/museum2f.asm b/scripts/museum2f.asm index 0f8a63ec..56d113ae 100755 --- a/scripts/museum2f.asm +++ b/scripts/museum2f.asm @@ -1,5 +1,6 @@ Museum2FScript: ; 5c317 (17:4317) - jp EnableAutoTextBoxDrawing + call EnableAutoTextBoxDrawing + ret Museum2FTextPointers: ; 5c31a (17:431a) dw Museum2FText1 @@ -27,9 +28,40 @@ Museum2FText4: ; 5c337 (17:4337) db "@" Museum2FText5: ; 5c33c (17:433c) + TX_ASM + ld a, [wd472] + bit 7, a + jr nz, .asm_5c1f6 + ld hl, Museum2FText_5c20e + call PrintText + jr .asm_5c20b + +.asm_5c1f6 + ld a, [wPikachuHappiness] + cp 101 + jr c, .asm_5c205 + ld hl, Museum2FText_5c218 + call PrintText + jr .asm_5c20b + +.asm_5c205 + ld hl, Museum2FText_5c213 + call PrintText +.asm_5c20b + jp TextScriptEnd + +Museum2FText_5c20e: TX_FAR _Museum2FText5 db "@" +Museum2FText_5c213: + TX_FAR _Museum2FPikachuText1 + db "@" + +Museum2FText_5c218: + TX_FAR _Museum2FPikachuText2 + db "@" + Museum2FText6: ; 5c341 (17:4341) TX_FAR _Museum2FText6 db "@" diff --git a/scripts/oakslab.asm b/scripts/oakslab.asm index aff39cbc..43464d77 100755 --- a/scripts/oakslab.asm +++ b/scripts/oakslab.asm @@ -7,7 +7,8 @@ OaksLabScript: ; 1cb0e (7:4b0e) ld [wDoNotWaitForButtonPressAfterDisplayingText], a ld hl, OaksLabScriptPointers ld a, [W_OAKSLABCURSCRIPT] - jp CallFunctionInTable + call JumpTable + ret OaksLabScriptPointers: ; 1cb28 (7:4b28) dw OaksLabScript0 @@ -29,6 +30,10 @@ OaksLabScriptPointers: ; 1cb28 (7:4b28) dw OaksLabScript16 dw OaksLabScript17 dw OaksLabScript18 + dw OaksLabScript19 + dw OaksLabScript20 + dw OaksLabScript21 + dw OaksLabScript22 OaksLabScript0: ; 1cb4e (7:4b4e) CheckEvent EVENT_OAK_APPEARED_IN_PALLET @@ -47,7 +52,7 @@ OaksLabScript0: ; 1cb4e (7:4b4e) ret OaksLabScript1: ; 1cb6e (7:4b6e) - ld a, $8 + ld a, $6 ld [H_SPRITEINDEX], a ld de, OakEntryMovement call MoveSprite @@ -90,7 +95,7 @@ OaksLabScript3: ; 1cba2 (7:4ba2) xor a ld [hSpriteFacingDirection], a call SetSpriteFacingDirectionAndDelay - ld a, $5 + ld a, $3 ld [H_SPRITEINDEX], a xor a ld [hSpriteFacingDirection], a @@ -104,7 +109,7 @@ PlayerEntryMovementRLE: ; 1cbcf (7:4bcf) db D_UP,$8 db $ff -OaksLabScript4: ; 1cbd2 (7:4bd2) +OaksLabScript4: ; 1cbd2 (7:445f) ld a, [wSimulatedJoypadStatesIndex] and a ret nz @@ -115,7 +120,6 @@ OaksLabScript4: ; 1cbd2 (7:4bd2) ld a, SPRITE_FACING_UP ld [hSpriteFacingDirection], a call SetSpriteFacingDirectionAndDelay - call UpdateSprites ld hl, wFlags_D733 res 1, [hl] call PlayDefaultMusic @@ -125,24 +129,29 @@ OaksLabScript4: ; 1cbd2 (7:4bd2) ret OaksLabScript5: ; 1cbfd (7:4bfd) + ld hl, wd74b + set 1, [hl] ld a, $fc ld [wJoyIgnore], a - ld a, $11 + ld a, $d ld [hSpriteIndexOrTextID], a call DisplayTextID call Delay3 - ld a, $12 + ld a, $e ld [hSpriteIndexOrTextID], a call DisplayTextID call Delay3 - ld a, $13 + ld a, $2 + ld [wSpriteStateData1 + 1 * $10 + 1], a + ld a, SPRITE_FACING_UP + ld [wSpriteStateData1 + 1 * $10 + 9], a + ld a, $f ld [hSpriteIndexOrTextID], a call DisplayTextID call Delay3 - ld a, $14 + ld a, $10 ld [hSpriteIndexOrTextID], a call DisplayTextID - SetEvent EVENT_OAK_ASKED_TO_CHOOSE_MON xor a ld [wJoyIgnore], a @@ -154,7 +163,7 @@ OaksLabScript6: ; 1cc36 (7:4c36) ld a, [wYCoord] cp $6 ret nz - ld a, $5 + ld a, $3 ld [H_SPRITEINDEX], a xor a ; SPRITE_FACING_DOWN ld [hSpriteFacingDirection], a @@ -165,7 +174,7 @@ OaksLabScript6: ; 1cc36 (7:4c36) ld [hSpriteFacingDirection], a call SetSpriteFacingDirectionAndDelay call UpdateSprites - ld a, $c + ld a, $a ld [hSpriteIndexOrTextID], a call DisplayTextID ld a, $1 @@ -191,176 +200,130 @@ OaksLabScript7: ; 1cc72 (7:4c72) ret OaksLabScript8: ; 1cc80 (7:4c80) - ld a, [W_PLAYERSTARTER] - cp STARTER1 - jr z, .Charmander - cp STARTER2 - jr z, .Squirtle - jr .Bulbasaur -.Charmander - ld de, .MiddleBallMovement1 - ld a, [wYCoord] - cp $4 ; is the player standing below the table? - jr z, .asm_1ccf3 - ld de, .MiddleBallMovement2 - jr .asm_1ccf3 - -.MiddleBallMovement1 - db NPC_MOVEMENT_DOWN - db NPC_MOVEMENT_DOWN - db NPC_MOVEMENT_RIGHT - db NPC_MOVEMENT_RIGHT - db NPC_MOVEMENT_RIGHT - db NPC_MOVEMENT_UP - db $FF - -.MiddleBallMovement2 - db NPC_MOVEMENT_DOWN - db NPC_MOVEMENT_RIGHT - db NPC_MOVEMENT_RIGHT - db NPC_MOVEMENT_RIGHT - db $FF - -.Squirtle - ld de, .RightBallMovement1 - ld a, [wYCoord] - cp $4 ; is the player standing below the table? - jr z, .asm_1ccf3 - ld de, .RightBallMovement2 - jr .asm_1ccf3 - -.RightBallMovement1 - db NPC_MOVEMENT_DOWN - db NPC_MOVEMENT_DOWN - db NPC_MOVEMENT_RIGHT - db NPC_MOVEMENT_RIGHT - db NPC_MOVEMENT_RIGHT - db NPC_MOVEMENT_RIGHT - db NPC_MOVEMENT_UP - db $FF - -.RightBallMovement2 - db NPC_MOVEMENT_DOWN - db NPC_MOVEMENT_RIGHT - db NPC_MOVEMENT_RIGHT - db NPC_MOVEMENT_RIGHT - db NPC_MOVEMENT_RIGHT - db $FF - -.Bulbasaur - ld de, .LeftBallMovement1 - ld a, [wXCoord] - cp $9 ; is the player standing to the right of the table? - jr nz, .asm_1ccf3 - push hl ld a, $1 - ld [H_SPRITEINDEX], a - ld a, $4 - ld [H_SPRITEDATAOFFSET], a - call GetPointerWithinSpriteStateData1 - push hl - ld [hl], $4c - inc hl - inc hl - ld [hl], $0 - pop hl - inc h - ld [hl], $8 - inc hl - ld [hl], $9 - ld de, .LeftBallMovement2 ; the rival is not currently onscreen, so account for that - pop hl - jr .asm_1ccf3 - -.LeftBallMovement1 - db NPC_MOVEMENT_DOWN - db NPC_MOVEMENT_RIGHT ; not yet terminated! -.LeftBallMovement2 - db NPC_MOVEMENT_RIGHT - db $FF - -.asm_1ccf3 - ld a, $1 - ld [H_SPRITEINDEX], a + ld [hSpriteIndexOrTextID], a + ld de, .SonyPushesPlayerAwayFromEeveeBall call MoveSprite - ld a, $9 ld [W_OAKSLABCURSCRIPT], a ret +.SonyPushesPlayerAwayFromEeveeBall + db $00 + db $07 + db $07 + db $07 + db $FF + OaksLabScript9: ; 1cd00 (7:4d00) ld a, [wd730] bit 0, a - ret nz - ld a, $fc - ld [wJoyIgnore], a + jr nz, .asm_1c564 + ld a, HS_STARTER_BALL_1 + ld [wMissableObjectIndex], a + predef HideObject ld a, $1 ld [H_SPRITEINDEX], a ld a, SPRITE_FACING_UP ld [hSpriteFacingDirection], a call SetSpriteFacingDirectionAndDelay - ld a, $d - ld [hSpriteIndexOrTextID], a - call DisplayTextID - ld a, [wRivalStarterBallSpriteIndex] - cp $2 - jr nz, .asm_1cd28 - ld a, HS_STARTER_BALL_1 - jr .asm_1cd32 -.asm_1cd28 - cp $3 - jr nz, .asm_1cd30 - ld a, HS_STARTER_BALL_2 - jr .asm_1cd32 -.asm_1cd30 - ld a, HS_STARTER_BALL_3 -.asm_1cd32 - ld [wMissableObjectIndex], a - predef HideObject - call Delay3 - ld a, [wRivalStarterTemp] + ld a, 1 ld [W_RIVALSTARTER], a - ld [wcf91], a + ld a, EEVEE ld [wd11e], a call GetMonName + ld a, $FF ^ (A_BUTTON | B_BUTTON) + ld [wJoyIgnore], a + ld a, $11 + ld [hSpriteIndexOrTextID], a + call DisplayTextID + + ld a, $a + ld [W_OAKSLABCURSCRIPT], a + ret + +.asm_1c564 + ld a, [wYCoord] + cp $4 + ret nz + ld a, [wNPCNumScriptedSteps] + cp 1 + ret nz + ld a, PLAYER_DIR_LEFT + ld [wPlayerMovingDirection], a + ld a, $2 + ld [wSimulatedJoypadStatesIndex], a + ld a, D_RIGHT + ld [wSimulatedJoypadStatesEnd], a + ld [wSimulatedJoypadStatesEnd + 1], a + call StartSimulatingJoypadStates + ret + +OaksLabScript10: ; 1cd6d (7:4d6d) + ld a, [wYCoord] + cp $4 + jr z, .asm_1c599 ld a, $1 - ld [H_SPRITEINDEX], a - ld a, SPRITE_FACING_UP - ld [hSpriteFacingDirection], a - call SetSpriteFacingDirectionAndDelay - ld a, $e + ld [wSimulatedJoypadStatesIndex], a + ld a, D_LEFT + ld [wSimulatedJoypadStatesEnd], a + jr .asm_1c5a6 + +.asm_1c599 + ld hl, wSimulatedJoypadStatesEnd + ld de, OaksLabRLE_PlayerWalksToOak + call DecodeRLEList + dec a + ld [wSimulatedJoypadStatesIndex], a +.asm_1c5a6 + call StartSimulatingJoypadStates + ld a, $b + ld [W_OAKSLABCURSCRIPT], a + ret + +OaksLabRLE_PlayerWalksToOak: + db D_UP, 2 + db D_LEFT, 3 + db D_DOWN, 1 + db D_LEFT, 1 + db $FF + +OaksLabScript11: + ld a, [wSimulatedJoypadStatesIndex] + and a + ret nz + ld a, $12 ld [hSpriteIndexOrTextID], a call DisplayTextID - SetEvent EVENT_GOT_STARTER xor a ld [wJoyIgnore], a - ld a, $a + ld a, $c ld [W_OAKSLABCURSCRIPT], a ret -OaksLabScript10: ; 1cd6d (7:4d6d) +OaksLabScript12: ld a, [wYCoord] cp $6 ret nz + ld a, PLAYER_DIR_UP + ld [wPlayerMovingDirection], a ld a, $1 - ld [H_SPRITEINDEX], a - xor a ; SPRITE_FACING_DOWN + ld [hSpriteIndexOrTextID], a + xor a ld [hSpriteFacingDirection], a call SetSpriteFacingDirectionAndDelay - ld a, PLAYER_DIR_UP - ld [wPlayerMovingDirection], a ld c, BANK(Music_MeetRival) ld a, MUSIC_MEET_RIVAL call PlayMusic - ld a, $f + ld a, $b ld [hSpriteIndexOrTextID], a call DisplayTextID ld a, $1 ld [hNPCPlayerRelativePosPerspective], a ld a, $1 swap a - ld [hNPCSpriteOffset], a + ld [hNPCPlayerYDistance], a predef CalcPositionOfPlayerRelativeToNPC ld a, [hNPCPlayerYDistance] dec a @@ -368,40 +331,25 @@ OaksLabScript10: ; 1cd6d (7:4d6d) predef FindPathToPlayer ld de, wNPCMovementDirections2 ld a, $1 - ld [H_SPRITEINDEX], a + ld [hSpriteIndexOrTextID], a call MoveSprite - - ld a, $b + ld a, $d ld [W_OAKSLABCURSCRIPT], a ret -OaksLabScript11: ; 1cdb9 (7:4db9) +OaksLabScript13: ld a, [wd730] bit 0, a ret nz - - ; define which team rival uses, and fight it + ld a, $1 + ld [wSpriteIndex], a + call GetSpritePosition1 ld a, OPP_SONY1 ld [wCurOpponent], a - ld a, [W_RIVALSTARTER] - cp STARTER2 - jr nz, .NotSquirtle ld a, $1 - jr .done -.NotSquirtle - cp STARTER3 - jr nz, .Charmander - ld a, $2 - jr .done -.Charmander - ld a, $3 -.done ld [wTrainerNo], a - ld a, $1 - ld [wSpriteIndex], a - call GetSpritePosition1 - ld hl, OaksLabText_1d3be - ld de, OaksLabText_1d3c3 + ld hl, OaksLabRivalDefeatedText + ld de, OaksLabRivalBeatYouText call SaveEndBattleTextPointers ld hl, wd72d set 6, [hl] @@ -410,12 +358,28 @@ OaksLabScript11: ; 1cdb9 (7:4db9) ld [wJoyIgnore], a ld a, PLAYER_DIR_UP ld [wPlayerMovingDirection], a - ld a, $c + ld a, $e ld [W_OAKSLABCURSCRIPT], a ret -OaksLabScript12: ; 1ce03 (7:4e03) - ld a, $f0 +OaksLabScript14: + ld a, $ff + ld [wJoyIgnore], a + + ; If you beat your rival here, his Eevee will evolve into + ; Jolteon if you beat him on Route 22, or Flareon if you + ; skip or lose that battle. + ; Otherwise, it will evolve into Vaporeon. + ld a, [wBattleResult] + and a + ld b, $3 + jr nz, .asm_1c660 + ld b, $2 +.asm_1c660 + ld a, b + ld [W_RIVALSTARTER], a + + ld a, $ff ^ (A_BUTTON | B_BUTTON) ld [wJoyIgnore], a ld a, PLAYER_DIR_UP ld [wPlayerMovingDirection], a @@ -423,101 +387,124 @@ OaksLabScript12: ; 1ce03 (7:4e03) ld a, $1 ld [wSpriteIndex], a call SetSpritePosition1 - ld a, $1 - ld [H_SPRITEINDEX], a - xor a ; SPRITE_FACING_DOWN - ld [hSpriteFacingDirection], a - call SetSpriteFacingDirectionAndDelay + ld a, $2 + ld [wSpriteStateData1 + 1 * $10 + 1], a + xor a + ld [wSpriteStateData1 + 1 * $10 + 9], a predef HealParty - SetEvent EVENT_BATTLED_RIVAL_IN_OAKS_LAB - - ld a, $d + ld hl, wd74b + set 3, [hl] + ld a, $f ld [W_OAKSLABCURSCRIPT], a ret -OaksLabScript13: ; 1ce32 (7:4e32) +OaksLabScript15: ld c, 20 call DelayFrames - ld a, $10 + ld a, $c ld [hSpriteIndexOrTextID], a call DisplayTextID callba Music_RivalAlternateStart ld a, $1 - ld [H_SPRITEINDEX], a - ld de, .RivalExitMovement + ld [hSpriteIndexOrTextID], a + ld de, .OaksLabMovement_RivalWalksOut1 call MoveSprite ld a, [wXCoord] cp $4 - ; move left or right depending on where the player is standing - jr nz, .moveLeft + jr nz, .asm_1c6bb ld a, NPC_MOVEMENT_RIGHT - jr .next -.moveLeft + jr .asm_1c6bd + +.asm_1c6bb ld a, NPC_MOVEMENT_LEFT -.next +.asm_1c6bd ld [wNPCMovementDirections], a - - ld a, $e + ld a, $10 ld [W_OAKSLABCURSCRIPT], a ret -.RivalExitMovement - db $E0 ; change sprite facing direction - db NPC_MOVEMENT_DOWN - db NPC_MOVEMENT_DOWN - db NPC_MOVEMENT_DOWN - db NPC_MOVEMENT_DOWN - db NPC_MOVEMENT_DOWN - db $FF +.OaksLabMovement_RivalWalksOut1 + db $e0 + db $00 + db $04 + db $04 + db $04 + db $04 + db $04 + db $ff -OaksLabScript14: ; 1ce6d (7:4e6d) +OaksLabScript16: ld a, [wd730] bit 0, a - jr nz, .asm_1ce8c + jr nz, .asm_1c6ed + ld a, $ff ^ (A_BUTTON | B_BUTTON) + ld [wJoyIgnore], a ld a, HS_OAKS_LAB_RIVAL ld [wMissableObjectIndex], a predef HideObject - xor a - ld [wJoyIgnore], a - call PlayDefaultMusic ; reset to map music - ld a, $12 + call PlayDefaultMusic + ld a, $11 ld [W_OAKSLABCURSCRIPT], a - jr .done -; make the player keep facing the rival as he walks away -.asm_1ce8c + ret + +.asm_1c6ed ld a, [wNPCNumScriptedSteps] - cp $5 - jr nz, .asm_1cea8 + cp 5 + jr nz, .asm_1c703 ld a, [wXCoord] - cp $4 - jr nz, .asm_1cea1 + cp 4 + jr nz, .asm_1c6ff ld a, SPRITE_FACING_RIGHT - ld [wSpriteStateData1 + 9], a - jr .done -.asm_1cea1 + jr .asm_1c707 + +.asm_1c6ff ld a, SPRITE_FACING_LEFT - ld [wSpriteStateData1 + 9], a - jr .done -.asm_1cea8 - cp $4 + jr .asm_1c707 + +.asm_1c703 + cp 4 ret nz - xor a ; ld a, SPRITE_FACING_DOWN + xor a +.asm_1c707 + ld [wSpriteStateData1 + 9], a + ret + +OaksLabScript17: +; Pikachu comes out + ld a, SPRITE_FACING_UP ld [wSpriteStateData1 + 9], a -.done + ld a, $2 + ld [wd431], a + callba Func_fc4fa + call Func_1525 + ld a, $1a + ld [hSpriteIndexOrTextID], a + call DisplayTextID + ld a, $12 + ld [W_OAKSLABCURSCRIPT], a + ret + +OaksLabScript18: + ld a, $1b + ld [hSpriteIndexOrTextID], a + call DisplayTextID + xor a + ld [wJoyIgnore], a + ld a, $16 + ld [W_OAKSLABCURSCRIPT], a ret -OaksLabScript15: ; 1ceb0 (7:4eb0) +OaksLabScript19: xor a ld [hJoyHeld], a call EnableAutoTextBoxDrawing - ld a, $ff - ld [wNewSoundID], a - call PlaySound + call StopAllMusic callba Music_RivalAlternateStart - ld a, $15 + ld a, $13 ld [hSpriteIndexOrTextID], a call DisplayTextID - call OaksLabScript_1d02b + callab Func_f1be0 + call OaksLabScript_1c8b9 ld a, HS_OAKS_LAB_RIVAL ld [wMissableObjectIndex], a predef ShowObject @@ -530,50 +517,50 @@ OaksLabScript15: ; 1ceb0 (7:4eb0) call FillMemory ld [hl], $ff ld a, $1 - ld [H_SPRITEINDEX], a + ld [hSpriteIndexOrTextID], a ld de, wNPCMovementDirections2 call MoveSprite - - ld a, $10 + ld a, $14 ld [W_OAKSLABCURSCRIPT], a ret -OaksLabScript_1cefd: ; 1cefd (7:4efd) +OaksLabScript_1c78e: ld a, $1 - ld [H_SPRITEINDEX], a + ld [hSpriteIndexOrTextID], a ld a, SPRITE_FACING_UP ld [hSpriteFacingDirection], a call SetSpriteFacingDirectionAndDelay - ld a, $8 - ld [H_SPRITEINDEX], a - xor a ; SPRITE_FACING_DOWN + ld a, $6 + ld [hSpriteIndexOrTextID], a + xor a ld [hSpriteFacingDirection], a - jp SetSpriteFacingDirectionAndDelay + call SetSpriteFacingDirectionAndDelay + ret -OaksLabScript16: ; 1cf12 (7:4f12) +OaksLabScript20: ld a, [wd730] bit 0, a ret nz call EnableAutoTextBoxDrawing call PlayDefaultMusic - ld a, $fc + ld a, $ff ^ (A_BUTTON | B_BUTTON) ld [wJoyIgnore], a - call OaksLabScript_1cefd - ld a, $16 + call OaksLabScript_1c78e + ld a, $14 ld [hSpriteIndexOrTextID], a call DisplayTextID call DelayFrame - call OaksLabScript_1cefd - ld a, $17 + call OaksLabScript_1c78e + ld a, $15 ld [hSpriteIndexOrTextID], a call DisplayTextID call DelayFrame - call OaksLabScript_1cefd - ld a, $18 + call OaksLabScript_1c78e + ld a, $16 ld [hSpriteIndexOrTextID], a call DisplayTextID call DelayFrame - ld a, $19 + ld a, $17 ld [hSpriteIndexOrTextID], a call DisplayTextID call Delay3 @@ -583,20 +570,22 @@ OaksLabScript16: ; 1cf12 (7:4f12) ld a, HS_POKEDEX_2 ld [wMissableObjectIndex], a predef HideObject - call OaksLabScript_1cefd - ld a, $1a + call OaksLabScript_1c78e + ld a, $18 ld [hSpriteIndexOrTextID], a call DisplayTextID ld a, $1 - ld [H_SPRITEINDEX], a + ld [hSpriteIndexOrTextID], a ld a, SPRITE_FACING_RIGHT ld [hSpriteFacingDirection], a call SetSpriteFacingDirectionAndDelay call Delay3 - ld a, $1b + ld a, $19 ld [hSpriteIndexOrTextID], a call DisplayTextID SetEvent EVENT_GOT_POKEDEX + ld a, $1 + ld [W_VIRIDIANCITYCURSCRIPT], a SetEvent EVENT_OAK_GOT_PARCEL ld a, HS_LYING_OLD_MAN ld [wMissableObjectIndex], a @@ -608,23 +597,20 @@ OaksLabScript16: ; 1cf12 (7:4f12) ld b, 0 ld c, a ld hl, wNPCMovementDirections2 - xor a ; NPC_MOVEMENT_DOWN + xor a call FillMemory ld [hl], $ff - ld a, $ff - ld [wNewSoundID], a - call PlaySound + call StopAllMusic callba Music_RivalAlternateStart ld a, $1 - ld [H_SPRITEINDEX], a - ld de, wNPCMovementDirections2 + ld [hSpriteIndexOrTextID], a + ld de, wNPCMovementDirections2 call MoveSprite - - ld a, $11 + ld a, $15 ld [W_OAKSLABCURSCRIPT], a ret -OaksLabScript17: ; 1cfd4 (7:4fd4) +OaksLabScript21: ld a, [wd730] bit 0, a ret nz @@ -638,71 +624,73 @@ OaksLabScript17: ; 1cfd4 (7:4fd4) ld a, HS_ROUTE_22_RIVAL_1 ld [wMissableObjectIndex], a predef ShowObject - ld a, $5 - ld [W_PALLETTOWNCURSCRIPT], a xor a ld [wJoyIgnore], a - - ld a, $12 + ld a, $16 ld [W_OAKSLABCURSCRIPT], a ret -OaksLabScript18: ; 1d009 (7:5009) +OaksLabScript22: ret -OaksLabScript_RemoveParcel: ; 1d00a (7:500a) +OaksLabScript_1c897: ld hl, wBagItems - ld bc, $0000 -.loop + ld bc, 0 +.asm_1c89d ld a, [hli] cp $ff ret z cp OAKS_PARCEL - jr z, .foundParcel + jr z, .asm_1c8a9 inc hl inc c - jr .loop -.foundParcel + jr .asm_1c89d + +.asm_1c8a9 ld hl, wNumBagItems ld a, c ld [wWhichPokemon], a - ld a, $1 + ld a, 1 ld [wItemQuantity], a - jp RemoveItemFromInventory + call RemoveItemFromInventory + ret -OaksLabScript_1d02b: ; 1d02b (7:502b) +OaksLabScript_1c8b9: ld a, $7c ld [$ffeb], a ld a, $8 ld [$ffee], a ld a, [wYCoord] - cp $3 - jr nz, .asm_1d045 + cp 3 + jr nz, .asm_1c8d3 ld a, $4 ld [wNPCMovementDirections2Index], a ld a, $30 ld b, $b - jr .asm_1d068 -.asm_1d045 + jr .asm_1c8f6 + +.asm_1c8d3 cp $1 - jr nz, .asm_1d054 + jr nz, .asm_1c8e2 ld a, $2 ld [wNPCMovementDirections2Index], a ld a, $30 ld b, $9 - jr .asm_1d068 -.asm_1d054 + jr .asm_1c8f6 + +.asm_1c8e2 ld a, $3 ld [wNPCMovementDirections2Index], a ld b, $a ld a, [wXCoord] cp $4 - jr nz, .asm_1d066 + jr nz, .asm_1c8f4 ld a, $40 - jr .asm_1d068 -.asm_1d066 + jr .asm_1c8f6 + +.asm_1c8f4 ld a, $20 -.asm_1d068 +.asm_1c8f6 ld [$ffec], a ld a, b ld [$ffed], a @@ -711,12 +699,12 @@ OaksLabScript_1d02b: ; 1d02b (7:502b) call SetSpritePosition1 ret -OaksLabScript_1d076: ; 1d076 (7:5076) - ld hl, OaksLabTextPointers + $36 ; starts at OaksLabText28 +OaksLabScript_1d076: + ld hl, OaksLabTextPointers2 ld a, l ld [wMapTextPtr], a ld a, h - ld [wMapTextPtr+1], a + ld [wMapTextPtr + 1], a ret OaksLabTextPointers: ; 1d082 (7:5082) @@ -747,492 +735,428 @@ OaksLabTextPointers: ; 1d082 (7:5082) dw OaksLabText25 dw OaksLabText26 dw OaksLabText27 - dw OaksLabText28 - dw OaksLabText29 - dw OaksLabText30 - dw OaksLabText31 - dw OaksLabText32 - dw OaksLabText33 - dw OaksLabText34 - dw OaksLabText35 - dw OaksLabText36 - dw OaksLabText37 - dw OaksLabText38 - -OaksLabText28: ; 1d0ce (7:50ce) -OaksLabText1: ; 1d0ce (7:50ce) + +OaksLabTextPointers2: + dw OaksLabText1 + dw OaksLabText2 + dw OaksLabText3 + dw OaksLabText4 + dw OaksLabText5 + dw OaksLabText6 + dw OaksLabText7 + dw OaksLabText8 + dw OaksLabText9 + +OaksLabText1: TX_ASM CheckEvent EVENT_FOLLOWED_OAK_INTO_LAB_2 - jr nz, .asm_1d0de - ld hl, OaksLabGaryText1 + jr nz, .asm_1c968 + ld hl, OaksLabText_1c97d call PrintText - jr .asm_1d0f0 -.asm_1d0de - bit 2, a - jr nz, .asm_1d0ea - ld hl, OaksLabText40 + jr .asm_1c97a + +.asm_1c968 + CheckEventReuseA EVENT_GOT_STARTER + jr nz, .asm_1c974 + ld hl, OaksLabText_1c982 call PrintText - jr .asm_1d0f0 -.asm_1d0ea - ld hl, OaksLabText41 + jr .asm_1c97a + +.asm_1c974 + ld hl, OaksLabText_1c987 call PrintText -.asm_1d0f0 +.asm_1c97a jp TextScriptEnd -OaksLabGaryText1: ; 1d0f3 (7:50f3) +OaksLabText_1c97d: TX_FAR _OaksLabGaryText1 db "@" -OaksLabText40: ; 1d0f8 (7:50f8) +OaksLabText_1c982: TX_FAR _OaksLabText40 db "@" -OaksLabText41: ; 1d0fd (7:50fd) +OaksLabText_1c987: TX_FAR _OaksLabText41 db "@" -OaksLabText29: ; 1d102 (7:5102) -OaksLabText2: ; 1d102 (7:5102) - TX_ASM - ld a, STARTER2 - ld [wRivalStarterTemp], a - ld a, $3 - ld [wRivalStarterBallSpriteIndex], a - ld a, STARTER1 - ld b, $2 - jr OaksLabScript_1d133 - -OaksLabText30: ; 1d113 (7:5113) -OaksLabText3: ; 1d113 (7:5113) +OaksLabText2: TX_ASM - ld a, STARTER3 - ld [wRivalStarterTemp], a - ld a, $4 - ld [wRivalStarterBallSpriteIndex], a - ld a, STARTER2 - ld b, $3 - jr OaksLabScript_1d133 - -OaksLabText31: ; 1d124 (7:5124) -OaksLabText4: ; 1d124 (7:5124) - TX_ASM - ld a, STARTER1 - ld [wRivalStarterTemp], a - ld a, $2 - ld [wRivalStarterBallSpriteIndex], a - ld a, STARTER3 - ld b, $4 - -OaksLabScript_1d133: ; 1d133 (7:5133) - ld [wcf91], a - ld [wd11e], a - ld a, b - ld [wSpriteIndex], a - CheckEvent EVENT_GOT_STARTER - jp nz, OaksLabScript_1d22d - CheckEventReuseA EVENT_OAK_ASKED_TO_CHOOSE_MON - jr nz, OaksLabScript_1d157 - ld hl, OaksLabText39 + ld a, $1 + ld [wDoNotWaitForButtonPressAfterDisplayingText], a + CheckEvent EVENT_OAK_ASKED_TO_CHOOSE_MON + jr nz, OaksLabScript_1c9ac + ld a, $0 + ld [wDoNotWaitForButtonPressAfterDisplayingText], a + ld hl, OaksLabText_1c9a7 call PrintText jp TextScriptEnd -OaksLabText39: ; 1d152 (7:5152) +OaksLabText_1c9a7: TX_FAR _OaksLabText39 db "@" -OaksLabScript_1d157: ; 1d157 (7:5157) - ld a, $5 - ld [H_SPRITEINDEX], a - ld a, $9 - ld [H_SPRITEDATAOFFSET], a - call GetPointerWithinSpriteStateData1 - ld [hl], SPRITE_FACING_DOWN +OaksLabScript_1c9ac: ld a, $1 - ld [H_SPRITEINDEX], a - ld a, $9 - ld [H_SPRITEDATAOFFSET], a - call GetPointerWithinSpriteStateData1 - ld [hl], SPRITE_FACING_RIGHT - ld hl, wd730 - set 6, [hl] - predef StarterDex - ld hl, wd730 - res 6, [hl] - call ReloadMapData - ld c, 10 - call DelayFrames - ld a, [wSpriteIndex] - cp $2 - jr z, OaksLabLookAtCharmander - cp $3 - jr z, OaksLabLookAtSquirtle - jr OaksLabLookAtBulbasaur - -OaksLabLookAtCharmander: ; 1d195 (7:5195) - ld hl, OaksLabCharmanderText - jr OaksLabMonChoiceMenu -OaksLabCharmanderText: ; 1d19a (7:519a) - TX_FAR _OaksLabCharmanderText - db "@" - -OaksLabLookAtSquirtle: ; 1d19f (7:519f) - ld hl, OaksLabSquirtleText - jr OaksLabMonChoiceMenu -OaksLabSquirtleText: ; 1d1a4 (7:51a4) - TX_FAR _OaksLabSquirtleText - db "@" - -OaksLabLookAtBulbasaur: ; 1d1a9 (7:51a9) - ld hl, OaksLabBulbasaurText - jr OaksLabMonChoiceMenu -OaksLabBulbasaurText: ; 1d1ae (7:51ae) - TX_FAR _OaksLabBulbasaurText - db "@" - -OaksLabMonChoiceMenu: ; 1d1b3 (7:51b3) - call PrintText - ld a, $1 - ld [wDoNotWaitForButtonPressAfterDisplayingText], a - call YesNoChoice ; yes/no menu - ld a, [wCurrentMenuItem] - and a - jr nz, OaksLabMonChoiceEnd - ld a, [wcf91] - ld [W_PLAYERSTARTER], a - ld [wd11e], a - call GetMonName - ld a, [wSpriteIndex] - cp $2 - jr nz, .asm_1d1db - ld a, HS_STARTER_BALL_1 - jr .asm_1d1e5 -.asm_1d1db - cp $3 - jr nz, .asm_1d1e3 - ld a, HS_STARTER_BALL_2 - jr .asm_1d1e5 -.asm_1d1e3 - ld a, HS_STARTER_BALL_3 -.asm_1d1e5 - ld [wMissableObjectIndex], a - predef HideObject - ld a, $1 - ld [wDoNotWaitForButtonPressAfterDisplayingText], a - ld hl, OaksLabMonEnergeticText - call PrintText - ld hl, OaksLabReceivedMonText - call PrintText - xor a ; PLAYER_PARTY_DATA - ld [wMonDataLocation], a - ld a, 5 - ld [wCurEnemyLVL], a - ld a, [wcf91] - ld [wd11e], a - call AddPartyMon - ld hl, wd72e - set 3, [hl] - ld a, $fc - ld [wJoyIgnore], a + ld [wEmotionBubbleSpriteIndex], a + xor a + ld [wWhichEmotionBubble], a + predef EmotionBubble ld a, $8 ld [W_OAKSLABCURSCRIPT], a -OaksLabMonChoiceEnd: ; 1d21f (7:521f) jp TextScriptEnd -OaksLabMonEnergeticText: ; 1d222 (7:5222) - TX_FAR _OaksLabMonEnergeticText - db "@" - -OaksLabReceivedMonText: ; 1d227 (7:5227) - TX_FAR _OaksLabReceivedMonText - db $11, "@" - -OaksLabScript_1d22d: ; 1d22d (7:522d) - ld a, $5 - ld [H_SPRITEINDEX], a - ld a, $9 - ld [H_SPRITEDATAOFFSET], a - call GetPointerWithinSpriteStateData1 - ld [hl], $0 - ld hl, OaksLabLastMonText - call PrintText - jp TextScriptEnd - -OaksLabLastMonText: ; 1d243 (7:5243) - TX_FAR _OaksLabLastMonText - db "@" - -OaksLabText32: ; 1d248 (7:5248) -OaksLabText5: ; 1d248 (7:5248) +OaksLabText3: TX_ASM CheckEvent EVENT_PALLET_AFTER_GETTING_POKEBALLS - jr nz, .asm_1d266 + jr nz, .asm_1c9d9 ld hl, wPokedexOwned ld b, wPokedexOwnedEnd - wPokedexOwned call CountSetBits ld a, [wNumSetBits] cp 2 - jr c, .asm_1d279 - CheckEvent EVENT_GOT_POKEDEX - jr z, .asm_1d279 -.asm_1d266 - ld hl, OaksLabText_1d31d + jr c, .asm_1c9ec +.asm_1c9d9 + ld hl, OaksLabText_1ca9f call PrintText ld a, $1 ld [wDoNotWaitForButtonPressAfterDisplayingText], a predef DisplayDexRating - jp .asm_1d2ed -.asm_1d279 - ld b,POKE_BALL + jp .asm_1ca6f + +.asm_1c9ec + ld b, POKE_BALL call IsItemInBag - jr nz, .asm_1d2e7 + jr nz, .asm_1ca69 + ld hl, wPokedexOwned + ld b, wPokedexOwnedEnd - wPokedexOwned + call CountSetBits + ld a, [wNumSetBits] + cp 2 + jr nc, .asm_1ca69 CheckEvent EVENT_BEAT_ROUTE22_RIVAL_1ST_BATTLE - jr nz, .asm_1d2d0 + jr nz, .asm_1ca52 CheckEvent EVENT_GOT_POKEDEX - jr nz, .asm_1d2c8 + jr nz, .asm_1ca4a CheckEventReuseA EVENT_BATTLED_RIVAL_IN_OAKS_LAB - jr nz, .asm_1d2a9 + jr nz, .asm_1ca2b ld a, [wd72e] bit 3, a - jr nz, .asm_1d2a1 - ld hl, OaksLabText_1d2f0 + jr nz, .asm_1ca23 + ld hl, OaksLabText_1ca72 call PrintText - jr .asm_1d2ed -.asm_1d2a1 - ld hl, OaksLabText_1d2f5 + jr .asm_1ca6f + +.asm_1ca23 + ld hl, OaksLabText_1ca77 call PrintText - jr .asm_1d2ed -.asm_1d2a9 + jr .asm_1ca6f + +.asm_1ca2b ld b, OAKS_PARCEL call IsItemInBag - jr nz, .asm_1d2b8 - ld hl, OaksLabText_1d2fa + jr nz, .asm_1ca3a + ld hl, OaksLabText_1ca7c call PrintText - jr .asm_1d2ed -.asm_1d2b8 - ld hl, OaksLabDeliverParcelText + jr .asm_1ca6f + +.asm_1ca3a + ld hl, OaksLabText_1ca81 call PrintText - call OaksLabScript_RemoveParcel - ld a, $f + call OaksLabScript_1c897 + ld a, $13 ld [W_OAKSLABCURSCRIPT], a - jr .asm_1d2ed -.asm_1d2c8 - ld hl, OaksLabAroundWorldText + jr .asm_1ca6f + +.asm_1ca4a + ld hl, OaksLabText_1ca8b call PrintText - jr .asm_1d2ed -.asm_1d2d0 + jr .asm_1ca6f + +.asm_1ca52 CheckAndSetEvent EVENT_GOT_POKEBALLS_FROM_OAK - jr nz, .asm_1d2e7 + jr nz, .asm_1ca69 lb bc, POKE_BALL, 5 call GiveItem - ld hl, OaksLabGivePokeballsText + ld hl, OaksLabText_1ca90 call PrintText - jr .asm_1d2ed -.asm_1d2e7 - ld hl, OaksLabPleaseVisitText + jr .asm_1ca6f + +.asm_1ca69 + ld hl, OaksLabText_1ca9a call PrintText -.asm_1d2ed +.asm_1ca6f jp TextScriptEnd - -OaksLabText_1d2f0: ; 1d2f0 (7:52f0) - TX_FAR _OaksLabText_1d2f0 + +OaksLabText_1ca72: + TX_FAR _OaksLabPikachuText db "@" -OaksLabText_1d2f5: ; 1d2f5 (7:52f5) +OaksLabText_1ca77: TX_FAR _OaksLabText_1d2f5 db "@" -OaksLabText_1d2fa: ; 1d2fa (7:52fa) +OaksLabText_1ca7c: TX_FAR _OaksLabText_1d2fa db "@" -OaksLabDeliverParcelText: ; 1d2ff (7:52ff) +OaksLabText_1ca81: TX_FAR _OaksLabDeliverParcelText1 - db $11 + TX_SFX_KEY_ITEM TX_FAR _OaksLabDeliverParcelText2 db "@" -OaksLabAroundWorldText: ; 1d309 (7:5309) +OaksLabText_1ca8b: TX_FAR _OaksLabAroundWorldText db "@" -OaksLabGivePokeballsText: ; 1d30e (7:530e) +OaksLabText_1ca90: TX_FAR _OaksLabGivePokeballsText1 - db $11 + TX_SFX_KEY_ITEM TX_FAR _OaksLabGivePokeballsText2 db "@" -OaksLabPleaseVisitText: ; 1d318 (7:5318) +OaksLabText_1ca9a: TX_FAR _OaksLabPleaseVisitText db "@" -OaksLabText_1d31d: ; 1d31d (7:531d) +OaksLabText_1ca9f: TX_FAR _OaksLabText_1d31d db "@" -OaksLabText34: ; 1d322 (7:5322) -OaksLabText33: ; 1d322 (7:5322) -OaksLabText7: ; 1d322 (7:5322) -OaksLabText6: ; 1d322 (7:5322) +OaksLabText4: +OaksLabText5: TX_ASM - ld hl, OaksLabText_1d32c + ld hl, OaksLabText_1caae call PrintText jp TextScriptEnd -OaksLabText_1d32c: ; 1d32c (7:532c) +OaksLabText_1caae: TX_FAR _OaksLabText_1d32c db "@" -OaksLabText35: ; 1d331 (7:5331) -OaksLabText8: ; 1d331 (7:5331) +OaksLabText6: TX_FAR _OaksLabText8 db "@" -OaksLabText36: ; 1d336 (7:5336) -OaksLabText9: ; 1d336 (7:5336) +OaksLabText7: TX_ASM - ld hl, OaksLabText_1d340 + ld hl, OaksLabText_1cac2 call PrintText jp TextScriptEnd -OaksLabText_1d340: ; 1d340 (7:5340) +OaksLabText_1cac2: TX_FAR _OaksLabText_1d340 db "@" -OaksLabText17: ; 1d345 (7:5345) +OaksLabText13: TX_ASM - ld hl, OaksLabRivalWaitingText + ld hl, OaksLabText_1cad1 call PrintText jp TextScriptEnd -OaksLabRivalWaitingText: ; 1d34f (7:534f) +OaksLabText_1cad1: TX_FAR _OaksLabRivalWaitingText db "@" -OaksLabText18: ; 1d354 (7:5354) +OaksLabText14: TX_ASM - ld hl, OaksLabChooseMonText + ld hl, OaksLabText_1cae0 call PrintText jp TextScriptEnd -OaksLabChooseMonText: ; 1d35e (7:535e) +OaksLabText_1cae0: TX_FAR _OaksLabChooseMonText db "@" -OaksLabText19: ; 1d363 (7:5363) +OaksLabText15: TX_ASM - ld hl, OaksLabRivalInterjectionText + ld hl, OaksLabText_1caef call PrintText jp TextScriptEnd -OaksLabRivalInterjectionText: ; 1d36d (7:536d) +OaksLabText_1caef: TX_FAR _OaksLabRivalInterjectionText db "@" -OaksLabText20: ; 1d372 (7:5372) +OaksLabText16: TX_ASM - ld hl, OaksLabBePatientText + ld hl, OaksLabText_1cafe call PrintText jp TextScriptEnd -OaksLabBePatientText: ; 1d37c (7:537c) +OaksLabText_1cafe: TX_FAR _OaksLabBePatientText db "@" -OaksLabText12: ; 1d381 (7:5381) +OaksLabText17: TX_ASM - ld hl, OaksLabLeavingText + ld hl, OaksLabText_1cb25 + call PrintText + ld hl, OaksLabText_1cb2a + call PrintText + ld hl, OaksLabText_1cb30 + call PrintText + ld hl, OaksLabText_1cb35 + call PrintText + ld hl, OaksLabText_1cb3a call PrintText jp TextScriptEnd -OaksLabLeavingText: ; 1d38b (7:538b) - TX_FAR _OaksLabLeavingText +OaksLabText_1cb25: + TX_FAR _OaksLabRivalTakesText1 + db "@" + +OaksLabText_1cb2a: + TX_FAR _OaksLabRivalTakesText2 + TX_SFX_KEY_ITEM db "@" -OaksLabText13: ; 1d390 (7:5390) +OaksLabText_1cb30: + TX_FAR _OaksLabRivalTakesText3 + db "@" + +OaksLabText_1cb35: + TX_FAR _OaksLabRivalTakesText4 + db "@" + +OaksLabText_1cb3a: + TX_FAR _OaksLabRivalTakesText5 + db "@" + +OaksLabText18: TX_ASM - ld hl, OaksLabRivalPickingMonText + ld a, PIKACHU + ld [W_PLAYERSTARTER], a + ld [wd11e], a + call GetMonName + ld a, $1 + ld [wDoNotWaitForButtonPressAfterDisplayingText], a + ld hl, OaksLabText_1cb85 + call PrintText + ld hl, OaksLabText_1cb8a call PrintText + xor a + ld [wMonDataLocation], a + ld a, 5 + ld [wCurEnemyLVL], a + ld a, PIKACHU + ld [wd11e], a + ld [wcf91], a + call AddPartyMon + ld a, 163 + ld [wPartyMon1CatchRate], a + call Func_152d + SetEvent EVENT_GOT_STARTER + ld hl, wd72e + set 3, [hl] jp TextScriptEnd -OaksLabRivalPickingMonText: ; 1d39a (7:539a) - TX_FAR _OaksLabRivalPickingMonText +OaksLabText_1cb85: + TX_FAR _OaksLabOakGivesText + db "@" + +OaksLabText_1cb8a: + TX_FAR _OaksLabReceivedText + TX_SFX_KEY_ITEM db "@" -OaksLabText14: ; 1d39f (7:539f) +OaksLabText10: TX_ASM - ld hl, OaksLabRivalReceivedMonText + ld hl, OaksLabText_1cb9a call PrintText jp TextScriptEnd -OaksLabRivalReceivedMonText: ; 1d3a9 (7:53a9) - TX_FAR _OaksLabRivalReceivedMonText - db $11, "@" +OaksLabText_1cb9a: + TX_FAR _OaksLabLeavingText + db "@" -OaksLabText15: ; 1d3af (7:53af) +OaksLabText11: TX_ASM - ld hl, OaksLabRivalChallengeText + ld hl, OaksLabText_1cba9 call PrintText jp TextScriptEnd -OaksLabRivalChallengeText: ; 1d3b9 (7:53b9) +OaksLabText_1cba9: TX_FAR _OaksLabRivalChallengeText db "@" -OaksLabText_1d3be: ; 1d3be (7:53be) +OaksLabRivalDefeatedText: TX_FAR _OaksLabText_1d3be db "@" -OaksLabText_1d3c3: ; 1d3c3 (7:53c3) +OaksLabRivalBeatYouText: TX_FAR _OaksLabText_1d3c3 db "@" -OaksLabText16: ; 1d3c8 (7:53c8) +OaksLabText12: TX_ASM - ld hl, OaksLabRivalToughenUpText + ld hl, OaksLabText_1cbc2 call PrintText jp TextScriptEnd -OaksLabRivalToughenUpText: ; 1d3d2 (7:53d2) +OaksLabText_1cbc2: TX_FAR _OaksLabRivalToughenUpText db "@" -OaksLabText21: ; 1d3d7 (7:53d7) +OaksLabText26: + TX_ASM + ldpikacry e, PikachuCry2 + callab PlayPikachuSoundClip + ld hl, OaksLabText_1cbdb + call PrintText + jp TextScriptEnd + +OaksLabText_1cbdb: + TX_FAR _OaksLabPikachuDislikesPokeballsText1 + db "@" + +OaksLabText27: + TX_ASM + ld hl, OaksLabText_1cbea + call PrintText + jp TextScriptEnd + +OaksLabText_1cbea: + TX_FAR _OaksLabPikachuDislikesPokeballsText2 + db "@" + +OaksLabText19: TX_FAR _OaksLabText21 db "@" -OaksLabText22: ; 1d3dc (7:53dc) +OaksLabText20: TX_FAR _OaksLabText22 db "@" -OaksLabText23: ; 1d3e1 (7:53e1) +OaksLabText21: TX_FAR _OaksLabText23 db "@" -OaksLabText24: ; 1d3e6 (7:53e6) +OaksLabText22: TX_FAR _OaksLabText24 db "@" -OaksLabText25: ; 1d3eb (7:53eb) +OaksLabText23: TX_FAR _OaksLabText25 - db $11, "@" + TX_SFX_KEY_ITEM + db "@" -OaksLabText26: ; 1d3f1 (7:53f1) +OaksLabText24: TX_FAR _OaksLabText26 db "@" -OaksLabText27: ; 1d3f6 (7:53f6) +OaksLabText25: TX_FAR _OaksLabText27 db "@" -OaksLabText38: ; 1d3fb (7:53fb) -OaksLabText37: ; 1d3fb (7:53fb) -OaksLabText11: ; 1d3fb (7:53fb) -OaksLabText10: ; 1d3fb (7:53fb) +OaksLabText8: +OaksLabText9: TX_ASM - ld hl, OaksLabText_1d405 + ld hl, OaksLabText_1c31d call PrintText jp TextScriptEnd -OaksLabText_1d405: ; 1d405 (7:5405) +OaksLabText_1c31d: TX_FAR _OaksLabText_1d405 db "@" diff --git a/scripts/oakslab2.asm b/scripts/oakslab2.asm new file mode 100755 index 00000000..fef72470 --- /dev/null +++ b/scripts/oakslab2.asm @@ -0,0 +1,28 @@ +Func_f1be0: + ld a, [wYCoord] + cp 3 + jr z, .asm_f1bf0 + ld b, SPRITE_FACING_DOWN + ld hl, Data_f1bf9 + call Func_f0a82 + ret + +.asm_f1bf0 + ld b, SPRITE_FACING_LEFT + ld hl, Data_f1bfe + call Func_f0a82 + ret + +Data_f1bf9: + db $00 + db $1f + db $1e + db $38 + db $3f + +Data_f1bfe: + db $00 + db $1d + db $20 + db $36 + db $3f diff --git a/scripts/pallettown.asm b/scripts/pallettown.asm index 106d8ec0..73f50e3e 100755 --- a/scripts/pallettown.asm +++ b/scripts/pallettown.asm @@ -1,12 +1,12 @@ PalletTownScript: ; 18e5b (6:4e5b) CheckEvent EVENT_GOT_POKEBALLS_FROM_OAK - jr z,.next + jr z, .next SetEvent EVENT_PALLET_AFTER_GETTING_POKEBALLS .next call EnableAutoTextBoxDrawing - ld hl,PalletTownScriptPointers - ld a,[W_PALLETTOWNCURSCRIPT] - jp CallFunctionInTable + ld hl, PalletTownScriptPointers + ld a, [W_PALLETTOWNCURSCRIPT] + jp JumpTable PalletTownScriptPointers: ; 18e73 (6:4e73) dw PalletTownScript0 @@ -16,136 +16,208 @@ PalletTownScriptPointers: ; 18e73 (6:4e73) dw PalletTownScript4 dw PalletTownScript5 dw PalletTownScript6 + dw PalletTownScript7 + dw PalletTownScript8 + dw PalletTownScript9 PalletTownScript0: ; 18e81 (6:4e81) CheckEvent EVENT_FOLLOWED_OAK_INTO_LAB ret nz - ld a,[wYCoord] - cp 1 ; is player near north exit? + ld a, [wYCoord] + cp 0 ; is player at north exit? ret nz + ResetEvent EVENT_PLAYER_AT_RIGHT_EXIT_TO_PALLET_TOWN + ld a, [wXCoord] + cp 10 + jr z, .asm_18e40 + SetEventReuseHL EVENT_PLAYER_AT_RIGHT_EXIT_TO_PALLET_TOWN +.asm_18e40 xor a - ld [hJoyHeld],a - ld a,PLAYER_DIR_DOWN - ld [wPlayerMovingDirection],a - ld a,$FF - call PlaySound ; stop music + ld [hJoyHeld], a + ld a, $ff + ld [wJoyIgnore], a + ld a, PLAYER_DIR_UP + ld [wPlayerMovingDirection], a + call StopAllMusic ld a, BANK(Music_MeetProfOak) - ld c,a + ld c, a ld a, MUSIC_MEET_PROF_OAK ; “oak appears” music call PlayMusic - ld a,$FC - ld [wJoyIgnore],a SetEvent EVENT_OAK_APPEARED_IN_PALLET ; trigger the next script - ld a,1 - ld [W_PALLETTOWNCURSCRIPT],a + ld a, 1 + ld [W_PALLETTOWNCURSCRIPT], a ret PalletTownScript1: ; 18eb2 (6:4eb2) + ld a, $FF ^ (A_BUTTON | B_BUTTON) + ld [wJoyIgnore], a xor a - ld [wcf0d],a - ld a,1 - ld [hSpriteIndexOrTextID],a + ld [wcf0d], a + ld a, 1 + ld [hSpriteIndexOrTextID], a call DisplayTextID - ld a,$FF - ld [wJoyIgnore],a - ld a,HS_PALLET_TOWN_OAK - ld [wMissableObjectIndex],a + ld a, $FF + ld [wJoyIgnore], a + ld hl, wSpriteStateData2 + 1 * $10 + 4 + ld a, $8 + ld [hli], a + ld a, $e + ld [hl], a + ld a, HS_PALLET_TOWN_OAK + ld [wMissableObjectIndex], a predef ShowObject ; trigger the next script - ld a,2 - ld [W_PALLETTOWNCURSCRIPT],a + ld a, $2 + ld [wSpriteStateData1 + 1 * $10 + 1], a + ld a, SPRITE_FACING_UP + ld [wSpriteStateData1 + 1 * $10 + 9], a + ld a, 2 + ld [W_PALLETTOWNCURSCRIPT], a ret PalletTownScript2: ; 18ed2 (6:4ed2) - ld a,1 - ld [H_SPRITEINDEX],a - ld a,SPRITE_FACING_UP - ld [hSpriteFacingDirection],a - call SetSpriteFacingDirectionAndDelay call Delay3 - ld a,1 - ld [wYCoord],a - ld a,1 - ld [hNPCPlayerRelativePosPerspective],a - ld a,1 + ld a, 0 + ld [wYCoord], a + ld a, 1 + ld [hNPCPlayerRelativePosPerspective], a + ld a, 1 swap a - ld [hNPCSpriteOffset],a + ld [hNPCSpriteOffset], a predef CalcPositionOfPlayerRelativeToNPC - ld hl,hNPCPlayerYDistance + ld hl, hNPCPlayerYDistance dec [hl] predef FindPathToPlayer ; load Oak’s movement into wNPCMovementDirections2 - ld de,wNPCMovementDirections2 - ld a,1 ; oak - ld [H_SPRITEINDEX],a + ld de, wNPCMovementDirections2 + ld a, 1 ; oak + ld [H_SPRITEINDEX], a call MoveSprite - ld a,$FF - ld [wJoyIgnore],a ; trigger the next script - ld a,3 - ld [W_PALLETTOWNCURSCRIPT],a + ld a, 3 + ld [W_PALLETTOWNCURSCRIPT], a ret PalletTownScript3: ; 18f12 (6:4f12) - ld a,[wd730] - bit 0,a + ld a, [wd730] + bit 0, a ret nz - xor a ; ld a, SPRITE_FACING_DOWN - ld [wSpriteStateData1 + 9],a - ld a,1 - ld [wcf0d],a - ld a,$FC - ld [wJoyIgnore],a - ld a,1 - ld [hSpriteIndexOrTextID],a + ld a, $FF ^ (A_BUTTON | B_BUTTON) + ld [wJoyIgnore], a + ld a, 1 + ld [wcf0d], a + ld a, $2 + ld [wSpriteStateData1 + 1 * $10 + 1], a + ld a, SPRITE_FACING_UP + ld [wSpriteStateData1 + 1 * $10 + 9], a + ld a, 1 + ld [hSpriteIndexOrTextID], a call DisplayTextID -; set up movement script that causes the player to follow Oak to his lab - ld a,$FF - ld [wJoyIgnore],a - ld a,1 - ld [wSpriteIndex],a - xor a - ld [wNPCMovementScriptFunctionNum],a - ld a,1 - ld [wNPCMovementScriptPointerTableNum],a - ld a,[H_LOADEDROMBANK] - ld [wNPCMovementScriptBank],a - + ; oak faces the horizontally adjacent patch of grass to face pikachu + ld a, $FF + ld [wJoyIgnore], a + ld a, $2 + ld [wSpriteStateData1 + 1 * $10 + 1], a + CheckEvent EVENT_PLAYER_AT_RIGHT_EXIT_TO_PALLET_TOWN + ld a, SPRITE_FACING_RIGHT + jr z, .asm_18f01 + ld a, SPRITE_FACING_LEFT +.asm_18f01 + ld [wSpriteStateData1 + 1 * $10 + 9], a + ; trigger the next script - ld a,4 - ld [W_PALLETTOWNCURSCRIPT],a + ld a, 4 + ld [W_PALLETTOWNCURSCRIPT], a ret PalletTownScript4: ; 18f4b (6:4f4b) - ld a,[wNPCMovementScriptPointerTableNum] - and a ; is the movement script over? - ret nz + ; start the pikachu battle + ld a, $FF ^ (A_BUTTON | B_BUTTON) + ld [wJoyIgnore], a + xor a + ld [wListScrollOffset], a + ld a, STARTER_PIKACHU_BATTLE + ld [wBattleType], a + ld a, PIKACHU + ld [wCurOpponent], a + ld a, 5 + ld [wCurEnemyLVL], a ; trigger the next script - ld a,5 - ld [W_PALLETTOWNCURSCRIPT],a + ld a, 5 + ld [W_PALLETTOWNCURSCRIPT], a ret PalletTownScript5: ; 18f56 (6:4f56) + ld a, $2 + ld [wcf0d], a + ld a, $1 + ld [hSpriteIndexOrTextID], a + call DisplayTextID + ld a, $2 + ld [wSpriteStateData1 + 1 * $10 + 1], a + ld a, SPRITE_FACING_UP + ld [wSpriteStateData1 + 1 * $10 + 9], a + ld a, $8 + ld [hSpriteIndexOrTextID], a + call DisplayTextID + ld a, $ff + ld [wJoyIgnore], a + + ; trigger the next script + ld a, 6 + ld [W_PALLETTOWNCURSCRIPT], a + ret + +PalletTownScript6: ; 18f87 (6:4f87) + xor a + ld [wSpriteStateData1 + 9], a + ld a, $1 + ld [wSpriteIndex], a + xor a + ld [wNPCMovementScriptFunctionNum], a + ld a, $1 + ld [wNPCMovementScriptPointerTableNum], a + ld a, [H_LOADEDROMBANK] + ld [wNPCMovementScriptBank], a + + ; trigger the next script + ld a, 7 + ld [W_PALLETTOWNCURSCRIPT], a + ret + +PalletTownScript7: + ld a, [wNPCMovementScriptPointerTableNum] + and a + ret nz + + ; trigger the next script + ld a, 8 + ld [W_PALLETTOWNCURSCRIPT], a + ret + +PalletTownScript8: CheckEvent EVENT_DAISY_WALKING - jr nz,.next - CheckBothEventsSet EVENT_GOT_TOWN_MAP, EVENT_ENTERED_BLUES_HOUSE, 1 - jr nz,.next + jr nz, .asm_18f9e + and $3 ; (EVENT_GOT_TOWN_MAP | EVENT_ENTERED_BLUES_HOUSE) + cp $3 + jr nz, .asm_18f9e SetEvent EVENT_DAISY_WALKING - ld a,HS_DAISY_SITTING - ld [wMissableObjectIndex],a + ld a, HS_DAISY_SITTING + ld [wMissableObjectIndex], a predef HideObject - ld a,HS_DAISY_WALKING - ld [wMissableObjectIndex],a + ld a, HS_DAISY_WALKING + ld [wMissableObjectIndex], a predef_jump ShowObject -.next + +.asm_18f9e CheckEvent EVENT_GOT_POKEBALLS_FROM_OAK ret z SetEvent EVENT_PALLET_AFTER_GETTING_POKEBALLS_2 -PalletTownScript6: ; 18f87 (6:4f87) +PalletTownScript9: ret PalletTownTextPointers: ; 18f88 (6:4f88) @@ -156,18 +228,25 @@ PalletTownTextPointers: ; 18f88 (6:4f88) dw PalletTownText5 dw PalletTownText6 dw PalletTownText7 + dw PalletTownText8 PalletTownText1: ; 18f96 (6:4f96) TX_ASM - ld a,[wcf0d] + ld a, [wcf0d] and a - jr nz,.next - ld a,1 - ld [wDoNotWaitForButtonPressAfterDisplayingText],a - ld hl,OakAppearsText + jr nz, .next + ld a, 1 + ld [wDoNotWaitForButtonPressAfterDisplayingText], a + ld hl, OakAppearsText jr .done .next - ld hl,OakWalksUpText + dec a + jr nz, .asm_18fd3 + ld hl, OakWalksUpText + jr .done + +.asm_18fd3 + ld hl, PalletTownText_19002 .done call PrintText jp TextScriptEnd @@ -175,40 +254,49 @@ PalletTownText1: ; 18f96 (6:4f96) OakAppearsText: ; 18fb0 (6:4fb0) TX_FAR _OakAppearsText TX_ASM - ld c,10 + ld c, 10 call DelayFrames - xor a - ld [wEmotionBubbleSpriteIndex],a ; player's sprite - ld [wWhichEmotionBubble],a ; EXCLAMATION_BUBBLE + ld a, PLAYER_DIR_DOWN + ld [wPlayerMovingDirection], a + ld a, 0 + ld [wEmotionBubbleSpriteIndex], a ; player's sprite + ld a, 0 + ld [wWhichEmotionBubble], a ; EXCLAMATION_BUBBLE predef EmotionBubble - ld a,PLAYER_DIR_DOWN - ld [wPlayerMovingDirection],a jp TextScriptEnd OakWalksUpText: ; 18fce (6:4fce) TX_FAR _OakWalksUpText db "@" -PalletTownText2: ; 0x18fd3 girl +PalletTownText_19002: + TX_FAR _OakWhewText + db "@" + +PalletTownText8: ; 0x18fd3 girl + TX_FAR _OakGrassText + db "@" + +PalletTownText2: ; 0x18fd8 fat man TX_FAR _PalletTownText2 db "@" -PalletTownText3: ; 0x18fd8 fat man +PalletTownText3: ; 0x18fdd sign by lab TX_FAR _PalletTownText3 db "@" -PalletTownText4: ; 0x18fdd sign by lab +PalletTownText4: ; 0x18fe2 sign by fence TX_FAR _PalletTownText4 db "@" -PalletTownText5: ; 0x18fe2 sign by fence +PalletTownText5: ; 0x18fe7 sign by Red’s house TX_FAR _PalletTownText5 db "@" -PalletTownText6: ; 0x18fe7 sign by Red’s house +PalletTownText6: ; 0x18fec sign by Blue’s house TX_FAR _PalletTownText6 db "@" -PalletTownText7: ; 0x18fec sign by Blue’s house +PalletTownText7: TX_FAR _PalletTownText7 db "@" diff --git a/scripts/pewtercity.asm b/scripts/pewtercity.asm index 66589d52..1e9a922a 100755 --- a/scripts/pewtercity.asm +++ b/scripts/pewtercity.asm @@ -1,10 +1,13 @@ -PewterCityScript: ; 19237 (6:5237) +PewterCityScript: ; 192f5 (6:52f5) call EnableAutoTextBoxDrawing + ld hl, wPreventBlackout + res 7, [hl] ld hl, PewterCityScriptPointers ld a, [W_PEWTERCITYCURSCRIPT] - jp CallFunctionInTable + call JumpTable + ret -PewterCityScriptPointers: ; 19243 (6:5243) +PewterCityScriptPointers: ; 19307 (6:5307) dw PewterCityScript0 dw PewterCityScript1 dw PewterCityScript2 @@ -13,7 +16,7 @@ PewterCityScriptPointers: ; 19243 (6:5243) dw PewterCityScript5 dw PewterCityScript6 -PewterCityScript0: ; 19251 (6:5251) +PewterCityScript0: ; 19315 (6:5315) xor a ld [W_MUSEUM1FCURSCRIPT], a ResetEvent EVENT_BOUGHT_MUSEUM_TICKET @@ -26,7 +29,7 @@ PewterCityScript_1925e: ; 1925e (6:525e) ld hl, CoordsData_19277 call ArePlayerCoordsInArray ret nc - ld a, $f0 + ld a, $fc ld [wJoyIgnore], a ld a, $5 ld [hSpriteIndexOrTextID], a @@ -48,9 +51,9 @@ PewterCityScript1: ; 19280 (6:5280) ld a, SPRITE_FACING_UP ld [hSpriteFacingDirection], a call SetSpriteFacingDirectionAndDelay - ld a, ($3 << 4) | SPRITE_FACING_UP + ld a, SPRITE_FACING_UP ld [hSpriteImageIndex], a - call SetSpriteImageIndexAfterSettingFacingDirection + call SpriteFunc_34a1 call PlayDefaultMusic ld hl, wFlags_0xcd60 set 4, [hl] @@ -115,10 +118,7 @@ PewterCityScript4: ; 19305 (6:5305) ld [H_SPRITEINDEX], a ld a, SPRITE_FACING_LEFT ld [hSpriteFacingDirection], a - call SetSpriteFacingDirectionAndDelay - ld a, ($1 << 4) | SPRITE_FACING_LEFT - ld [hSpriteImageIndex], a - call SetSpriteImageIndexAfterSettingFacingDirection + call SpriteFunc_34a1 call PlayDefaultMusic ld hl, wFlags_0xcd60 set 4, [hl] diff --git a/scripts/pewtergym.asm b/scripts/pewtergym.asm index 1e6e5476..3e9ab693 100755 --- a/scripts/pewtergym.asm +++ b/scripts/pewtergym.asm @@ -14,7 +14,8 @@ PewterGymScript: ; 5c387 (17:4387) PewterGymScript_5c3a4: ; 5c3a4 (17:43a4) ld hl, Gym1CityName ld de, Gym1LeaderName - jp LoadGymLeaderAndCityName + call LoadGymLeaderAndCityName + ret Gym1CityName: ; 5c3ad (17:43ad) db "PEWTER CITY@" @@ -41,7 +42,6 @@ PewterGymScript3: ; 5c3d2 (17:43d2) jp z, PewterGymScript_5c3bf ld a, $f0 ld [wJoyIgnore], a - PewterGymScript_5c3df: ; 5c3df (17:43df) ld a, $4 ld [hSpriteIndexOrTextID], a @@ -55,6 +55,7 @@ PewterGymScript_5c3df: ; 5c3df (17:43df) call DisplayTextID SetEvent EVENT_GOT_TM34 jr .asm_5c408 + .BagFull ld a, $6 ld [hSpriteIndexOrTextID], a @@ -149,7 +150,7 @@ PewterGymText4: ; 5c4a8 (17:44a8) PewterGymText5: ; 5c4ad (17:44ad) TX_FAR _ReceivedTM34Text - db $0B + TX_SFX_ITEM TX_FAR _TM34ExplanationText db "@" @@ -159,7 +160,7 @@ PewterGymText6: ; 5c4b7 (17:44b7) PewterGymText_5c4bc: ; 5c4bc (17:44bc) TX_FAR _PewterGymText_5c4bc - db $0B + TX_SFX_ITEM TX_FAR _PewterGymText_5c4c1 db "@" @@ -192,6 +193,9 @@ PewterGymText3: ; 5c4df (17:44df) ld a, [wCurrentMenuItem] and a jr nz, .asm_5c4fe + ld a, [wd472] + bit 7, a + jp nz, .asm_5c3fa ld hl, PewterGymText_5c51a call PrintText jr .asm_5c504 @@ -208,6 +212,11 @@ PewterGymText3: ; 5c4df (17:44df) .asm_5c512 jp TextScriptEnd +.asm_5c3fa + ld hl, PewterGymText_5c41c + call PrintText + jp TextScriptEnd + PewterGymText_5c515: ; 5c515 (17:4515) TX_FAR _PewterGymText_5c515 db "@" @@ -227,3 +236,8 @@ PewterGymText_5c524: ; 5c524 (17:4524) PewterGymText_5c529: ; 5c529 (17:4529) TX_FAR _PewterGymText_5c529 db "@" + +PewterGymText_5c41c: + TX_FAR _PewterGymGuyText + db "@" + diff --git a/scripts/pewterhouse1.asm b/scripts/pewterhouse1.asm index a670f23c..a825b303 100755 --- a/scripts/pewterhouse1.asm +++ b/scripts/pewterhouse1.asm @@ -1,5 +1,6 @@ PewterHouse1Script: ; 1d5f3 (7:55f3) - jp EnableAutoTextBoxDrawing + call EnableAutoTextBoxDrawing + ret PewterHouse1TextPointers: ; 1d5f6 (7:55f6) dw PewterHouse1Text1 diff --git a/scripts/pewterpokecenter.asm b/scripts/pewterpokecenter.asm index 46d4d509..90f5e2b9 100755 --- a/scripts/pewterpokecenter.asm +++ b/scripts/pewterpokecenter.asm @@ -1,12 +1,17 @@ PewterPokecenterScript: ; 5c587 (17:4587) + ld hl, wPreventBlackout + set 7, [hl] call Serial_TryEstablishingExternallyClockedConnection - jp EnableAutoTextBoxDrawing + call EnableAutoTextBoxDrawing + ret PewterPokecenterTextPointers: ; 5c58d (17:458d) dw PewterPokecenterText1 dw PewterPokecenterText2 dw PewterPokecenterText3 dw PewterPokecenterText4 + dw PewterPokecenterText5 + dw PewterPokecenterText6 PewterPokecenterText1: ; 5c595 (17:4595) db $ff @@ -17,69 +22,18 @@ PewterPokecenterText2: ; 5c596 (17:4596) PewterPokecenterText3: ; 5c59b (17:459b) TX_ASM - ld a, $1 - ld [wDoNotWaitForButtonPressAfterDisplayingText], a - ld hl, PewterPokecenterText5 - call PrintText - ld a, $ff - call PlaySound - ld c, 32 - call DelayFrames - ld hl, JigglypuffFacingDirections - ld de, wJigglypuffFacingDirections - ld bc, JigglypuffFacingDirectionsEnd - JigglypuffFacingDirections - call CopyData - - ld a, [wSpriteStateData1 + 3 * $10 + $2] - ld hl, wJigglypuffFacingDirections -.findMatchingFacingDirectionLoop - cp [hl] - inc hl - jr nz, .findMatchingFacingDirectionLoop - dec hl - push hl - ld c, BANK(Music_JigglypuffSong) - ld a, MUSIC_JIGGLYPUFF_SONG - call PlayMusic - pop hl -.loop - ld a, [hl] - ld [wSpriteStateData1 + 3 * $10 + $2], a - -; rotate the array - push hl - ld hl, wJigglypuffFacingDirections - ld de, wJigglypuffFacingDirections - 1 - ld bc, JigglypuffFacingDirectionsEnd - JigglypuffFacingDirections - call CopyData - ld a, [wJigglypuffFacingDirections - 1] - ld [wJigglypuffFacingDirections + 3], a - pop hl - - ld c, 24 - call DelayFrames - - ld a, [wChannelSoundIDs] - ld b, a - ld a, [wChannelSoundIDs + CH1] - or b - jr nz, .loop - - ld c, 48 - call DelayFrames - call PlayDefaultMusic + callba Func_f1da4 jp TextScriptEnd -PewterPokecenterText5: ; 5c603 (17:4603) - TX_FAR _PewterPokecenterText5 - db "@" - -JigglypuffFacingDirections: ; 5c608 (17:4608) - db $30 | SPRITE_FACING_DOWN - db $30 | SPRITE_FACING_LEFT - db $30 | SPRITE_FACING_UP - db $30 | SPRITE_FACING_RIGHT -JigglypuffFacingDirectionsEnd: - PewterPokecenterText4: ; 5c60c (17:460c) db $f6 + +PewterPokecenterText5: ; 5c603 (17:4603) + TX_ASM + callba Func_f1d98 + jp TextScriptEnd + +PewterPokecenterText6: + TX_ASM + callab Func_f0f12 + jp TextScriptEnd diff --git a/scripts/pewterpokecenter2.asm b/scripts/pewterpokecenter2.asm new file mode 100755 index 00000000..1aae37d1 --- /dev/null +++ b/scripts/pewterpokecenter2.asm @@ -0,0 +1,72 @@ +Func_f1d98: + ld hl, PewterPokecenterText_f1d9f + call PrintText + ret + +PewterPokecenterText_f1d9f: + TX_FAR _PewterPokecenterText2 + db "@" + +Func_f1da4: + ld a, $1 + ld [wDoNotWaitForButtonPressAfterDisplayingText], a + ld hl, PewterPokecenterText_f1e19 + call PrintText + call StopAllMusic + ld c, 32 + call DelayFrames + ld hl, JigglypuffSpinData + ld de, wJigglypuffFacingDirections + ld bc, JigglypuffSpinDataEnd - JigglypuffSpinData + call CopyData + ld a, [wSpriteStateData1 + 3 * $10 + 2] + ld hl, wJigglypuffFacingDirections +.asm_f1dc9 + cp [hl] + inc hl + jr nz, .asm_f1dc9 + dec hl + push hl + ld c, BANK(Music_JigglypuffSong) + ld a, MUSIC_JIGGLYPUFF_SONG + call PlayMusic + pop hl +.asm_f1dd7 + ld a, [hl] + ld [wSpriteStateData1 + 3 * $10 + 2], a + push hl + ld hl, wJigglypuffFacingDirections + ld de, wJigglypuffFacingDirections2 + ld bc, JigglypuffSpinDataEnd - JigglypuffSpinData + call CopyData + ld a, [wJigglypuffFacingDirections2] + ld [wcd42], a + pop hl + ld c, 24 + call DelayFrames + ld a, [wChannelSoundIDs] + ld b, a + ld a, [wChannelSoundIDs + 1] + or b + jr nz, .asm_f1dd7 + ld c, 48 + call DelayFrames + call PlayDefaultMusic + ld a, [wd472] + bit 7, a + ret z + callab Func_fce73 + ret c + call SetPikachuAsleep + ret + +PewterPokecenterText_f1e19: + TX_FAR _PewterPokecenterText5 + db "@" + +JigglypuffSpinData: + db $40 | SPRITE_FACING_DOWN + db $40 | SPRITE_FACING_LEFT + db $40 | SPRITE_FACING_UP + db $40 | SPRITE_FACING_RIGHT +JigglypuffSpinDataEnd: diff --git a/scripts/pokemontower2.asm b/scripts/pokemontower2.asm index d498f88e..7aebf81b 100755 --- a/scripts/pokemontower2.asm +++ b/scripts/pokemontower2.asm @@ -2,7 +2,7 @@ PokemonTower2Script: ; 604f2 (18:44f2) call EnableAutoTextBoxDrawing ld hl, PokemonTower2ScriptPointers ld a, [W_POKEMONTOWER2CURSCRIPT] - jp CallFunctionInTable + jp JumpTable PokemonTower2Script_604fe: ; 604fe (18:44fe) xor a diff --git a/scripts/redshouse1f.asm b/scripts/redshouse1f.asm index f9c7193f..602e8ecf 100755 --- a/scripts/redshouse1f.asm +++ b/scripts/redshouse1f.asm @@ -1,5 +1,6 @@ RedsHouse1FScript: ; 48168 (12:4168) - jp EnableAutoTextBoxDrawing + call EnableAutoTextBoxDrawing + ret RedsHouse1FTextPointers: ; 4816b (12:416b) dw RedsHouse1FText1 @@ -7,63 +8,10 @@ RedsHouse1FTextPointers: ; 4816b (12:416b) RedsHouse1FText1: ; 4816f (12:416f) Mom TX_ASM - ld a, [wd72e] - bit 3, a - jr nz, .heal ; if player has received a Pokémon from Oak, heal team - ld hl, MomWakeUpText - call PrintText - jr .done -.heal - call MomHealPokemon -.done + callab Func_f1b73 jp TextScriptEnd -MomWakeUpText: ; 48185 (12:4185) - TX_FAR _MomWakeUpText - db "@" - -MomHealPokemon: ; 4818a (12:418a) - ld hl, MomHealText1 - call PrintText - call GBFadeOutToWhite - call ReloadMapData - predef HealParty - ld a, MUSIC_PKMN_HEALED - ld [wNewSoundID], a - call PlaySound -.next - ld a, [wChannelSoundIDs] - cp MUSIC_PKMN_HEALED - jr z, .next - ld a, [wMapMusicSoundID] - ld [wNewSoundID], a - call PlaySound - call GBFadeInFromWhite - ld hl, MomHealText2 - jp PrintText - -MomHealText1: ; 481bc (12:41bc) - TX_FAR _MomHealText1 - db "@" -MomHealText2: ; 481c1 (12:41c1) - TX_FAR _MomHealText2 - db "@" - RedsHouse1FText2: ; 0x481c6 TV TX_ASM - ld a,[wSpriteStateData1 + 9] - cp SPRITE_FACING_UP - ld hl,TVWrongSideText - jr nz,.notUp - ld hl,StandByMeText -.notUp - call PrintText + callab Func_f1bc4 jp TextScriptEnd - -StandByMeText: ; 481da (12:41da) - TX_FAR _StandByMeText - db "@" - -TVWrongSideText: ; 481df (12:41df) - TX_FAR _TVWrongSideText - db "@" diff --git a/scripts/redshouse1f2.asm b/scripts/redshouse1f2.asm new file mode 100755 index 00000000..0ddd22d6 --- /dev/null +++ b/scripts/redshouse1f2.asm @@ -0,0 +1,58 @@ +Func_f1b73: + ld a, [wd72e] + bit 3, a + jp nz, MomHealPokemon ; if player has received a Pokémon from Oak, heal team + ld hl, MomWakeUpText + call PrintText + ret + +MomWakeUpText: ; 48185 (12:4185) + TX_FAR _MomWakeUpText + db "@" + +MomHealPokemon: ; 4818a (12:418a) + ld hl, MomHealText1 + call PrintText + call GBFadeOutToWhite + call ReloadMapData + predef HealParty + ld a, MUSIC_PKMN_HEALED + ld [wNewSoundID], a + call PlaySound +.loop + ld a, [wChannelSoundIDs] + cp MUSIC_PKMN_HEALED + jr z, .loop + ld a, [wMapMusicSoundID] + ld [wNewSoundID], a + call PlaySound + call GBFadeInFromWhite + ld hl, MomHealText2 + call PrintText + ret + +MomHealText1: ; 481bc (12:41bc) + TX_FAR _MomHealText1 + db "@" +MomHealText2: ; 481c1 (12:41c1) + TX_FAR _MomHealText2 + db "@" + +Func_f1bc4: + ld hl, TVWrongSideText + ld a, [wSpriteStateData1 + 9] + cp SPRITE_FACING_UP + jp nz, .notUp + ld hl, StandByMeText +.notUp + call PrintText + ret + +StandByMeText: ; 481da (12:41da) + TX_FAR _StandByMeText + db "@" + +TVWrongSideText: ; 481df (12:41df) + TX_FAR _TVWrongSideText + db "@" + diff --git a/scripts/redshouse2f.asm b/scripts/redshouse2f.asm index 2335e6d1..3a0421a6 100755 --- a/scripts/redshouse2f.asm +++ b/scripts/redshouse2f.asm @@ -1,23 +1,22 @@ RedsHouse2FScript: ; 5c0b0 (17:40b0) call EnableAutoTextBoxDrawing - ld hl,RedsHouse2FScriptPointers - ld a,[W_REDSHOUSE2CURSCRIPT] - jp CallFunctionInTable + ld hl, RedsHouse2FScriptPointers + ld a, 0 + call JumpTable + ret RedsHouse2FScriptPointers: ; 5c0bc (17:40bc) dw RedsHouse2FScript0 dw RedsHouse2FScript1 + dw RedsHouse2FScript2 + dw RedsHouse2FScript3 + dw RedsHouse2FScript4 -RedsHouse2FScript0: ; 5c0c0 (17:40c0) - xor a - ld [hJoyHeld],a - ld a,PLAYER_DIR_UP - ld [wPlayerMovingDirection],a - ld a,1 - ld [W_REDSHOUSE2CURSCRIPT],a - ret - +RedsHouse2FScript0: ; 5c0ce (17:40ce) RedsHouse2FScript1: ; 5c0ce (17:40ce) +RedsHouse2FScript2: ; 5c0ce (17:40ce) +RedsHouse2FScript3: ; 5c0ce (17:40ce) +RedsHouse2FScript4: ; 5c0ce (17:40ce) ret RedsHouse2FTextPointers: ; 5c0cf (17:40cf) diff --git a/scripts/rockethideout2.asm b/scripts/rockethideout2.asm index 0b45967f..621e19e6 100755 --- a/scripts/rockethideout2.asm +++ b/scripts/rockethideout2.asm @@ -313,7 +313,7 @@ RocketHideout2Script3: ; 44fc2 (11:4fc2) ld [W_CURMAPSCRIPT], a ret -LoadSpinnerArrowTiles: ; 44fd7 (11:4fd7) +LoadSpinnerArrowTiles: ; 45077 (11:5077) ld a, [wSpriteStateData1 + 2] srl a srl a diff --git a/scripts/rocktunnelpokecenter.asm b/scripts/rocktunnelpokecenter.asm index 5e822bca..7d8f4bf6 100755 --- a/scripts/rocktunnelpokecenter.asm +++ b/scripts/rocktunnelpokecenter.asm @@ -7,9 +7,10 @@ RockTunnelPokecenterTextPointers: ; 493c0 (12:53c0) dw RockTunnelPokecenterText2 dw RockTunnelPokecenterText3 dw RockTunnelPokecenterText4 + dw RockTunnelPokecenterText5 RockTunnelPokecenterText1: ; 493c8 (12:53c8) - db $ff + TX_POKECENTER_NURSE RockTunnelPokecenterText2: ; 493c9 (12:53c9) TX_FAR _RockTunnelPokecenterText1 @@ -20,4 +21,9 @@ RockTunnelPokecenterText3: ; 493ce (12:53ce) db "@" RockTunnelPokecenterText4: ; 493d3 (12:53d3) - db $f6 + TX_CABLE_CLUB_RECEPTIONIST + +RockTunnelPokecenterText5: + TX_ASM + callab Func_f0f12 + jp TextScriptEnd diff --git a/scripts/route1.asm b/scripts/route1.asm index 926ffd20..8c7cc0e9 100755 --- a/scripts/route1.asm +++ b/scripts/route1.asm @@ -1,5 +1,6 @@ Route1Script: ; 1caaf (7:4aaf) - jp EnableAutoTextBoxDrawing + call EnableAutoTextBoxDrawing + ret Route1TextPointers: ; 1cab2 (7:4ab2) dw Route1Text1 @@ -8,44 +9,15 @@ Route1TextPointers: ; 1cab2 (7:4ab2) Route1Text1: ; 1cab8 (7:4ab8) TX_ASM - CheckAndSetEvent EVENT_GOT_POTION_SAMPLE - jr nz, .asm_1cada - ld hl, Route1ViridianMartSampleText - call PrintText - lb bc, POTION, 1 - call GiveItem - jr nc, .BagFull - ld hl, Route1Text_1cae8 - jr .asm_1cadd -.BagFull - ld hl, Route1Text_1caf3 - jr .asm_1cadd -.asm_1cada - ld hl, Route1Text_1caee -.asm_1cadd - call PrintText + callba Func_f1ad2 jp TextScriptEnd -Route1ViridianMartSampleText: ; 1cae3 (7:4ae3) - TX_FAR _Route1ViridianMartSampleText - db "@" - -Route1Text_1cae8: ; 1cae8 (7:4ae8) - TX_FAR _Route1Text_1cae8 - db $0b,"@" - -Route1Text_1caee: ; 1caee (7:4aee) - TX_FAR _Route1Text_1caee - db "@" - -Route1Text_1caf3: ; 1caf3 (7:4af3) - TX_FAR _Route1Text_1caf3 - db "@" - Route1Text2: ; 1caf8 (7:4af8) - TX_FAR _Route1Text2 - db "@" + TX_ASM + callba Func_f1b0f + jp TextScriptEnd Route1Text3: ; 1cafd (7:4afd) - TX_FAR _Route1Text3 - db "@" + TX_ASM + callba Func_f1b1b + jp TextScriptEnd diff --git a/scripts/route16gate.asm b/scripts/route16gate.asm index 801e577e..197b12b2 100755 --- a/scripts/route16gate.asm +++ b/scripts/route16gate.asm @@ -4,7 +4,7 @@ Route16GateScript: ; 496be (12:56be) call EnableAutoTextBoxDrawing ld a, [W_ROUTE16GATECURSCRIPT] ld hl, Route16GateScriptPointers - jp CallFunctionInTable + jp JumpTable Route16GateScriptPointers: ; 496cf (12:56cf) dw Route16GateScript0 diff --git a/scripts/route18.asm b/scripts/route18.asm index 9a077faf..9544b1ec 100755 --- a/scripts/route18.asm +++ b/scripts/route18.asm @@ -110,3 +110,4 @@ Route18Text4: ; 59b5a (16:5b5a) Route18Text5: ; 59b5f (16:5b5f) TX_FAR _Route18Text5 db "@" +; 59b64 diff --git a/scripts/route18gate.asm b/scripts/route18gate.asm index 060a6bbf..33f67e97 100755 --- a/scripts/route18gate.asm +++ b/scripts/route18gate.asm @@ -4,7 +4,7 @@ Route18GateScript: ; 49876 (12:5876) call EnableAutoTextBoxDrawing ld a, [W_ROUTE18GATECURSCRIPT] ld hl, Route18GateScriptPointers - jp CallFunctionInTable + jp JumpTable Route18GateScriptPointers: ; 49887 (12:5887) dw Route18GateScript0 diff --git a/scripts/route19.asm b/scripts/route19.asm index 4a60e40f..9ed6080b 100755 --- a/scripts/route19.asm +++ b/scripts/route19.asm @@ -37,7 +37,7 @@ Route19TrainerHeader0: ; 55d73 (15:5d73) Route19TrainerHeader1: ; 55d7f (15:5d7f) dbEventFlagBit EVENT_BEAT_ROUTE_19_TRAINER_1 - db ($3 << 4) ; trainer's view range + db ($4 << 4) ; trainer's view range dwEventFlagAddress EVENT_BEAT_ROUTE_19_TRAINER_1 dw Route19BattleText2 ; TextBeforeBattle dw Route19AfterBattleText2 ; TextAfterBattle @@ -121,60 +121,52 @@ Route19TrainerHeader9: ; 55ddf (15:5ddf) Route19Text1: ; 55dec (15:5dec) TX_ASM ld hl, Route19TrainerHeader0 - call TalkToTrainer - jp TextScriptEnd + jr Route19_TalkToTrainer Route19Text2: ; 55df6 (15:5df6) TX_ASM ld hl, Route19TrainerHeader1 - call TalkToTrainer - jp TextScriptEnd + jr Route19_TalkToTrainer Route19Text3: ; 55e00 (15:5e00) TX_ASM ld hl, Route19TrainerHeader2 - call TalkToTrainer - jp TextScriptEnd + jr Route19_TalkToTrainer Route19Text4: ; 55e0a (15:5e0a) TX_ASM ld hl, Route19TrainerHeader3 - call TalkToTrainer - jp TextScriptEnd + jr Route19_TalkToTrainer Route19Text5: ; 55e14 (15:5e14) TX_ASM ld hl, Route19TrainerHeader4 - call TalkToTrainer - jp TextScriptEnd + jr Route19_TalkToTrainer Route19Text6: ; 55e1e (15:5e1e) TX_ASM ld hl, Route19TrainerHeader5 - call TalkToTrainer - jp TextScriptEnd + jr Route19_TalkToTrainer Route19Text7: ; 55e28 (15:5e28) TX_ASM ld hl, Route19TrainerHeader6 - call TalkToTrainer - jp TextScriptEnd + jr Route19_TalkToTrainer Route19Text8: ; 55e32 (15:5e32) TX_ASM ld hl, Route19TrainerHeader7 - call TalkToTrainer - jp TextScriptEnd + jr Route19_TalkToTrainer Route19Text9: ; 55e3c (15:5e3c) TX_ASM ld hl, Route19TrainerHeader8 - call TalkToTrainer - jp TextScriptEnd + jr Route19_TalkToTrainer Route19Text10: ; 55e46 (15:5e46) TX_ASM ld hl, Route19TrainerHeader9 +Route19_TalkToTrainer: call TalkToTrainer jp TextScriptEnd diff --git a/scripts/route1_2.asm b/scripts/route1_2.asm new file mode 100755 index 00000000..35ffb137 --- /dev/null +++ b/scripts/route1_2.asm @@ -0,0 +1,53 @@ +Func_f1ad2: + CheckAndSetEvent EVENT_GOT_POTION_SAMPLE + jr nz, .asm_1cada + ld hl, Route1ViridianMartSampleText + call PrintText + lb bc, POTION, 1 + call GiveItem + jr nc, .BagFull + ld hl, Route1Text_f1aff + jr .asm_1cadd +.BagFull + ld hl, Route1Text_f1b0a + jr .asm_1cadd +.asm_1cada + ld hl, Route1Text_f1b05 +.asm_1cadd + call PrintText + ret + +Route1ViridianMartSampleText: ; 1cae3 (7:4ae3) + TX_FAR _Route1ViridianMartSampleText + db "@" + +Route1Text_f1aff: ; 1cae8 (7:4ae8) + TX_FAR _Route1Text_1cae8 + TX_SFX_ITEM + db "@" + +Route1Text_f1b05: ; 1caee (7:4aee) + TX_FAR _Route1Text_1caee + db "@" + +Route1Text_f1b0a: ; 1caf3 (7:4af3) + TX_FAR _Route1Text_1caf3 + db "@" + +Func_f1b0f: ; 1caf8 (7:4af8) + ld hl, Route1Text_f1b16 + call PrintText + ret + +Route1Text_f1b16: + TX_FAR _Route1Text2 + db "@" + +Func_f1b1b: ; 1cafd (7:4afd) + ld hl, Route1Text_f1b22 + call PrintText + ret + +Route1Text_f1b22: + TX_FAR _Route1Text3 + db "@" diff --git a/scripts/route22.asm b/scripts/route22.asm index 5c3d2b21..5ea8178f 100755 --- a/scripts/route22.asm +++ b/scripts/route22.asm @@ -2,7 +2,7 @@ Route22Script: ; 50eb2 (14:4eb2) call EnableAutoTextBoxDrawing ld hl, Route22ScriptPointers ld a, [W_ROUTE22CURSCRIPT] - jp CallFunctionInTable + jp JumpTable Route22ScriptPointers: ; 50ebe (14:4ebe) dw Route22Script0 @@ -22,16 +22,17 @@ Route22Script7: ; 50ed5 (14:4ed5) ret Route22Script_50ed6: ; 50ed6 (14:4ed6) + ld a, OPP_SONY1 + ld [wCurOpponent], a + ld a, $2 + ld [wTrainerNo], a + ret + +Route22Script_50ee1: + ld a, OPP_SONY2 + ld [wCurOpponent], a ld a, [W_RIVALSTARTER] - ld b, a -.asm_50eda - ld a, [hli] - cp b - jr z, .asm_50ee1 - inc hl - jr .asm_50eda -.asm_50ee1 - ld a, [hl] + add 7 ld [wTrainerNo], a ret @@ -88,9 +89,7 @@ Route22Script0: ; 50f00 (14:4f00) ld a, [wWalkBikeSurfState] and a jr z, .asm_50f4e - ld a, $ff - ld [wNewSoundID], a - call PlaySound + call StopAllMusic .asm_50f4e ld c, BANK(Music_MeetRival) ld a, MUSIC_MEET_RIVAL @@ -131,24 +130,29 @@ Route22Script1: ; 50f62 (14:4f62) ld hl, Route22RivalDefeatedText1 ld de, Route22Text_511bc call SaveEndBattleTextPointers - ld a, OPP_SONY1 - ld [wCurOpponent], a - ld hl, StarterMons_50faf call Route22Script_50ed6 ld a, $2 ld [W_ROUTE22CURSCRIPT], a ret -StarterMons_50faf: ; 50faf (14:4faf) -; starter the rival picked, rival trainer number - db STARTER2,$04 - db STARTER3,$05 - db STARTER1,$06 +Route22RivalDefeatedText1: ; 511b7 (14:51b7) + TX_FAR _Route22RivalDefeatedText1 + db "@" + +Route22Text_511bc: ; 511bc (14:51bc) + TX_FAR _Route22Text_511bc + db "@" Route22Script2: ; 50fb5 (14:4fb5) ld a, [wIsInBattle] cp $ff jp z, Route22Script_50ece + ld a, [W_RIVALSTARTER] + cp 2 + jr nz, .asm_50fc9 + ld a, $1 + ld [W_RIVALSTARTER], a +.asm_50fc9 ld a, [wSpriteStateData1 + 9] and a ; cp SPRITE_FACING_DOWN jr nz, .notDown @@ -167,9 +171,7 @@ Route22Script2: ; 50fb5 (14:4fb5) ld a, $1 ld [hSpriteIndexOrTextID], a call DisplayTextID - ld a, $ff - ld [wNewSoundID], a - call PlaySound + call StopAllMusic callba Music_RivalAlternateStart ld a, [wcf0d] cp $1 @@ -241,13 +243,9 @@ Route22Script_5104e: ; 5104e (14:504e) ld a, [wWalkBikeSurfState] and a jr z, .skipYVisibilityTesta - ld a, $ff - ld [wNewSoundID], a - call PlaySound + call StopAllMusic .skipYVisibilityTesta - ld a, $ff - ld [wNewSoundID], a - call PlaySound + call StopAllMusic callba Music_RivalAlternateTempo ld a, $2 ld [H_SPRITEINDEX], a @@ -287,18 +285,18 @@ Route22Script4: ; 51087 (14:5087) ld hl, Route22RivalDefeatedText2 ld de, Route22Text_511d0 call SaveEndBattleTextPointers - ld a, OPP_SONY2 - ld [wCurOpponent], a - ld hl, StarterMons_510d9 - call Route22Script_50ed6 + call Route22Script_50ee1 ld a, $5 ld [W_ROUTE22CURSCRIPT], a ret -StarterMons_510d9: ; 510d9 (14:50d9) - db STARTER2,$0a - db STARTER3,$0b - db STARTER1,$0c +Route22RivalDefeatedText2: ; 511cb (14:51cb) + TX_FAR _Route22RivalDefeatedText2 + db "@" + +Route22Text_511d0: ; 511d0 (14:51d0) + TX_FAR _Route22Text_511d0 + db "@" Route22Script5: ; 510df (14:50df) ld a, [wIsInBattle] @@ -326,9 +324,7 @@ Route22Script5: ; 510df (14:50df) ld a, $2 ld [hSpriteIndexOrTextID], a call DisplayTextID - ld a, $ff - ld [wNewSoundID], a - call PlaySound + call StopAllMusic callba Music_RivalAlternateStartAndTempo ld a, [wcf0d] cp $1 @@ -384,62 +380,15 @@ Route22TextPointers: ; 51175 (14:5175) Route22Text1: ; 5117b (14:517b) TX_ASM - CheckEvent EVENT_BEAT_ROUTE22_RIVAL_1ST_BATTLE - jr z, .asm_5118b - ld hl, Route22RivalAfterBattleText1 - call PrintText - jr .asm_51191 -.asm_5118b - ld hl, Route22RivalBeforeBattleText1 - call PrintText -.asm_51191 + callba Func_f1b27 jp TextScriptEnd Route22Text2: ; 51194 (14:5194) TX_ASM - CheckEvent EVENT_BEAT_ROUTE22_RIVAL_2ND_BATTLE - jr z, .asm_511a4 - ld hl, Route22RivalAfterBattleText2 - call PrintText - jr .asm_511aa -.asm_511a4 - ld hl, Route22RivalBeforeBattleText2 - call PrintText -.asm_511aa + callba Func_f1b47 jp TextScriptEnd -Route22RivalBeforeBattleText1: ; 511ad (14:51ad) - TX_FAR _Route22RivalBeforeBattleText1 - db "@" - -Route22RivalAfterBattleText1: ; 511b2 (14:51b2) - TX_FAR _Route22RivalAfterBattleText1 - db "@" - -Route22RivalDefeatedText1: ; 511b7 (14:51b7) - TX_FAR _Route22RivalDefeatedText1 - db "@" - -Route22Text_511bc: ; 511bc (14:51bc) - TX_FAR _Route22Text_511bc - db "@" - -Route22RivalBeforeBattleText2: ; 511c1 (14:51c1) - TX_FAR _Route22RivalBeforeBattleText2 - db "@" - -Route22RivalAfterBattleText2: ; 511c6 (14:51c6) - TX_FAR _Route22RivalAfterBattleText2 - db "@" - -Route22RivalDefeatedText2: ; 511cb (14:51cb) - TX_FAR _Route22RivalDefeatedText2 - db "@" - -Route22Text_511d0: ; 511d0 (14:51d0) - TX_FAR _Route22Text_511d0 - db "@" - Route22FrontGateText: ; 511d5 (14:51d5) - TX_FAR _Route22FrontGateText - db "@" + TX_ASM + callba Func_f1b67 + jp TextScriptEnd diff --git a/scripts/route22_2.asm b/scripts/route22_2.asm new file mode 100755 index 00000000..89ecdcf3 --- /dev/null +++ b/scripts/route22_2.asm @@ -0,0 +1,50 @@ +Func_f1b27: + CheckEvent EVENT_BEAT_ROUTE22_RIVAL_1ST_BATTLE + jr z, .asm_5118b + ld hl, Route22RivalAfterBattleText1 + call PrintText + jr .asm_51191 + +.asm_5118b + ld hl, Route22RivalBeforeBattleText1 + call PrintText +.asm_51191 + ret + +Route22RivalBeforeBattleText1: ; 511ad (14:51ad) + TX_FAR _Route22RivalBeforeBattleText1 + db "@" + +Route22RivalAfterBattleText1: ; 511b2 (14:51b2) + TX_FAR _Route22RivalAfterBattleText1 + db "@" + +Func_f1b47: + CheckEvent EVENT_BEAT_ROUTE22_RIVAL_2ND_BATTLE + jr z, .asm_511a4 + ld hl, Route22RivalAfterBattleText2 + call PrintText + jr .asm_511aa + +.asm_511a4 + ld hl, Route22RivalBeforeBattleText2 + call PrintText +.asm_511aa + ret + +Route22RivalBeforeBattleText2: ; 511c1 (14:51c1) + TX_FAR _Route22RivalBeforeBattleText2 + db "@" + +Route22RivalAfterBattleText2: ; 511c6 (14:51c6) + TX_FAR _Route22RivalAfterBattleText2 + db "@" + +Func_f1b67: + ld hl, Route22FrontGateText_3c + call PrintText + ret + +Route22FrontGateText_3c: + TX_FAR _Route22FrontGateText + db "@" diff --git a/scripts/route22gate.asm b/scripts/route22gate.asm index f0b5b92d..5fdd70c8 100755 --- a/scripts/route22gate.asm +++ b/scripts/route22gate.asm @@ -2,7 +2,7 @@ Route22GateScript: ; 1e683 (7:6683) call EnableAutoTextBoxDrawing ld hl, Route22GateScriptPointers ld a, [W_ROUTE22GATECURSCRIPT] - call CallFunctionInTable + call JumpTable ld a, [wYCoord] cp $4 ld a, ROUTE_23 diff --git a/scripts/route23.asm b/scripts/route23.asm index 6fc0eef1..f324963b 100755 --- a/scripts/route23.asm +++ b/scripts/route23.asm @@ -3,7 +3,7 @@ Route23Script: ; 511da (14:51da) call EnableAutoTextBoxDrawing ld hl, Route23ScriptPointers ld a, [W_ROUTE23CURSCRIPT] - jp CallFunctionInTable + jp JumpTable Route23Script_511e9: ; 511e9 (14:51e9) ld hl, wd126 diff --git a/scripts/route24.asm b/scripts/route24.asm index 61df4377..15fe78b8 100755 --- a/scripts/route24.asm +++ b/scripts/route24.asm @@ -1,4 +1,4 @@ -Route24Script: ; 513ad (14:53ad) +Route24Script: ; 51366 (14:5366) call EnableAutoTextBoxDrawing ld hl, Route24TrainerHeaders ld de, Route24ScriptPointers @@ -84,6 +84,7 @@ Route24TextPointers: ; 5144b (14:544b) dw Route24Text6 dw Route24Text7 dw PickUpItemText + dw Route24Text8 Route24TrainerHeaders: ; 5145b (14:545b) Route24TrainerHeader0: ; 5145b (14:545b) @@ -191,7 +192,9 @@ Route24Text_51510: ; 51510 (14:5510) Route24Text_5151a: ; 5151a (14:551a) TX_FAR _Route24Text_5151a - db $0B, $6, "@" + TX_SFX_KEY_ITEM + TX_BUTTON_SOUND + db "@" Route24Text_51521: ; 51521 (14:5521) TX_FAR _Route24Text_51521 @@ -316,3 +319,60 @@ Route24EndBattleText6: ; 515c1 (14:55c1) Route24AfterBattleText6: ; 515c6 (14:55c6) TX_FAR _Route24AfterBattleText6 db "@" + +Route24Text8: + TX_ASM + CheckEvent EVENT_54F + jr nz, .asm_515d5 + ld hl, Route24Text_515de + call PrintText + call YesNoChoice + ld a, [wCurrentMenuItem] + and a + jr nz, .asm_515d0 + ld a, CHARMANDER + ld [wd11e], a + ld [wcf91], a + call GetMonName + ld a, $1 + ld [wDoNotWaitForButtonPressAfterDisplayingText], a + lb bc, CHARMANDER, 10 + call GivePokemon + jp nc, TextScriptEnd + ld a, [wAddedToParty] + and a + call z, WaitForTextScrollButtonPress + ld a, $1 + ld [wDoNotWaitForButtonPressAfterDisplayingText], a + ld hl, Route24Text_515e3 + call PrintText + SetEvent EVENT_54F + jp TextScriptEnd + +.asm_515d0 + ld hl, Route24Text_515e9 + jr .asm_515d8 + +.asm_515d5 + ld hl, Route24Text_515ee +.asm_515d8 + call PrintText + jp TextScriptEnd + +Route24Text_515de: + TX_FAR _Route24DamianText1 + db "@" + +Route24Text_515e3: + TX_FAR _Route24DamianText2 + db $d + db "@" + +Route24Text_515e9: + TX_FAR _Route24DamianText3 + db "@" + +Route24Text_515ee: + TX_FAR _Route24DamianText4 + db "@" + diff --git a/scripts/route25.asm b/scripts/route25.asm index 49580ba6..20dcc890 100755 --- a/scripts/route25.asm +++ b/scripts/route25.asm @@ -1,14 +1,21 @@ Route25Script: ; 515cb (14:55cb) - call Route25Script_515e1 call EnableAutoTextBoxDrawing ld hl, Route25TrainerHeaders ld de, Route25ScriptPointers ld a, [W_ROUTE25CURSCRIPT] call ExecuteCurMapScriptInTable ld [W_ROUTE25CURSCRIPT], a + call Route25Script_515e1 ret Route25Script_515e1: ; 515e1 (14:55e1) + ld hl, wPreventBlackout + res 2, [hl] + res 3, [hl] + res 4, [hl] + res 7, [hl] + xor a + ld [W_BILLSHOUSECURSCRIPT], a ld hl, wd126 bit 6, [hl] res 6, [hl] @@ -16,14 +23,16 @@ Route25Script_515e1: ; 515e1 (14:55e1) CheckEventHL EVENT_LEFT_BILLS_HOUSE_AFTER_HELPING ret nz CheckEventReuseHL EVENT_MET_BILL_2 - jr nz, .asm_515ff + jr nz, .asm_51638 ResetEventReuseHL EVENT_BILL_SAID_USE_CELL_SEPARATOR ld a, HS_BILL_POKEMON ld [wMissableObjectIndex], a - predef_jump ShowObject -.asm_515ff + predef ShowObject + jr .asm_5165c + +.asm_51638 CheckEventAfterBranchReuseHL EVENT_GOT_SS_TICKET, EVENT_MET_BILL_2 - ret z + jr z, .asm_5165c SetEventReuseHL EVENT_LEFT_BILLS_HOUSE_AFTER_HELPING ld a, HS_NUGGET_BRIDGE_GUY ld [wMissableObjectIndex], a @@ -33,7 +42,9 @@ Route25Script_515e1: ; 515e1 (14:55e1) predef HideObject ld a, HS_BILL_2 ld [wMissableObjectIndex], a - predef_jump ShowObject + predef ShowObject +.asm_5165c + ret Route25ScriptPointers: ; 51622 (14:5622) dw CheckFightingMapTrainers diff --git a/scripts/route5.asm b/scripts/route5.asm index 1fad3939..1f42bc4e 100755 --- a/scripts/route5.asm +++ b/scripts/route5.asm @@ -1,9 +1,9 @@ -Route5Script: ; 556b2 (15:56b2) +Route5Script: ; 556c6 (15:56c6) jp EnableAutoTextBoxDrawing -Route5TextPointers: ; 556b5 (15:56b5) +Route5TextPointers: ; 556c9 (15:56c9) dw Route5Text1 -Route5Text1: ; 556b7 (15:56b7) +Route5Text1: ; 556cb (15:56cb) TX_FAR _Route5Text1 db "@" diff --git a/scripts/route5gate.asm b/scripts/route5gate.asm index 35f3a020..6442fd83 100755 --- a/scripts/route5gate.asm +++ b/scripts/route5gate.asm @@ -2,7 +2,7 @@ Route5GateScript: ; 1df33 (7:5f33) call EnableAutoTextBoxDrawing ld a, [W_ROUTE5GATECURSCRIPT] ld hl, Route5GateScriptPointers - jp CallFunctionInTable + jp JumpTable Route5GateScriptPointers: ; 1df3f (7:5f3f) dw Route5GateScript0 diff --git a/scripts/route6.asm b/scripts/route6.asm index e748fed1..8ef32a42 100755 --- a/scripts/route6.asm +++ b/scripts/route6.asm @@ -36,7 +36,7 @@ Route6TrainerHeader1: ; 590e3 (16:50e3) db ($0 << 4) ; trainer's view range dwEventFlagAddress EVENT_BEAT_ROUTE_6_TRAINER_1 dw Route6BattleText2 ; TextBeforeBattle - dw Route6AfterBattleText1 ; TextAfterBattle + dw Route6AfterBattleText2 ; TextAfterBattle dw Route6EndBattleText2 ; TextEndBattle dw Route6EndBattleText2 ; TextEndBattle @@ -110,6 +110,10 @@ Route6EndBattleText2: ; 59148 (16:5148) TX_FAR _Route6EndBattleText2 db "@" +Route6AfterBattleText2: + TX_FAR _Route6AfterBattleText2 + db "@" + Route6Text3: ; 5914d (16:514d) TX_ASM ld hl, Route6TrainerHeader2 diff --git a/scripts/route6gate.asm b/scripts/route6gate.asm index a4b6149c..dd179e28 100755 --- a/scripts/route6gate.asm +++ b/scripts/route6gate.asm @@ -2,7 +2,7 @@ Route6GateScript: ; 1e03d (7:603d) call EnableAutoTextBoxDrawing ld hl, Route6GateScriptPointers ld a, [W_ROUTE6GATECURSCRIPT] - call CallFunctionInTable + call JumpTable ret Route6GateScriptPointers: ; 1e04a (7:604a) diff --git a/scripts/route7.asm b/scripts/route7.asm index 484fc539..55183d16 100755 --- a/scripts/route7.asm +++ b/scripts/route7.asm @@ -1,9 +1,10 @@ -Route7Script: ; 48152 (12:4152) - jp EnableAutoTextBoxDrawing +Route7Script: ; 480eb (12:40eb) + call EnableAutoTextBoxDrawing + ret -Route7TextPointers: ; 48155 (12:4155) +Route7TextPointers: ; 480ef (12:40ef) dw Route7Text1 -Route7Text1: ; 48157 (12:4157) +Route7Text1: ; 480f1 (12:40f1) TX_FAR _Route7Text1 db "@" diff --git a/scripts/route7gate.asm b/scripts/route7gate.asm index b55f813c..7f87b78c 100755 --- a/scripts/route7gate.asm +++ b/scripts/route7gate.asm @@ -2,7 +2,7 @@ Route7GateScript: ; 1e100 (7:6100) call EnableAutoTextBoxDrawing ld a, [W_ROUTE7GATECURSCRIPT] ld hl, Route7GateScriptPointers - call CallFunctionInTable + call JumpTable ret Route7GateScriptPointers: ; 1e10d (7:610d) diff --git a/scripts/route8gate.asm b/scripts/route8gate.asm index 96bfa875..5a26b424 100755 --- a/scripts/route8gate.asm +++ b/scripts/route8gate.asm @@ -2,7 +2,7 @@ Route8GateScript: ; 1e1c7 (7:61c7) call EnableAutoTextBoxDrawing ld hl, Route8GateScriptPointers ld a, [W_ROUTE8GATECURSCRIPT] - jp CallFunctionInTable + jp JumpTable Route8GateScriptPointers: ; 1e1d3 (7:61d3) dw Route8GateScript0 @@ -27,7 +27,7 @@ Route8GateScript0: ; 1e1ee (7:61ee) ld hl, CoordsData_1e22c call ArePlayerCoordsInArray ret nc - ld a, PLAYER_DIR_LEFT + ld a, PLAYER_DIR_UP ld [wPlayerMovingDirection], a xor a ld [hJoyHeld], a diff --git a/scripts/route9.asm b/scripts/route9.asm index 9d26ee96..5de98173 100755 --- a/scripts/route9.asm +++ b/scripts/route9.asm @@ -14,7 +14,7 @@ Route9ScriptPointers: ; 556cf (15:56cf) Route9TextPointers: ; 556d5 (15:56d5) dw Route9Text1 - dw Route9Text2 + dw Route9TextAJ dw Route9Text3 dw Route9Text4 dw Route9Text5 @@ -39,10 +39,10 @@ Route9TrainerHeader2: ; 556f7 (15:56f7) dbEventFlagBit EVENT_BEAT_ROUTE_9_TRAINER_2 db ($2 << 4) ; trainer's view range dwEventFlagAddress EVENT_BEAT_ROUTE_9_TRAINER_2 - dw Route9BattleText2 ; TextBeforeBattle - dw Route9AfterBattleText2 ; TextAfterBattle - dw Route9EndBattleText2 ; TextEndBattle - dw Route9EndBattleText2 ; TextEndBattle + dw Route9BattleTextAJ ; TextBeforeBattle + dw Route9AfterBattleTextAJ ; TextAfterBattle + dw Route9EndBattleTextAJ ; TextEndBattle + dw Route9EndBattleTextAJ ; TextEndBattle Route9TrainerHeader3: ; 55703 (15:5703) dbEventFlagBit EVENT_BEAT_ROUTE_9_TRAINER_3 @@ -114,7 +114,7 @@ Route9Text1: ; 55758 (15:5758) ld hl, Route9TrainerHeader0 jr Route9TalkToTrainer -Route9Text2: ; 5575e (15:575e) +Route9TextAJ: ; 5575e (15:575e) TX_ASM ld hl, Route9TrainerHeader2 jr Route9TalkToTrainer @@ -168,16 +168,16 @@ Route9AfterBattleText1: ; 5579c (15:579c) TX_FAR _Route9AfterBattleText1 db "@" -Route9BattleText2: ; 557a1 (15:57a1) - TX_FAR _Route9BattleText2 +Route9BattleTextAJ: ; 557a1 (15:57a1) + TX_FAR _Route9BattleTextAJ db "@" -Route9EndBattleText2: ; 557a6 (15:57a6) - TX_FAR _Route9EndBattleText2 +Route9EndBattleTextAJ: ; 557a6 (15:57a6) + TX_FAR _Route9EndBattleTextAJ db "@" -Route9AfterBattleText2: ; 557ab (15:57ab) - TX_FAR _Route9AfterBattleText2 +Route9AfterBattleTextAJ: ; 557ab (15:57ab) + TX_FAR _Route9AfterBattleTextAJ db "@" Route9BattleText3: ; 557b0 (15:57b0) diff --git a/scripts/safarizoneentrance.asm b/scripts/safarizoneentrance.asm index 2f8ff34b..a0a0ffda 100755 --- a/scripts/safarizoneentrance.asm +++ b/scripts/safarizoneentrance.asm @@ -2,7 +2,7 @@ SafariZoneEntranceScript: ; 751cd (1d:51cd) call EnableAutoTextBoxDrawing ld hl, SafariZoneEntranceScriptPointers ld a, [wSafariZoneEntranceCurScript] - jp CallFunctionInTable + jp JumpTable SafariZoneEntranceScriptPointers: ; 751d9 (1d:51d9) dw .SafariZoneEntranceScript0 diff --git a/scripts/school.asm b/scripts/school.asm index 57eb58c8..6ee0d36e 100755 --- a/scripts/school.asm +++ b/scripts/school.asm @@ -1,14 +1,22 @@ SchoolScript: ; 1d54c (7:554c) - jp EnableAutoTextBoxDrawing + call EnableAutoTextBoxDrawing + ret SchoolTextPointers: ; 1d54f (7:554f) dw SchoolText1 dw SchoolText2 + dw SchoolText3 SchoolText1: ; 1d553 (7:5553) TX_FAR _SchoolText1 db "@" SchoolText2: ; 1d558 (7:5558) - TX_FAR _SchoolText2 - db "@" + TX_ASM + callba Func_f1c0f + jp TextScriptEnd + +SchoolText3: ; 1d558 (7:5558) + TX_ASM + callba Func_f1c03 + jp TextScriptEnd diff --git a/scripts/school2.asm b/scripts/school2.asm new file mode 100755 index 00000000..677a43ec --- /dev/null +++ b/scripts/school2.asm @@ -0,0 +1,17 @@ +Func_f1c03: + ld hl, SchoolText_f1c0a + call PrintText + ret + +SchoolText_f1c0a: + TX_FAR _SchoolText3 + db "@" + +Func_f1c0f: + ld hl, SchoolText_f1c16 + call PrintText + ret + +SchoolText_f1c16: + TX_FAR _SchoolText2 + db "@" diff --git a/scripts/seafoamislands4.asm b/scripts/seafoamislands4.asm index e3234b0a..56ccd2e3 100755 --- a/scripts/seafoamislands4.asm +++ b/scripts/seafoamislands4.asm @@ -42,7 +42,7 @@ SeafoamIslands4Script: ; 4658d (11:658d) .asm_465ed ld hl, SeafoamIslands4ScriptPointers ld a, [wSeafoamIslands4CurScript] - jp CallFunctionInTable + jp JumpTable Seafoam4HolesCoords: ; 465f6 (11:65f6) db $10,$03 diff --git a/scripts/seafoamislands5.asm b/scripts/seafoamislands5.asm index 98c27666..f8b7aed7 100755 --- a/scripts/seafoamislands5.asm +++ b/scripts/seafoamislands5.asm @@ -2,7 +2,7 @@ SeafoamIslands5Script: ; 46799 (11:6799) call EnableAutoTextBoxDrawing ld a, [wSeafoamIslands5CurScript] ld hl, SeafoamIslands5ScriptPointers - jp CallFunctionInTable + jp JumpTable SeafoamIslands5Script_467a5: ; 467a5 (11:67a5) xor a diff --git a/scripts/silphco11_2.asm b/scripts/silphco11_2.asm new file mode 100755 index 00000000..e7b59757 --- /dev/null +++ b/scripts/silphco11_2.asm @@ -0,0 +1,76 @@ +Func_f25a0: + ld hl, MissableObjects_f25ce +.asm_f25a3 + ld a, [hli] + cp $ff + jr z, .asm_f25b4 + push hl + ld [wMissableObjectIndex], a + predef HideObject + pop hl + jr .asm_f25a3 + +.asm_f25b4 + ld hl, MissableObjects_f25c7 +.asm_f25b7 + ld a, [hli] + cp $ff + ret z + push hl + ld [wMissableObjectIndex], a + predef ShowObject + pop hl + jr .asm_f25b7 + +MissableObjects_f25c7: + db HS_SAFFRON_CITY_8 + db HS_SAFFRON_CITY_9 + db HS_SAFFRON_CITY_A + db HS_SAFFRON_CITY_B + db HS_SAFFRON_CITY_C + db HS_SAFFRON_CITY_D + db $FF + +MissableObjects_f25ce + db HS_SAFFRON_CITY_1 + db HS_SAFFRON_CITY_2 + db HS_SAFFRON_CITY_3 + db HS_SAFFRON_CITY_4 + db HS_SAFFRON_CITY_5 + db HS_SAFFRON_CITY_6 + db HS_SAFFRON_CITY_7 + db HS_SAFFRON_CITY_E + db HS_SAFFRON_CITY_F + db HS_SILPH_CO_2F_2 + db HS_SILPH_CO_2F_3 + db HS_SILPH_CO_2F_4 + db HS_SILPH_CO_2F_5 + db HS_SILPH_CO_3F_1 + db HS_SILPH_CO_3F_2 + db HS_SILPH_CO_4F_1 + db HS_SILPH_CO_4F_2 + db HS_SILPH_CO_4F_3 + db HS_SILPH_CO_5F_1 + db HS_SILPH_CO_5F_2 + db HS_SILPH_CO_5F_3 + db HS_SILPH_CO_5F_4 + db HS_SILPH_CO_6F_1 + db HS_SILPH_CO_6F_2 + db HS_SILPH_CO_6F_3 + db HS_SILPH_CO_7F_1 + db HS_SILPH_CO_7F_2 + db HS_SILPH_CO_7F_3 + db HS_SILPH_CO_7F_4 + db HS_SILPH_CO_8F_1 + db HS_SILPH_CO_8F_2 + db HS_SILPH_CO_8F_3 + db HS_SILPH_CO_9F_1 + db HS_SILPH_CO_9F_2 + db HS_SILPH_CO_9F_3 + db HS_SILPH_CO_10F_1 + db HS_SILPH_CO_10F_2 + db HS_SILPH_CO_11F_1 + db HS_SILPH_CO_11F_2 + db HS_SILPH_CO_11F_3 + db HS_MAP_F4_1 + db $ff
\ No newline at end of file diff --git a/scripts/ssanne2.asm b/scripts/ssanne2.asm index eea27ec9..7bdafe2c 100755 --- a/scripts/ssanne2.asm +++ b/scripts/ssanne2.asm @@ -2,7 +2,7 @@ SSAnne2Script: ; 6139f (18:539f) call EnableAutoTextBoxDrawing ld hl, SSAnne2ScriptPointers ld a, [W_SSANNE2CURSCRIPT] - jp CallFunctionInTable + jp JumpTable SSAnne2Script_613ab: ; 613ab (18:53ab) xor a diff --git a/scripts/ssanne9_2.asm b/scripts/ssanne9_2.asm new file mode 100755 index 00000000..f856221c --- /dev/null +++ b/scripts/ssanne9_2.asm @@ -0,0 +1,35 @@ +Func_f2570: + ld hl, SSAnne9Text_f2577 + call PrintText + ret + +SSAnne9Text_f2577: + TX_FAR _SSAnne9Text_61c1f + db "@" + +Func_f257c: + ld hl, SSAnne9Text_f2583 + call PrintText + ret + +SSAnne9Text_f2583: + TX_FAR _SSAnne9Text_61c2e + db "@" + +Func_f2588: + ld hl, SSAnne9Text_f258f + call PrintText + ret + +SSAnne9Text_f258f: + TX_FAR _SSAnne9Text_61c3d + db "@" + +Func_f2594: + ld hl, SSAnne9Text_f259b + call PrintText + ret + +SSAnne9Text_f259b: + TX_FAR _SSAnne9Text_61c4c + db "@" diff --git a/scripts/vermilioncity.asm b/scripts/vermilioncity.asm index 67e3cddd..a8fc8ce7 100755 --- a/scripts/vermilioncity.asm +++ b/scripts/vermilioncity.asm @@ -1,5 +1,7 @@ VermilionCityScript: ; 197a1 (6:57a1) call EnableAutoTextBoxDrawing + ld hl, wPreventBlackout + res 7, [hl] ld hl, wd126 bit 6, [hl] res 6, [hl] @@ -11,11 +13,24 @@ VermilionCityScript: ; 197a1 (6:57a1) call nz, VermilionCityScript_197c0 ld hl, VermilionCityScriptPointers ld a, [W_VERMILIONCITYCURSCRIPT] - jp CallFunctionInTable + call JumpTable + call VermilionCityScript_19869 + ret + +VermilionCityScript_19869: + CheckEventHL EVENT_152 + ret nz + CheckEventReuseHL EVENT_GOT_BIKE_VOUCHER + ret z + SetEventReuseHL EVENT_152 + ret VermilionCityScript_197c0: ; 197c0 (6:57c0) call Random - ld a, [$ffd4] + ld a, [hRandomAdd] + ld b, a + ld a, [hRandomSub] + adc b and $e ld [wFirstLockTrashCanIndex], a ret @@ -40,10 +55,10 @@ VermilionCityScriptPointers: ; 197dc (6:57dc) VermilionCityScript0: ; 197e6 (6:57e6) ld a, [wSpriteStateData1 + 9] and a ; cp SPRITE_FACING_DOWN - ret nz + jr nz, .asm_198de ld hl, CoordsData_19823 call ArePlayerCoordsInArray - ret nc + jr nc, .asm_198de xor a ld [hJoyHeld], a ld [wcf0d], a @@ -67,6 +82,9 @@ VermilionCityScript0: ; 197e6 (6:57e6) ld [W_VERMILIONCITYCURSCRIPT], a ret +.asm_198de + ret + CoordsData_19823: ; 19823 (6:5823) db $1e,$12 db $ff @@ -122,11 +140,12 @@ VermilionCityTextPointers: ; 1986f (6:586f) dw VermilionCityText6 dw VermilionCityText7 dw VermilionCityText8 + dw VermilionCityText9 dw MartSignText dw PokeCenterSignText - dw VermilionCityText11 dw VermilionCityText12 dw VermilionCityText13 + dw VermilionCityText14 VermilionCityText1: ; 19889 (6:5889) TX_FAR _VermilionCityText1 @@ -225,33 +244,43 @@ VermilionCityText5: ; 19922 (6:5922) ld a, MACHOP call PlayCry call WaitForSoundToFinish - ld hl, VermilionCityText14 + ld hl, VermilionCityText15 ret -VermilionCityText14: ; 19933 (6:5933) - TX_FAR _VermilionCityText14 +VermilionCityText15: ; 19933 (6:5933) + TX_FAR _VermilionCityText15 db "@" VermilionCityText6: ; 19938 (6:5938) TX_FAR _VermilionCityText6 db "@" -VermilionCityText7: ; 1993d (6:593d) - TX_FAR _VermilionCityText7 - db "@" +VermilionCityText8: ; 1993d (6:593d) + TX_ASM + callba Func_f1a8a + jp TextScriptEnd -VermilionCityText8: ; 19942 (6:5942) - TX_FAR _VermilionCityText8 - db "@" +VermilionCityText9: ; 19942 (6:5942) + TX_ASM + callba Func_f1a96 + jp TextScriptEnd -VermilionCityText11: ; 19947 (6:5947) - TX_FAR _VermilionCityText11 - db "@" +VermilionCityText12: + TX_ASM + callba Func_f1aa2 + jp TextScriptEnd -VermilionCityText12: ; 1994c (6:594c) - TX_FAR _VermilionCityText12 - db "@" +VermilionCityText13: ; 19947 (6:5947) + TX_ASM + callba Func_f1aae + jp TextScriptEnd -VermilionCityText13: ; 19951 (6:5951) - TX_FAR _VermilionCityText13 - db "@" +VermilionCityText14: ; 1994c (6:594c) + TX_ASM + callba Func_f1aba + jp TextScriptEnd + +VermilionCityText7: ; 19951 (6:5951) + TX_ASM + callba Func_f1a0f + jp TextScriptEnd diff --git a/scripts/vermilioncity2.asm b/scripts/vermilioncity2.asm new file mode 100755 index 00000000..eb7ea37a --- /dev/null +++ b/scripts/vermilioncity2.asm @@ -0,0 +1,111 @@ +Func_f1a0f: + CheckEvent EVENT_GOT_SQUIRTLE_FROM_OFFICER_JENNY + jr nz, .asm_f1a69 + ld a, [wBeatGymFlags] + bit 2, a ; THUNDERBADGE + jr nz, .asm_f1a24 + ld hl, OfficerJennyText1 + call PrintText + ret + +.asm_f1a24 + ld hl, OfficerJennyText2 + call PrintText + call YesNoChoice + ld a, [wCurrentMenuItem] + and a + jr nz, .asm_f1a62 + ld a, SQUIRTLE + ld [wd11e], a + ld [wcf91], a + call GetMonName + ld a, $1 + ld [wDoNotWaitForButtonPressAfterDisplayingText], a + lb bc, SQUIRTLE, 10 + call GivePokemon + ret nc + ld a, [wAddedToParty] + and a + call z, WaitForTextScrollButtonPress + ld a, $1 + ld [wDoNotWaitForButtonPressAfterDisplayingText], a + ld hl, OfficerJennyText3 + call PrintText + SetEvent EVENT_GOT_SQUIRTLE_FROM_OFFICER_JENNY + ret + +.asm_f1a62 + ld hl, OfficerJennyText4 + call PrintText + ret + +.asm_f1a69 + ld hl, OfficerJennyText5 + call PrintText + ret + +OfficerJennyText1: + TX_FAR _OfficerJennyText1 + db "@" + +OfficerJennyText2: + TX_FAR _OfficerJennyText2 + db "@" + +OfficerJennyText3: + TX_FAR _OfficerJennyText3 + db $d + db "@" + +OfficerJennyText4: + TX_FAR _OfficerJennyText4 + db "@" + +OfficerJennyText5: + TX_FAR _OfficerJennyText5 + db "@" + +Func_f1a8a: + ld hl, VermilionCityText_f1a91 + call PrintText + ret + +VermilionCityText_f1a91: + TX_FAR _VermilionCityText8 + db "@" + +Func_f1a96: + ld hl, VermilionCityText_f1a9d + call PrintText + ret + +VermilionCityText_f1a9d: + TX_FAR _VermilionCityText9 + db "@" + +Func_f1aa2: + ld hl, VermilionCityText_f1aa9 + call PrintText + ret + +VermilionCityText_f1aa9: + TX_FAR _VermilionCityText12 + db "@" + +Func_f1aae: + ld hl, VermilionCityText_f1ab5 + call PrintText + ret + +VermilionCityText_f1ab5: + TX_FAR _VermilionCityText13 + db "@" + +Func_f1aba: + ld hl, VermilionCityText_f1ac1 + call PrintText + ret + +VermilionCityText_f1ac1: + TX_FAR _VermilionCityText14 + db "@" diff --git a/scripts/viridiancity.asm b/scripts/viridiancity.asm index ece2c4a1..c20285bc 100755 --- a/scripts/viridiancity.asm +++ b/scripts/viridiancity.asm @@ -1,119 +1,160 @@ -ViridianCityScript: ; 18ff1 (6:4ff1) +ViridianCityScript: ; 1902a (6:502a) call EnableAutoTextBoxDrawing ld hl, ViridianCityScriptPointers ld a, [W_VIRIDIANCITYCURSCRIPT] - jp CallFunctionInTable + call JumpTable + ret -ViridianCityScriptPointers: ; 18ffd (6:4ffd) - dw ViridianCityScript0 - dw ViridianCityScript1 - dw ViridianCityScript2 - dw ViridianCityScript3 +ViridianCityScriptPointers: ; 19037 (6:5037) + dw ViridianCityScript0 ; 1904d + dw ViridianCityScript1 ; 19054 + dw ViridianCityScript2 ; 19057 + dw ViridianCityScript3 ; 190ca + dw ViridianCityScript4 ; 19104 + dw ViridianCityScript5 ; 1913f + dw ViridianCityScript6 ; 1909d + dw ViridianCityScript7 ; 19191 + dw ViridianCityScript8 ; 191a7 + dw ViridianCityScript9 ; 191cf + dw ViridianCityScript10 ; 191f9 + +ViridianCityScript0: + call ViridianCityScript_1905b + call ViridianCityScript_190ab + ret -ViridianCityScript0: ; 19005 (6:5005) - call ViridianCityScript_1900b - jp ViridianCityScript_1903d +ViridianCityScript1: ; 19054 + call ViridianCityScript_19162 +ViridianCityScript2: ; 19057 + call ViridianCityScript_1905b + ret -ViridianCityScript_1900b: ; 1900b (6:500b) +ViridianCityScript_1905b: CheckEvent EVENT_VIRIDIAN_GYM_OPEN ret nz ld a, [wObtainedBadges] - cp %01111111 - jr nz, .asm_1901e + cp $7f ; all but Earthbadge + jr nz, .asm_1906e SetEvent EVENT_VIRIDIAN_GYM_OPEN ret -.asm_1901e + +.asm_1906e ld a, [wYCoord] - cp $8 + cp 8 ret nz ld a, [wXCoord] - cp $20 + cp 32 ret nz - ld a, $e + ld a, $f ld [hSpriteIndexOrTextID], a call DisplayTextID + call StartSimulatingJoypadStates + ld a, $1 + ld [wSimulatedJoypadStatesIndex], a + ld a, D_DOWN + ld [wSimulatedJoypadStatesEnd], a xor a + ld [wSpriteStateData1 + 9], a + ld [wJoyIgnore], a ld [hJoyHeld], a - call ViridianCityScript_190cf - ld a, $3 + ld a, $6 ld [W_VIRIDIANCITYCURSCRIPT], a ret -ViridianCityScript_1903d: ; 1903d (6:503d) - CheckEvent EVENT_GOT_POKEDEX +ViridianCityScript6: ; 1909d + ld a, [wSimulatedJoypadStatesIndex] + and a ret nz + call Delay3 + ld a, $2 + ld [W_VIRIDIANCITYCURSCRIPT], a + ret + +ViridianCityScript_190ab: ld a, [wYCoord] - cp $9 + cp 9 ret nz ld a, [wXCoord] - cp $13 + cp 19 ret nz ld a, $5 ld [hSpriteIndexOrTextID], a call DisplayTextID xor a ld [hJoyHeld], a - call ViridianCityScript_190cf - ld a, $3 + call ViridianCityScript_1914d + ld a, $5 ld [W_VIRIDIANCITYCURSCRIPT], a ret -ViridianCityScript1: ; 19062 (6:5062) - ld a, [wSpriteStateData1 + $34] - ld [$ffeb], a - ld a, [wSpriteStateData1 + $36] - ld [$ffec], a - ld a, [wSpriteStateData2 + $34] - ld [$ffed], a - ld a, [wSpriteStateData2 + $35] - ld [$ffee], a +ViridianCityScript3: ; 190ca + call ViridianCityScript_190ef + call ViridianCityScript_190db + ResetEvent EVENT_02F + ld a, $4 + ld [W_VIRIDIANCITYCURSCRIPT], a + ret + +ViridianCityScript_190db: xor a ld [wListScrollOffset], a - - ; set up battle for Old Man - ld a, $1 + ld a, OLD_MAN_BATTLE ld [wBattleType], a ld a, 5 ld [wCurEnemyLVL], a - ld a, WEEDLE + ld a, RATTATA ld [wCurOpponent], a - ld a, $2 - ld [W_VIRIDIANCITYCURSCRIPT], a ret -ViridianCityScript2: ; 1908f (6:508f) - ld a, [$ffeb] - ld [wSpriteStateData1 + $34], a - ld a, [$ffec] - ld [wSpriteStateData1 + $36], a - ld a, [$ffed] - ld [wSpriteStateData2 + $34], a - ld a, [$ffee] - ld [wSpriteStateData2 + $35], a +ViridianCityScript_190ef: + ld a, [wSpriteStateData1 + 3 * $10 + 4] + ld [$ffeb], a + ld a, [wSpriteStateData1 + 3 * $10 + 6] + ld [$ffec], a + ld a, [wSpriteStateData2 + 3 * $10 + 4] + ld [$ffed], a + ld a, [wSpriteStateData2 + 3 * $10 + 5] + ld [$ffee], a + ret + +ViridianCityScript4: ; 19104 + call ViridianCityScript_1912a call UpdateSprites call Delay3 + SetEvent EVENT_02E xor a ld [wJoyIgnore], a - ld a, $f + ld a, $10 ld [hSpriteIndexOrTextID], a call DisplayTextID xor a ld [wBattleType], a ld [wJoyIgnore], a - ld a, $0 + ld a, $2 ld [W_VIRIDIANCITYCURSCRIPT], a ret -ViridianCityScript3: ; 190c1 (6:50c1) +ViridianCityScript_1912a: + ld a, [$ffeb] + ld [wSpriteStateData1 + 3 * $10 + 4], a + ld a, [$ffec] + ld [wSpriteStateData1 + 3 * $10 + 6], a + ld a, [$ffed] + ld [wSpriteStateData2 + 3 * $10 + 4], a + ld a, [$ffee] + ld [wSpriteStateData2 + 3 * $10 + 5], a + ret + +ViridianCityScript5: ; 1913f ld a, [wSimulatedJoypadStatesIndex] and a ret nz call Delay3 - ld a, 0 + ld a, $0 ld [W_VIRIDIANCITYCURSCRIPT], a ret -ViridianCityScript_190cf: ; 190cf (6:50cf) +ViridianCityScript_1914d: call StartSimulatingJoypadStates ld a, $1 ld [wSimulatedJoypadStatesIndex], a @@ -124,203 +165,200 @@ ViridianCityScript_190cf: ; 190cf (6:50cf) ld [wJoyIgnore], a ret -ViridianCityTextPointers: ; 190e4 (6:50e4) - dw ViridianCityText1 - dw ViridianCityText2 - dw ViridianCityText3 - dw ViridianCityText4 - dw ViridianCityText5 - dw ViridianCityText6 - dw ViridianCityText7 - dw ViridianCityText8 - dw ViridianCityText9 - dw ViridianCityText10 - dw MartSignText - dw PokeCenterSignText - dw ViridianCityText13 - dw ViridianCityText14 - dw ViridianCityText15 - -ViridianCityText1: ; 19102 (6:5102) - TX_FAR _ViridianCityText1 - db "@" +ViridianCityScript_19162: + CheckEvent EVENT_02D + ret nz + ld a, [wYCoord] + cp 9 + ret nz + ld a, [wXCoord] + cp 19 + ret nz + ld a, $8 + ld [hSpriteIndexOrTextID], a + ld a, SPRITE_FACING_RIGHT + ld [hSpriteFacingDirection], a + call SetSpriteFacingDirectionAndDelay + ld a, $8 + ld [wSpriteStateData1 + 9], a + ld a, $8 + ld [hSpriteIndexOrTextID], a + call DisplayTextID + ld a, D_UP | D_DOWN | D_LEFT | D_RIGHT | START | SELECT + ld [wJoyIgnore], a + ret -ViridianCityText2: ; 19107 (6:5107) - TX_ASM - ld a, [wObtainedBadges] - cp %01111111 - ld hl, ViridianCityText_19127 - jr z, .asm_ae9fe - CheckEvent EVENT_BEAT_VIRIDIAN_GYM_GIOVANNI - jr nz, .asm_ae9fe - ld hl, ViridianCityText_19122 -.asm_ae9fe - call PrintText - jp TextScriptEnd +ViridianCityScript7: ; 19191 + call ViridianCityScript_190ef + call ViridianCityScript_190db + SetEvent EVENT_02F + ld a, D_UP | D_DOWN | D_LEFT | D_RIGHT | START | SELECT + ld [wJoyIgnore], a + ld a, $8 + ld [W_VIRIDIANCITYCURSCRIPT], a + ret -ViridianCityText_19122: ; 19122 (6:5122) - TX_FAR _ViridianCityText_19122 - db "@" +ViridianCityScript8: ; 191a7 + call ViridianCityScript_1912a + call UpdateSprites + call Delay3 + SetEvent EVENT_02D + ld a, D_UP | D_DOWN | D_LEFT | D_RIGHT | START | SELECT + ld [wJoyIgnore], a + ld a, $8 + ld [hSpriteIndexOrTextID], a + call DisplayTextID + xor a + ld [wBattleType], a + dec a + ld [wJoyIgnore], a + ld a, $9 + ld [W_VIRIDIANCITYCURSCRIPT], a + ret -ViridianCityText_19127: ; 19127 (6:5127) - TX_FAR _ViridianCityText_19127 - db "@" +ViridianCityScript9: ; 191cf + ld de, ViridianCityOldManMovementData2 + ld a, [wXCoord] + cp 19 + jr z, .asm_191e4 + callab Func_f1a01 + ld de, ViridianCityOldManMovementData1 +.asm_191e4 + ld a, $8 + ld [hSpriteIndexOrTextID], a + call MoveSprite + ld a, $a + ld [W_VIRIDIANCITYCURSCRIPT], a + ret + +ViridianCityOldManMovementData1: + db NPC_MOVEMENT_RIGHT +ViridianCityOldManMovementData2: + db NPC_MOVEMENT_DOWN + db NPC_MOVEMENT_DOWN + db NPC_MOVEMENT_DOWN + db NPC_MOVEMENT_DOWN + db NPC_MOVEMENT_DOWN + db NPC_MOVEMENT_DOWN + db $ff + +ViridianCityScript10: ; 191f9 + ld a, [wd730] + bit 0, a + ret nz + ld a, $3 + ld [wMissableObjectIndex], a + predef HideObject + xor a + ld [wJoyIgnore], a + ld a, $2 + ld [W_VIRIDIANCITYCURSCRIPT], a + ret -ViridianCityText3: ; 1912c (6:512c) +ViridianCityTextPointers: + dw ViridianCityText_0 ; 19233 + dw ViridianCityText_1 ; 1923f + dw ViridianCityText_2 ; 1924b + dw ViridianCityText_3 ; 19257 + dw ViridianCityText_4 ; 19263 + dw ViridianCityText_5 ; 1926f + dw ViridianCityText_6 ; 1927b + dw ViridianCityText_7 ; 1928c + dw ViridianCityText_8 ; 192b9 + dw ViridianCityText_9 ; 192c5 + dw ViridianCityText_10 ; 192d1 + dw MartSignText ; 23e5 + dw PokeCenterSignText ; 23ea + dw ViridianCityText_11 ; 192dd + dw ViridianCityText_12 ; 192e9 + dw ViridianCityText_13 ; 19287 + +ViridianCityText_0: TX_ASM - ld hl, ViridianCityText_1914d - call PrintText - call YesNoChoice - ld a, [wCurrentMenuItem] - and a - jr nz, .asm_6dfea - ld hl, ViridianCityText_19157 - call PrintText - jr .asm_d611f -.asm_6dfea - ld hl, ViridianCityText_19152 - call PrintText -.asm_d611f + callba Func_f18bb jp TextScriptEnd -ViridianCityText_1914d: ; 1914d (6:514d) - TX_FAR _ViridianCityText_1914d - db "@" - -ViridianCityText_19152: ; 19152 (6:5152) - TX_FAR _ViridianCityText_19152 - db "@" - -ViridianCityText_19157: ; 19157 (6:5157) - TX_FAR _ViridianCityText_19157 - db "@" - -ViridianCityText4: ; 1915c (6:515c) +ViridianCityText_1: TX_ASM - CheckEvent EVENT_GOT_POKEDEX - jr nz, .asm_83894 - ld hl, ViridianCityText_19175 - call PrintText - jr .asm_700a6 -.asm_83894 - ld hl, ViridianCityText_1917a - call PrintText -.asm_700a6 + callba Func_f18c7 jp TextScriptEnd -ViridianCityText_19175: ; 19175 (6:5175) - TX_FAR _ViridianCityText_19175 - db "@" - -ViridianCityText_1917a: ; 1917a (6:517a) - TX_FAR _ViridianCityText_1917a - db "@" - -ViridianCityText5: ; 1917f (6:517f) +ViridianCityText_2: TX_ASM - ld hl, ViridianCityText_19191 - call PrintText - call ViridianCityScript_190cf - ld a, $3 - ld [W_VIRIDIANCITYCURSCRIPT], a + callba Func_f18e9 jp TextScriptEnd -ViridianCityText_19191: ; 19191 (6:5191) - TX_FAR _ViridianCityText_19191 - db "@" - -ViridianCityText6: ; 19196 (6:5196) +ViridianCityText_3: TX_ASM - CheckEvent EVENT_GOT_TM42 - jr nz, .asm_4e5a0 - ld hl, ViridianCityText_191ca - call PrintText - lb bc, TM_42, 1 - call GiveItem - jr nc, .BagFull - ld hl, ReceivedTM42Text - call PrintText - SetEvent EVENT_GOT_TM42 - jr .asm_3c73c -.BagFull - ld hl, TM42NoRoomText - call PrintText - jr .asm_3c73c -.asm_4e5a0 - ld hl, TM42Explanation - call PrintText -.asm_3c73c + callba Func_f1911 jp TextScriptEnd -ViridianCityText_191ca: ; 191ca (6:51ca) - TX_FAR _ViridianCityText_191ca - db "@" +ViridianCityText_4: + TX_ASM + callba Func_f192c + jp TextScriptEnd -ReceivedTM42Text: ; 191cf (6:51cf) - TX_FAR _ReceivedTM42Text - db $10, "@" +ViridianCityText_5: + TX_ASM + callba Func_f194a + jp TextScriptEnd -TM42Explanation: ; 191d5 (6:51d5) - TX_FAR _TM42Explanation - db "@" +ViridianCityText_6: + TX_ASM + callba Func_f198e + jp TextScriptEnd -TM42NoRoomText: ; 191da (6:51da) - TX_FAR _TM42NoRoomText +ViridianCityText_13: + TX_FAR _ViridianCityText_19219 db "@" -ViridianCityText7: ; 191df (6:51df) +ViridianCityText_7: TX_ASM - ld hl, ViridianCityText_1920a + CheckEvent EVENT_02D + jr nz, .asm_192a6 + ld hl, ViridianCityText_192af call PrintText ld c, 2 call DelayFrames - call YesNoChoice - ld a, [wCurrentMenuItem] - and a - jr z, .asm_42f68 - ld hl, ViridianCityText_1920f - call PrintText - ld a, $1 + ld a, $7 ld [W_VIRIDIANCITYCURSCRIPT], a - jr .asm_2413a -.asm_42f68 - ld hl, ViridianCityText_19214 + jr .asm_192ac + +.asm_192a6 + ld hl, ViridianCityText_192b4 call PrintText -.asm_2413a +.asm_192ac jp TextScriptEnd -ViridianCityText_1920a: ; 1920a (6:520a) +ViridianCityText_192af: TX_FAR _ViridianCityText_1920a db "@" -ViridianCityText_1920f: ; 1920f (6:520f) - TX_FAR _ViridianCityText_1920f - db "@" - -ViridianCityText_19214: ; 19214 (6:5214) - TX_FAR _ViridianCityText_19214 +ViridianCityText_192b4: + TX_FAR _OldManTextAfterBattle db "@" -ViridianCityText15: ; 19219 (6:5219) - TX_FAR _ViridianCityText_19219 - db "@" - -ViridianCityText8: ; 1921e (6:521e) - TX_FAR _ViridianCityText8 - db "@" +ViridianCityText_8: + TX_ASM + callba Func_f19c5 + jp TextScriptEnd -ViridianCityText9: ; 19223 (6:5223) - TX_FAR _ViridianCityText9 - db "@" +ViridianCityText_9: + TX_ASM + callba Func_f19d1 + jp TextScriptEnd -ViridianCityText10: ; 19228 (6:5228) - TX_FAR _ViridianCityText10 - db "@" +ViridianCityText_10: + TX_ASM + callba Func_f19dd + jp TextScriptEnd -ViridianCityText13: ; 1922d (6:522d) - TX_FAR _ViridianCityText13 - db "@" +ViridianCityText_11: + TX_ASM + callba Func_f19e9 + jp TextScriptEnd -ViridianCityText14: ; 19232 (6:5232) - TX_FAR _ViridianCityText14 - db "@" +ViridianCityText_12: + TX_ASM + callba Func_f19f5 + jp TextScriptEnd diff --git a/scripts/viridiancity2.asm b/scripts/viridiancity2.asm new file mode 100755 index 00000000..80ae3924 --- /dev/null +++ b/scripts/viridiancity2.asm @@ -0,0 +1,218 @@ +Func_f18bb: + ld hl, ViridianCityText_f18c2 + call PrintText + ret + +ViridianCityText_f18c2: + TX_FAR _ViridianCityText1 + db "@" + +Func_f18c7: + ld hl, ViridianCityText_f18e4 + ld a, [wObtainedBadges] + cp $7f ; all but EARTHBADGE + jr z, .asm_f18db + CheckEvent EVENT_BEAT_VIRIDIAN_GYM_GIOVANNI + jr nz, .asm_f18db + ld hl, ViridianCityText_f18df +.asm_f18db + call PrintText + ret + +ViridianCityText_f18df: + TX_FAR _ViridianCityText_19122 + db "@" + +ViridianCityText_f18e4: + TX_FAR _ViridianCityText_19127 + db "@" + +Func_f18e9: + ld hl, ViridianCityText_f1902 + call PrintText + call YesNoChoice + ld a, [wCurrentMenuItem] + and a + ld hl, ViridianCityText_f1907 + jr nz, .asm_f18fe + ld hl, ViridianCityText_f190c +.asm_f18fe + call PrintText + ret + +ViridianCityText_f1902: + TX_FAR _ViridianCityText_1914d + db "@" + +ViridianCityText_f1907: + TX_FAR _ViridianCityText_19152 + db "@" + +ViridianCityText_f190c: + TX_FAR _ViridianCityText_19157 + db "@" + +Func_f1911: + ld hl, ViridianCityText_f1927 + CheckEvent EVENT_GOT_POKEDEX + jr nz, .asm_f191e + ld hl, ViridianCityText_f1922 +.asm_f191e + call PrintText + ret + +ViridianCityText_f1922: + TX_FAR _ViridianCityText_19175 + db "@" + +ViridianCityText_f1927: + TX_FAR _ViridianCityText_1917a + db "@" + +Func_f192c: + ld hl, ViridianCityText_f1945 + call PrintText + call StartSimulatingJoypadStates + ld a, $1 + ld [wSimulatedJoypadStatesIndex], a + ld a, D_DOWN + ld [wSimulatedJoypadStatesEnd], a + ld a, $5 + ld [W_VIRIDIANCITYCURSCRIPT], a + ret + +ViridianCityText_f1945: + TX_FAR _ViridianCityText_19191 + db "@" + +Func_f194a: + CheckEvent EVENT_GOT_TM42 + jr nz, .asm_f1972 + ld hl, ViridianCityText_f1979 + call PrintText + lb bc, TM_42, 1 + call GiveItem + jr nc, .asm_f196b + ld hl, ViridianCityText_f197e + call PrintText + SetEvent EVENT_GOT_TM42 + ret + +.asm_f196b + ld hl, ViridianCityText_f1989 + call PrintText + ret + +.asm_f1972 + ld hl, ViridianCityText_f1984 + call PrintText + ret + +ViridianCityText_f1979: + TX_FAR _ViridianCityText_191ca + db "@" + +ViridianCityText_f197e: + TX_FAR _ReceivedTM42Text + TX_SFX_CONGRATS + db "@" + +ViridianCityText_f1984: + TX_FAR _TM42Explanation + db "@" + +ViridianCityText_f1989: + TX_FAR _TM42NoRoomText + db "@" + +Func_f198e: + ld hl, ViridianCityText_f19b6 + call PrintText + ld c, 2 + call DelayFrames + call YesNoChoice + ld a, [wCurrentMenuItem] + and a + jr nz, .asm_f19af + ld hl, ViridianCityText_f19bb + call PrintText + ld a, $3 + ld [W_VIRIDIANCITYCURSCRIPT], a + jr .asm_f19b5 + +.asm_f19af + ld hl, ViridianCityText_f19c0 + call PrintText +.asm_f19b5 + ret + +ViridianCityText_f19b6: + TX_FAR _OldManAgainText1 + db "@" + +ViridianCityText_f19bb: + TX_FAR _OldManAgainText2 + db "@" + +ViridianCityText_f19c0: + TX_FAR _OldManAgainText3 + db "@" + +Func_f19c5: + ld hl, ViridianCityText_f19cc + call PrintText + ret + +ViridianCityText_f19cc: + TX_FAR _ViridianCityText8 + db "@" + +Func_f19d1: + ld hl, ViridianCityText_f19d8 + call PrintText + ret + +ViridianCityText_f19d8: + TX_FAR _ViridianCityText9 + db "@" + +Func_f19dd: + ld hl, ViridianCityText_f19e4 + call PrintText + ret + +ViridianCityText_f19e4: + TX_FAR _ViridianCityText10 + db "@" + +Func_f19e9: + ld hl, ViridianCityText_f19f0 + call PrintText + ret + +ViridianCityText_f19f0: + TX_FAR _ViridianCityText13 + db "@" + +Func_f19f5: + ld hl, ViridianCityText_f19fc + call PrintText + ret + +ViridianCityText_f19fc: + TX_FAR _ViridianCityText14 + db "@" + + +Func_f1a01: + ld hl, Data_f1a0a + ld b, SPRITE_FACING_RIGHT + call Func_f0a82 + ret + +Data_f1a0a: + db $00 + db $1d + db $1f + db $38 + db $3f diff --git a/scripts/viridianforest.asm b/scripts/viridianforest.asm index 892eeef2..8ac0d8a8 100755 --- a/scripts/viridianforest.asm +++ b/scripts/viridianforest.asm @@ -17,16 +17,18 @@ ViridianForestTextPointers: ; 61126 (18:5126) dw ViridianForestText2 dw ViridianForestText3 dw ViridianForestText4 + dw ViridianForestText5 + dw ViridianForestText6 dw PickUpItemText dw PickUpItemText dw PickUpItemText - dw ViridianForestText8 - dw ViridianForestText9 dw ViridianForestText10 dw ViridianForestText11 dw ViridianForestText12 dw ViridianForestText13 dw ViridianForestText14 + dw ViridianForestText15 + dw ViridianForestText16 ViridianForestTrainerHeaders: ; 61142 (18:5142) ViridianForestTrainerHeader0: ; 61142 (18:5142) @@ -56,6 +58,24 @@ ViridianForestTrainerHeader2: ; 6115a (18:515a) dw ViridianForestEndBattleText3 ; TextEndBattle dw ViridianForestEndBattleText3 ; TextEndBattle +ViridianForestTrainerHeader3: + dbEventFlagBit EVENT_BEAT_VIRIDIAN_FOREST_TRAINER_3 + db ($0 << 4) ; trainer's view range + dwEventFlagAddress EVENT_BEAT_VIRIDIAN_FOREST_TRAINER_3 + dw ViridianForestBattleText4 ; TextBeforeBattle + dw ViridianForestAfterBattleText4 ; TextAfterBattle + dw ViridianForestEndBattleText4 ; TextEndBattle + dw ViridianForestEndBattleText4 ; TextEndBattle + +ViridianForestTrainerHeader4: + dbEventFlagBit EVENT_BEAT_VIRIDIAN_FOREST_TRAINER_4 + db ($4 << 4) ; trainer's view range + dwEventFlagAddress EVENT_BEAT_VIRIDIAN_FOREST_TRAINER_4 + dw ViridianForestBattleText5 ; TextBeforeBattle + dw ViridianForestAfterBattleText5 ; TextAfterBattle + dw ViridianForestEndBattleText5 ; TextEndBattle + dw ViridianForestEndBattleText5 ; TextEndBattle + db $ff ViridianForestText1: ; 61167 (18:5167) @@ -65,18 +85,27 @@ ViridianForestText1: ; 61167 (18:5167) ViridianForestText2: ; 6116c (18:516c) TX_ASM ld hl, ViridianForestTrainerHeader0 - call TalkToTrainer - jp TextScriptEnd + jr ViridianForestTalkToTrainer ViridianForestText3: ; 61176 (18:5176) TX_ASM ld hl, ViridianForestTrainerHeader1 - call TalkToTrainer - jp TextScriptEnd + jr ViridianForestTalkToTrainer ViridianForestText4: ; 61180 (18:5180) TX_ASM ld hl, ViridianForestTrainerHeader2 + jr ViridianForestTalkToTrainer + +ViridianForestText5: + TX_ASM + ld hl, ViridianForestTrainerHeader3 + jr ViridianForestTalkToTrainer + +ViridianForestText6: + TX_ASM + ld hl, ViridianForestTrainerHeader4 +ViridianForestTalkToTrainer: call TalkToTrainer jp TextScriptEnd @@ -116,30 +145,63 @@ ViridianForestAfterBattleText3: ; 611b2 (18:51b2) TX_FAR _ViridianFrstAfterBattleText3 db "@" -ViridianForestText8: ; 611b7 (18:51b7) - TX_FAR _ViridianForestText8 +ViridianForestBattleText4: ; 611a8 (18:51a8) + TX_FAR _ViridianForestBattleTextPikaGirl db "@" -ViridianForestText9: ; 611bc (18:51bc) - TX_FAR _ViridianForestText9 +ViridianForestEndBattleText4: ; 611ad (18:51ad) + TX_FAR _ViridianForestEndBattleTextPikaGirl db "@" -ViridianForestText10: ; 611c1 (18:51c1) - TX_FAR _ViridianForestText10 +ViridianForestAfterBattleText4: ; 611b2 (18:51b2) + TX_FAR _ViridianForestAfterBattleTextPikaGirl db "@" -ViridianForestText11: ; 611c6 (18:51c6) - TX_FAR _ViridianForestText11 +ViridianForestBattleText5: ; 611a8 (18:51a8) + TX_FAR _ViridianForestBattleTextSamurai db "@" -ViridianForestText12: ; 611cb (18:51cb) - TX_FAR _ViridianForestText12 +ViridianForestEndBattleText5: ; 611ad (18:51ad) + TX_FAR _ViridianForestEndBattleTextSamurai db "@" -ViridianForestText13: ; 611d0 (18:51d0) - TX_FAR _ViridianForestText13 +ViridianForestAfterBattleText5: ; 611b2 (18:51b2) + TX_FAR _ViridianForestAfterBattleTextSamurai db "@" -ViridianForestText14: ; 611d5 (18:51d5) - TX_FAR _ViridianForestText14 +ViridianForestText10: ; 611b7 (18:51b7) + TX_FAR _ViridianForestText8 db "@" + +ViridianForestText11: ; 611bc (18:51bc) + TX_ASM + ld hl, Func_f2528 + jp ViridianForestScript_6120d + +ViridianForestText12: ; 611c1 (18:51c1) + TX_ASM + ld hl, Func_f2534 + jp ViridianForestScript_6120d + +ViridianForestText13: ; 611c6 (18:51c6) + TX_ASM + ld hl, Func_f2540 + jp ViridianForestScript_6120d + +ViridianForestText14: ; 611cb (18:51cb) + TX_ASM + ld hl, Func_f254c + jp ViridianForestScript_6120d + +ViridianForestText15: ; 611d0 (18:51d0) + TX_ASM + ld hl, Func_f2558 + jp ViridianForestScript_6120d + +ViridianForestText16: ; 611d5 (18:51d5) + TX_ASM + ld hl, Func_f2528 +ViridianForestScript_6120d + ld b, BANK(Func_f2528) + call Bankswitch + jp TextScriptEnd diff --git a/scripts/viridianforest2.asm b/scripts/viridianforest2.asm new file mode 100755 index 00000000..489db39c --- /dev/null +++ b/scripts/viridianforest2.asm @@ -0,0 +1,53 @@ +Func_f2528: + ld hl, Text_f252f + call PrintText + ret + +Text_f252f: + TX_FAR _ViridianForestText9 + db "@" + +Func_f2534: + ld hl, Text_f253b + call PrintText + ret + +Text_f253b: + TX_FAR _ViridianForestText10 + db "@" + +Func_f2540: + ld hl, Text_f254a + call PrintText + ret + +Text_f254a: + TX_FAR _ViridianForestText11 + db "@" + +Func_f254c: + ld hl, Text_f2553 + call PrintText + ret + +Text_f2553: + TX_FAR _ViridianForestText12 + db "@" + +Func_f2558: + ld hl, Text_f255f + call PrintText + ret + +Text_f255f: + TX_FAR _ViridianForestText13 + db "@" + +Func_f2564: + ld hl, ViridianForestText_f256b + call PrintText + ret + +ViridianForestText_f256b: + TX_FAR _ViridianForestText14 + db "@" diff --git a/scripts/viridianforestentrance.asm b/scripts/viridianforestentrance.asm index 14b6cf49..dcfa03ba 100755 --- a/scripts/viridianforestentrance.asm +++ b/scripts/viridianforestentrance.asm @@ -1,5 +1,6 @@ ViridianForestEntranceScript: ; 5d65c (17:565c) - jp EnableAutoTextBoxDrawing + call EnableAutoTextBoxDrawing + ret ViridianForestEntranceTextPointers: ; 5d65f (17:565f) dw ViridianForestEntranceText1 diff --git a/scripts/viridianmart.asm b/scripts/viridianmart.asm index 4f4b2875..05e566fb 100755 --- a/scripts/viridianmart.asm +++ b/scripts/viridianmart.asm @@ -3,7 +3,8 @@ ViridianMartScript: ; 1d46e (7:546e) call EnableAutoTextBoxDrawing ld hl, ViridianMartScriptPointers ld a, [W_VIRIDIANMARKETCURSCRIPT] - jp CallFunctionInTable + call JumpTable + ret ViridianMartScript_1d47d: ; 1d47d (7:547d) CheckEvent EVENT_OAK_GOT_PARCEL @@ -57,8 +58,19 @@ ViridianMartScript1: ; 1d4c0 (7:54c0) SetEvent EVENT_GOT_OAKS_PARCEL ld a, $2 ld [W_VIRIDIANMARKETCURSCRIPT], a - ; fallthrough + ret + ViridianMartScript2: ; 1d4df (7:54df) + CheckEventHL EVENT_02D + ret z + CheckAndSetEventReuseHL EVENT_02C + ret nz + ld a, HS_OLD_MAN + ld [wMissableObjectIndex], a + predef HideObject + ld a, HS_OLD_MAN_1 + ld [wMissableObjectIndex], a + predef ShowObject ret ViridianMartTextPointers: ; 1d4e0 (7:54e0) diff --git a/scripts/viridianpokecenter.asm b/scripts/viridianpokecenter.asm index ae5e32c8..f8aed602 100755 --- a/scripts/viridianpokecenter.asm +++ b/scripts/viridianpokecenter.asm @@ -7,6 +7,7 @@ ViridianPokecenterTextPointers: ; 44263 (11:4263) dw ViridianPokeCenterText2 dw ViridianPokeCenterText3 dw ViridianPokeCenterText4 + dw ViridianPokeCenterText5 ViridianPokeCenterText1: ; 4426b (11:426b) db $ff @@ -21,3 +22,8 @@ ViridianPokeCenterText3: ; 44271 (11:4271) ViridianPokeCenterText4: ; 44276 (11:4276) db $f6 + +ViridianPokeCenterText5: + TX_ASM + callab Func_f0f12 + jp TextScriptEnd |