Finishing Silph Co. 11F

That's a fair chunk out of my day...

This commit finishes everything about Silph Co. 11F. DON'T. TOUCH IT. Unless there's a bug, but OTHERWISE, do NOT touch it. Holy shit.

Here's everything featured;
- Jessie and James fight, ported over.
- Rocket grunt changed to the appointment one from the strange room on the other side that really shouldn't be there tbh
- Omega fight now doesn't have the "watch out" text as I needed to do a micro-optimisation TRUST ME it was NECESSARY (it was not, in fact, necessary)
- Giovanni now reuses Beedrill and has a generally stronger team, scaling with the fifth Rival fight.
- Omega refight has been added after some toiling with the Team Rocket intro text that absolutely should not have happened but did for some reason AAA
- Rocket trio text somewhat tweaked

Oh and I ported over the balance patch on the stats, including some neo-Cryithan onboarding.
This commit is contained in:
Llinos Evans 2023-07-09 11:43:32 +01:00
parent e2901cd854
commit 0659fb1c65
17 changed files with 514 additions and 161 deletions

View file

@ -771,7 +771,10 @@
const_skip 5 const_skip 5
const EVENT_BEAT_SILPH_CO_10F_TRAINER_0 const EVENT_BEAT_SILPH_CO_10F_TRAINER_0
const EVENT_BEAT_SILPH_CO_10F_TRAINER_1 const EVENT_BEAT_SILPH_CO_10F_TRAINER_1
const_skip 5 const_skip 2
const EVENT_780 ; jessie and james
const EVENT_781 ; jessie and james
const EVENT_782 ; jessie and james
const EVENT_SILPH_CO_10_UNLOCKED_DOOR const EVENT_SILPH_CO_10_UNLOCKED_DOOR
const_skip 11 const_skip 11
const EVENT_BEAT_SILPH_CO_11F_TRAINER_0 const EVENT_BEAT_SILPH_CO_11F_TRAINER_0

View file

@ -199,9 +199,11 @@ DEF SHOW EQU $15
const HS_SILPH_CO_10F_ITEM_2 ; BA X best deck const HS_SILPH_CO_10F_ITEM_2 ; BA X best deck
const HS_SILPH_CO_10F_ITEM_3 ; BB X const HS_SILPH_CO_10F_ITEM_3 ; BB X
const HS_SILPH_CO_11F_1 ; BC const HS_SILPH_CO_11F_1 ; BC
const HS_SILPH_CO_11F_2 ; BD const HS_SILPH_CO_11F_JAMES ; BD
const HS_SILPH_CO_11F_3 ; BE const HS_SILPH_CO_11F_3 ; BE
const HS_SILPH_CO_11F_JESSIE ; BD
const HS_OMEGA ; BF const HS_OMEGA ; BF
const HS_OMEGA_2
const HS_DRAGONITE ; C0 const HS_DRAGONITE ; C0
const HS_MOLTRES ; C1 const HS_MOLTRES ; C1
const HS_POKEMON_MANSION_2F_ITEM ; C2 X const HS_POKEMON_MANSION_2F_ITEM ; C2 X
@ -260,5 +262,5 @@ DEF SHOW EQU $15
const HS_ROCK_TUNNEL_B1F_AMBER ; F8 const HS_ROCK_TUNNEL_B1F_AMBER ; F8
const HS_ROCK_TUNNEL_B1F_WING ; F9 const HS_ROCK_TUNNEL_B1F_WING ; F9
const HS_MT_MOON_CRATER_GUARD ; FA const HS_MT_MOON_CRATER_GUARD ; FA
const HS_DAYCARE_BULBASAUR ; FB const HS_DAYCARE_BULBASAUR ; FB should be FD
DEF NUM_HS_OBJECTS EQU const_value DEF NUM_HS_OBJECTS EQU const_value

View file

@ -522,10 +522,12 @@ SilphCo10FHS:
db SILPH_CO_10F, $04, SHOW ; HS_SILPH_CO_10F_ITEM_1 db SILPH_CO_10F, $04, SHOW ; HS_SILPH_CO_10F_ITEM_1
db SILPH_CO_10F, $05, SHOW ; HS_SILPH_CO_10F_ITEM_2 db SILPH_CO_10F, $05, SHOW ; HS_SILPH_CO_10F_ITEM_2
SilphCo11FHS: SilphCo11FHS:
db SILPH_CO_11F, $03, SHOW ; HS_SILPH_CO_11F_1 db SILPH_CO_11F, $03, SHOW ; Giovanni
db SILPH_CO_11F, $04, SHOW ; HS_SILPH_CO_11F_2 db SILPH_CO_11F, $04, SHOW ; James
db SILPH_CO_11F, $05, SHOW ; HS_SILPH_CO_11F_3 db SILPH_CO_11F, $05, SHOW ; Rocket
db SILPH_CO_11F, $06, SHOW ; HS_OMEGA db SILPH_CO_11F, $06, SHOW ; James
db SILPH_CO_11F, $07, SHOW ; HS_OMEGA
db SILPH_CO_11F, $08, HIDE ; HS_OMEGA_2
UnderwaterTunnelHS: UnderwaterTunnelHS:
db UNDERWATER_TUNNEL, $01, SHOW ; HS_DRAGONITE db UNDERWATER_TUNNEL, $01, SHOW ; HS_DRAGONITE
CinnabarVolcanoHS: CinnabarVolcanoHS:

View file

@ -4,12 +4,12 @@ RedsHouse2F_Object:
def_warp_events def_warp_events
warp_event 7, 1, REDS_HOUSE_1F, 3 warp_event 7, 1, REDS_HOUSE_1F, 3
;warp_event 5, 1, SILPH_GAUNTLET_7F, 1 ; - Test Chief ;warp_event 5, 1, SILPH_GAUNTLET_7F, 1 ; - Test Chief
;warp_event 5, 1, SILPH_CO_11F, 1 ; - Test J&J, Omega, & Giovanni warp_event 5, 1, SILPH_CO_11F, 2 ; - Test J&J, Omega, & Giovanni. To test the Omega refight, change to SHOW in hide/show data, and set warp ID to 1.
;warp_event 5, 1, ROCKET_HIDEOUT_B4F, 2 ; - Test Giovanni 1 ;warp_event 5, 1, ROCKET_HIDEOUT_B4F, 2 ; - Test Giovanni 1
;warp_event 5, 1, MT_MOON_SQUARE, 1 ; - Test Shop, NPCs, and Crater ;warp_event 5, 1, MT_MOON_SQUARE, 1 ; - Test Shop, NPCs, and Crater
;warp_event 5, 1, CELESTE_HILL, 1 ; - Test GMolt ;warp_event 5, 1, CELESTE_HILL, 1 ; - Test GMolt
;warp_event 5, 1, INDIGO_PLATEAU_LOBBY, 1 ; easy league access ;warp_event 5, 1, INDIGO_PLATEAU_LOBBY, 1 ; easy league access
warp_event 5, 1, GARNET_CAVERN_B1F, 1 ; Test GCuno ;warp_event 5, 1, GARNET_CAVERN_B1F, 1 ; Test GCuno
;warp_event 5, 1, FARAWAY_ISLAND_INSIDE, 1 ; Test Mew ;warp_event 5, 1, FARAWAY_ISLAND_INSIDE, 1 ; Test Mew
def_bg_events def_bg_events

View file

@ -13,8 +13,10 @@ SilphCo11F_Object:
object_event 7, 5, SPRITE_SILPH_PRESIDENT, STAY, DOWN, 1 ; person object_event 7, 5, SPRITE_SILPH_PRESIDENT, STAY, DOWN, 1 ; person
object_event 10, 5, SPRITE_BEAUTY, STAY, DOWN, 2 ; person object_event 10, 5, SPRITE_BEAUTY, STAY, DOWN, 2 ; person
object_event 6, 9, SPRITE_GIOVANNI, STAY, DOWN, 3, OPP_GIOVANNI, 2 object_event 6, 9, SPRITE_GIOVANNI, STAY, DOWN, 3, OPP_GIOVANNI, 2
object_event 3, 16, SPRITE_ROCKET, STAY, UP, 4, OPP_ROCKET, 41 object_event 2, 8, SPRITE_JAMES, STAY, UP, 4
object_event 15, 9, SPRITE_ROCKET, STAY, UP, 5, OPP_ROCKET, 40 object_event 3, 16, SPRITE_ROCKET, STAY, UP, 5, OPP_ROCKET, 41
object_event 6, 11, SPRITE_MONSTER, STAY, UP, 7, OMEGA, 45 | OW_POKEMON object_event 3, 8, SPRITE_JESSIE, STAY, UP, 6
object_event 6, 11, SPRITE_MONSTER, STAY, UP, 11, OMEGA, 45 | OW_POKEMON
object_event 15, 15, SPRITE_MONSTER, STAY, UP, 12, OMEGA, 75 | OW_POKEMON
def_warps_to SILPH_CO_11F def_warps_to SILPH_CO_11F

View file

@ -3,7 +3,7 @@
db 72, 53, 46, 98, 81 db 72, 53, 46, 98, 81
; hp atk def spd spc ; hp atk def spd spc
db WATER, WATER ; type db DRAGON, DRAGON ; type
db 45 ; catch rate db 45 ; catch rate
db 144 ; base exp db 144 ; base exp

View file

@ -1,9 +1,9 @@
db DEX_CRYITHAN ; pokedex id db DEX_CRYITHAN ; pokedex id
db 92, 83, 76, 118, 101 db 92, 93, 76, 108, 121
; hp atk def spd spc ; hp atk def spd spc
db WATER, DRAGON ; type db DRAGON, DRAGON ; type
db 9 ; catch rate db 9 ; catch rate
db 210 ; base exp db 210 ; base exp

View file

@ -1,6 +1,6 @@
db DEX_GYAOON ; pokedex id db DEX_GYAOON ; pokedex id
db 101, 110, 100, 30, 95 db 101, 124, 100, 30, 95
; hp atk def spd spc ; hp atk def spd spc
db ROCK, ROCK ; type db ROCK, ROCK ; type

View file

@ -1,6 +1,6 @@
db DEX_OMEGA ; pokedex id db DEX_OMEGA ; pokedex id
db 101, 100, 120, 25, 95 db 101, 106, 120, 25, 95
; hp atk def spd spc ; hp atk def spd spc
db STEEL, STEEL ; type db STEEL, STEEL ; type

View file

@ -3,7 +3,7 @@
db 62, 43, 36, 88, 71 db 62, 43, 36, 88, 71
; hp atk def spd spc ; hp atk def spd spc
db WATER, WATER ; type db DRAGON, DRAGON ; type
db 60 ; catch rate db 60 ; catch rate
db 67 ; base exp db 67 ; base exp

View file

@ -1,6 +1,6 @@
db DEX_TRAMPEL ; pokedex id db DEX_TRAMPEL ; pokedex id
db 130, 100, 90, 56, 64 db 110, 100, 90, 56, 64
; hp atk def spd spc ; hp atk def spd spc
db NORMAL, GROUND ; type db NORMAL, GROUND ; type

View file

@ -739,11 +739,11 @@ JackData:
db 70, ANIMON, PURAKKUSU, HITMONLEE, PORYGON2, HITMONCHAN, SCIZOR, 0 ; not 100% sure what to do with this guy... db 70, ANIMON, PURAKKUSU, HITMONLEE, PORYGON2, HITMONCHAN, SCIZOR, 0 ; not 100% sure what to do with this guy...
JessieJamesData: JessieJamesData:
db 14, EKANS, MEOWTH, KOFFING, 0 ; Mt. Moon db 14, MEOWTH, EKANS, KOFFING, 0 ; Mt. Moon
db 25, KOFFING, LICKITUNG, MEOWTH, EKANS, 0 ; Rocket Hideout db 25, MEOWTH, EKANS, LICKITUNG, KOFFING, 0 ; Rocket Hideout
db 27, MEOWTH, LICKITUNG, ARBOK, VICTREEBEL, WEEZING, 0 ; Pokemon Tower db 27, MEOWTH, LICKITUNG, ARBOK, VICTREEBEL, WEEZING, 0 ; Pokemon Tower
db 31, WEEZING, ARBOK, LICKITUNG, VICTREEBEL, GYARADOS, MEOWTH, 0 ; Silph Co. db 37, MEOWTH, LICKITUNG, ARBOK, VICTREEBEL, WEEZING, GYARADOS, 0 ; Silph Co.
db $FF, 80, MEOWTH, 72, ARBOK, 71, WEEZING, 74, LICKILICKY, 74, VICTREEBEL, 74, GYARADOS, 0 ; Citrine Rocket House db $FF, 80, MEOWTH, 72, LICKILICKY, 72, ARBOK, 71, VICTREEBEL, 74, WEEZING, 76, GYARADOS, 0 ; Citrine Rocket House
INCLUDE "data/trainers/scaled_parties.asm" INCLUDE "data/trainers/scaled_parties.asm"
INCLUDE "data/trainers/rival_parties.asm" INCLUDE "data/trainers/rival_parties.asm"

View file

@ -79,8 +79,8 @@ SabrinaData:
GiovanniData: ; is not scaled as he is always fought last GiovanniData: ; is not scaled as he is always fought last
; Rocket Hideout B4F ; Rocket Hideout B4F
db $FF, 30, BEEDRILL, 32, RHYHORN, 32, KANGASKHAN, 34, PERSIAN, 0 db $FF, 30, BEEDRILL, 32, RHYHORN, 32, KANGASKHAN, 34, PERSIAN, 0
; Silph Co. 11F ; Silph Co. 11F - did you know this team was weaker than the rival in vanilla level-wise?
db $FF, 37, KANGASKHAN, 36, NIDOKING, 37, NIDOQUEEN, 40, PERSIAN, 42, RHYDON, 0 db $FF, 40, BEEDRILL, 42, RHYDON, 42, KANGASKHAN, 43, NIDOKING, 43, NIDOQUEEN, 45, PERSIAN, 0 ; if persian slash is desirable, make it L47.
; Viridian Gym ; Viridian Gym
db $FF, 47, TRAMPEL, 46, DUGTRIO, 46, NIDOQUEEN, 48, GUARDIA, 48, NIDOKING, 50, RHYPERIOR, 0 db $FF, 47, TRAMPEL, 46, DUGTRIO, 46, NIDOQUEEN, 48, GUARDIA, 48, NIDOKING, 50, RHYPERIOR, 0

View file

@ -161,16 +161,16 @@ ResetLegendaryPokemon:
call ShowThis call ShowThis
.skipMoltres .skipMoltres
; Omega is special. ; Omega is special.
; If Omega wasn't obtained, it'll be available somewhere else on Silph Co. 11F. ; If Omega wasn't caught, it'll be available in the empty room of Silph Co. 11F.
; Commented out until we actually do this. ; In my mind, Omega was sent there, pending eventual scrapping for spare parts.
; ld a, DEX_OMEGA ld a, DEX_OMEGA
; ld [wd11e], a ld [wd11e], a
; call HoFIsPokemonBitSet call HoFIsPokemonBitSet
; jr nz, .skipOmega jr nz, .skipOmega
; ResetEvent EVENT_BEAT_OMEGA_2 ResetEvent EVENT_BEAT_OMEGA ; Reusing the old event - it's completely free to use.
; ld a, HS_OMEGA_2 ld a, HS_OMEGA_2
; call ShowThis call ShowThis
;.skipOmega .skipOmega
; Mew's hints aren't until the post-game, but is available regardless. ; Mew's hints aren't until the post-game, but is available regardless.
; So, we put this here. ; So, we put this here.
ld a, DEX_MEW ld a, DEX_MEW

View file

@ -1,5 +1,5 @@
SilphCo11F_Script: SilphCo11F_Script:
call SilphCo11Script_62110 call SilphCo11Script_62127
call EnableAutoTextBoxDrawing call EnableAutoTextBoxDrawing
ld hl, SilphCo11TrainerHeaders ld hl, SilphCo11TrainerHeaders
ld de, SilphCo11F_ScriptPointers ld de, SilphCo11F_ScriptPointers
@ -8,36 +8,27 @@ SilphCo11F_Script:
ld [wSilphCo11FCurScript], a ld [wSilphCo11FCurScript], a
ret ret
SilphCo11F_ScriptPointers: SilphCo11Script_62127:
dw SilphCo11Script0
dw DisplayEnemyTrainerTextAndStartBattle
dw EndTrainerBattle
dw SilphCo11Script3
dw SilphCo11Script4
dw SilphCo11Script5
dw SilphCo11Script6
dw SilphCo11Script7
SilphCo11Script_62110:
ld hl, wCurrentMapScriptFlags ld hl, wCurrentMapScriptFlags
bit 5, [hl] bit 5, [hl]
res 5, [hl] res 5, [hl]
ret z ret z
ld hl, SilphCo11GateCoords ld hl, SilphCo11GateCoords
call SilphCo11Script_62137 call SilphCo11Script_6214f
call SilphCo11Script_62163 call SilphCo11Script_6217b
CheckEvent EVENT_SILPH_CO_11_UNLOCKED_DOOR CheckEvent EVENT_SILPH_CO_11_UNLOCKED_DOOR
ret nz ret nz
ld a, $20 ld a, $20
ld [wNewTileBlockID], a ld [wNewTileBlockID], a
lb bc, 6, 3 lb bc, 6, 3
predef_jump ReplaceTileBlock predef ReplaceTileBlock
ret
SilphCo11GateCoords: SilphCo11GateCoords:
dbmapcoord 3, 6 dbmapcoord 3, 6
db -1 ; end db -1 ; end
SilphCo11Script_62137: SilphCo11Script_6214f:
push hl push hl
ld hl, wCardKeyDoorY ld hl, wCardKeyDoorY
ld a, [hli] ld a, [hli]
@ -73,12 +64,12 @@ SilphCo11Script_62137:
ldh [hUnlockedSilphCoDoors], a ldh [hUnlockedSilphCoDoors], a
ret ret
SilphCo11Script_62163: ; This is altered to have Omega rush you once the door is open. SilphCo11Script_6217b:
ldh a, [hUnlockedSilphCoDoors] ldh a, [hUnlockedSilphCoDoors]
and a and a
ret z ret z
SetEvent EVENT_SILPH_CO_11_UNLOCKED_DOOR SetEvent EVENT_SILPH_CO_11_UNLOCKED_DOOR
ld a, $6 ld a, $7
ldh [hSpriteIndex], a ; TODO: Make Omega look at the player. ldh [hSpriteIndex], a ; TODO: Make Omega look at the player.
call MoveOmegaSprite call MoveOmegaSprite
ld a, OMEGA ld a, OMEGA
@ -90,16 +81,16 @@ SilphCo11Script_62163: ; This is altered to have Omega rush you once the door is
ld a, MUSIC_MEET_MALE_TRAINER ld a, MUSIC_MEET_MALE_TRAINER
call PlayMusic call PlayMusic
;add code here to make Rocket NPC look at Omega ;add code here to make Rocket NPC look at Omega
ld a, $6 ld a, 15
ld [wSilphCo11FCurScript], a ld [wSilphCo11FCurScript], a
ret ret
SilphCo11Script6: SilphCo11ScriptOmegaBattle:
ld a, [wd730] ld a, [wd730]
bit 0, a bit 0, a
ret nz ret nz
ld [wJoyIgnore], a ld [wJoyIgnore], a
ld a, $6 ld a, 11
ldh [hSpriteIndexOrTextID], a ldh [hSpriteIndexOrTextID], a
call DisplayTextID call DisplayTextID
ld a, OMEGA ld a, OMEGA
@ -117,21 +108,6 @@ SilphCo11Script6:
ld [wCurMapScript], a ld [wCurMapScript], a
ret ret
SilphCo11Script7:
ld a, [wIsInBattle]
cp $ff
jp z, SilphCo11Script_50ece
ld a, $3
ld [wSilphCo11FCurScript], a
ret
SilphCo11Script_50ed6:
ld a, 0
ld [wTrainerNo], a
ld a, 1
ld [wIsTrainerBattle], a
ret
OmegaMovementData: OmegaMovementData:
db NPC_MOVEMENT_DOWN db NPC_MOVEMENT_DOWN
db NPC_MOVEMENT_DOWN db NPC_MOVEMENT_DOWN
@ -145,17 +121,6 @@ MoveOmegaSprite:
jp SetSpriteFacingDirectionAndDelay jp SetSpriteFacingDirectionAndDelay
ret ret
.asm_50ef1
call MoveSprite
ld a, SPRITE_FACING_RIGHT
ldh [hSpriteFacingDirection], a
jp SetSpriteFacingDirectionAndDelay
SilphCo11Script_50ece:
xor a
ld [wJoyIgnore], a
ld [wSilphCo11FCurScript], a
SilphCo11Script_6216d: SilphCo11Script_6216d:
ld hl, MissableObjectIDs_6219b ld hl, MissableObjectIDs_6219b
.asm_62170 .asm_62170
@ -221,24 +186,49 @@ MissableObjectIDs_6219b:
db HS_SILPH_CO_10F_1 db HS_SILPH_CO_10F_1
db HS_SILPH_CO_10F_2 db HS_SILPH_CO_10F_2
db HS_SILPH_CO_11F_1 db HS_SILPH_CO_11F_1
db HS_SILPH_CO_11F_2
db HS_SILPH_CO_11F_3 db HS_SILPH_CO_11F_3
db -1 ; end db -1 ; end
SilphCo11Script_621c4: SilphCo11Script_62185:
xor a xor a
ld [wJoyIgnore], a ld [wJoyIgnore], a
SilphCo11Script_62189:
SilphCo11Script_621c8:
ld [wSilphCo11FCurScript], a ld [wSilphCo11FCurScript], a
ld [wCurMapScript], a ld [wCurMapScript], a
ret ret
SilphCo11F_ScriptPointers:
dw SilphCo11Script0
dw DisplayEnemyTrainerTextAndStartBattle
dw EndTrainerBattle
dw SilphCo11Script3
dw SilphCo11Script4
dw SilphCo11Script5
dw SilphCo11Script6
dw SilphCo11Script7
dw SilphCo11Script8
dw SilphCo11Script9
dw SilphCo11Script10
dw SilphCo11Script11
dw SilphCo11Script12
dw SilphCo11Script13
dw SilphCo11Script14
dw SilphCo11ScriptOmegaBattle
SilphCo11Script0: SilphCo11Script0:
CheckEvent EVENT_BEAT_SILPH_CO_GIOVANNI IF DEF(_DEBUG)
call DebugPressedOrHeldB
ret nz ret nz
ENDC
CheckEvent EVENT_BEAT_SILPH_CO_11F_TRAINER_0
call z, SilphCo11Script_6229c
CheckEvent EVENT_782
ret nz
CheckEvent EVENT_BEAT_SILPH_CO_GIOVANNI
call z, SilphCo11Script_621c5
ret
SilphCo11Script_621c5:
ld hl, CoordsData_62211 ld hl, CoordsData_62211
call ArePlayerCoordsInArray call ArePlayerCoordsInArray
jp nc, CheckFightingMapTrainers jp nc, CheckFightingMapTrainers
@ -248,10 +238,10 @@ SilphCo11Script0:
ldh [hJoyHeld], a ldh [hJoyHeld], a
ld a, $f0 ld a, $f0
ld [wJoyIgnore], a ld [wJoyIgnore], a
ld a, $3
ld c, 0 ; BANK(Music_Sakaki) ld c, 0 ; BANK(Music_Sakaki)
ld a, MUSIC_SAKAKI ld a, MUSIC_SAKAKI
call PlayMusic call PlayMusic
ld a, $3
ldh [hSpriteIndexOrTextID], a ldh [hSpriteIndexOrTextID], a
call DisplayTextID call DisplayTextID
ld a, $3 ld a, $3
@ -259,8 +249,9 @@ SilphCo11Script0:
call SetSpriteMovementBytesToFF call SetSpriteMovementBytesToFF
ld de, MovementData_62216 ld de, MovementData_62216
call MoveSprite call MoveSprite
ld a, $3 ld a, $4
jp SilphCo11Script_621c8 call SilphCo11Script_62189
ret
CoordsData_62211: CoordsData_62211:
dbmapcoord 6, 13 dbmapcoord 6, 13
@ -273,18 +264,18 @@ MovementData_62216:
db NPC_MOVEMENT_DOWN db NPC_MOVEMENT_DOWN
db -1 ; end db -1 ; end
SilphCo11Script_6221a: SilphCo11Script_621ff:
ld [wPlayerMovingDirection], a ld [wPlayerMovingDirection], a
ld a, $3
ldh [hSpriteIndex], a
ld a, b ld a, b
ldh [hSpriteFacingDirection], a ld [wSprite03StateData1FacingDirection], a
jp SetSpriteFacingDirectionAndDelay ld a, $2
ld [wSprite03StateData1MovementStatus], a
ret
SilphCo11Script5: SilphCo11Script3:
ld a, [wIsInBattle] ld a, [wIsInBattle]
cp $ff cp $ff
jp z, SilphCo11Script_621c4 jp z, SilphCo11Script_62185
ld a, [wcf0d] ld a, [wcf0d]
cp $1 cp $1
jr z, .asm_6223c jr z, .asm_6223c
@ -295,23 +286,23 @@ SilphCo11Script5:
ld a, PLAYER_DIR_UP ld a, PLAYER_DIR_UP
ld b, SPRITE_FACING_DOWN ld b, SPRITE_FACING_DOWN
.asm_62240 .asm_62240
call SilphCo11Script_6221a call SilphCo11Script_621ff
ld a, $f0 ld a, $f0
ld [wJoyIgnore], a ld [wJoyIgnore], a
ld a, $8 ld a, 13
ldh [hSpriteIndexOrTextID], a ldh [hSpriteIndexOrTextID], a
call DisplayTextID call DisplayTextID
call GBFadeOutToBlack call GBFadeOutToBlack
call SilphCo11Script_6216d call SaffronCityHideRocketsShowCitizens
call UpdateSprites call UpdateSprites
call Delay3 call Delay3
call GBFadeInFromBlack call GBFadeInFromBlack
SetEvent EVENT_BEAT_SILPH_CO_GIOVANNI SetEvent EVENT_BEAT_SILPH_CO_GIOVANNI
xor a xor a
ld [wJoyIgnore], a ld [wJoyIgnore], a
jp SilphCo11Script_621c8 jp SilphCo11Script_62189
SilphCo11Script3: SilphCo11Script4:
ld a, [wd730] ld a, [wd730]
bit 0, a bit 0, a
ret nz ret nz
@ -328,26 +319,346 @@ SilphCo11Script3:
ld a, PLAYER_DIR_UP ld a, PLAYER_DIR_UP
ld b, SPRITE_FACING_DOWN ld b, SPRITE_FACING_DOWN
.asm_62288 .asm_62288
call SilphCo11Script_6221a call SilphCo11Script_621ff
call Delay3 call Delay3
ld a, $4 xor a
jp SilphCo11Script_621c8 ld [wJoyIgnore], a
SilphCo11Script4:
ld hl, wd72d ld hl, wd72d
set 6, [hl] set 6, [hl]
set 7, [hl] set 7, [hl]
ld hl, SilphCo10Text_62330 ld hl, SilphCo10Text_62528
ld de, SilphCo10Text_62330 ld de, SilphCo10Text_62528
call SaveEndBattleTextPointers call SaveEndBattleTextPointers
ldh a, [hSpriteIndex] ldh a, [hSpriteIndex]
ld [wSpriteIndex], a ld [wSpriteIndex], a
call EngageMapTrainer call EngageMapTrainer
call InitBattleEnemyParameters call InitBattleEnemyParameters
ld a, $3
jp SilphCo11Script_62189
SilphCo11Script_6229c:
ld a, [wYCoord]
cp $3
ret nz
ld a, [wXCoord]
cp $4
ret nc
ResetEvents EVENT_780, EVENT_781
ld a, [wXCoord]
cp $3
jr z, .asm_622c3
SetEventReuseHL EVENT_780
ld a, [wXCoord]
cp $2
jr z, .asm_622c3
ResetEventReuseHL EVENT_780
SetEventReuseHL EVENT_781
.asm_622c3
call StopMusic
ld c, 0 ; BANK(Music_MeetJessieJames)
ld a, MUSIC_MEET_JESSIE_JAMES
call PlayMusic
xor a xor a
ldh [hJoyHeld], a
ld a, $fc
ld [wJoyIgnore], a ld [wJoyIgnore], a
ld a, $1
ld [wDoNotWaitForButtonPressAfterDisplayingText], a
ld a, 4
ldh [hSpriteIndexOrTextID], a
call DisplayTextID
xor a
ld [wDoNotWaitForButtonPressAfterDisplayingText], a
ld a, $ff
ld [wJoyIgnore], a
SetEvent EVENT_782
ld a, $5 ld a, $5
jp SilphCo11Script_621c8 call SilphCo11Script_62189
ret
SilphCo11MovementData_622f5:
db NPC_MOVEMENT_UP
db NPC_MOVEMENT_UP
db NPC_MOVEMENT_UP
db NPC_MOVEMENT_UP
db NPC_MOVEMENT_UP
db -1
SilphCo11MovementData_622fb:
db NPC_MOVEMENT_UP
db NPC_MOVEMENT_UP
db NPC_MOVEMENT_UP
db NPC_MOVEMENT_UP
db -1
SilphCo11MovementData_62300:
db NPC_MOVEMENT_UP
db NPC_MOVEMENT_UP
db NPC_MOVEMENT_UP
db NPC_MOVEMENT_UP
db -1
SilphCo11MovementData_62305:
db NPC_MOVEMENT_UP
db NPC_MOVEMENT_UP
db NPC_MOVEMENT_UP
db NPC_MOVEMENT_UP
db NPC_MOVEMENT_UP
db -1
SilphCo11MovementData_6230b:
db NPC_MOVEMENT_UP
db NPC_MOVEMENT_UP
db NPC_MOVEMENT_LEFT
db NPC_MOVEMENT_UP
db NPC_MOVEMENT_UP
db -1
SilphCo11MovementData_62311:
db NPC_MOVEMENT_UP
db NPC_MOVEMENT_UP
db NPC_MOVEMENT_UP
db NPC_MOVEMENT_LEFT
db NPC_MOVEMENT_UP
db NPC_MOVEMENT_UP
db -1
SilphCo11Script5:
ld de, SilphCo11MovementData_622f5
CheckEitherEventSet EVENT_780, EVENT_781
and a
jr z, .asm_6232d
ld de, SilphCo11MovementData_62300
cp $1
jr z, .asm_6232d
ld de, SilphCo11MovementData_6230b
.asm_6232d
ld a, $4
ldh [hSpriteIndexOrTextID], a
call MoveSprite
ld a, $ff
ld [wJoyIgnore], a
ld a, $6
call SilphCo11Script_62189
ret
SilphCo11Script6:
ld a, $ff
ld [wJoyIgnore], a
ld a, [wd730]
bit 0, a
ret nz
SilphCo11Script7:
ld a, $2
ld [wSprite04StateData1MovementStatus], a
ld hl, wSprite04StateData1FacingDirection
ld [hl], SPRITE_FACING_RIGHT
CheckEitherEventSet EVENT_780, EVENT_781
and a
jr z, .asm_6235e
ld [hl], SPRITE_FACING_UP
.asm_6235e
call Delay3
ld a, $fc
ld [wJoyIgnore], a
SilphCo11Script8:
ld de, SilphCo11MovementData_622fb
CheckEitherEventSet EVENT_780, EVENT_781
and a
jr z, .asm_6237b
ld de, SilphCo11MovementData_62305
cp $1
jr z, .asm_6237b
ld de, SilphCo11MovementData_62311
.asm_6237b
ld a, $6
ldh [hSpriteIndexOrTextID], a
call MoveSprite
ld a, $ff
ld [wJoyIgnore], a
ld a, $9
call SilphCo11Script_62189
ret
SilphCo11Script9:
ld a, $ff
ld [wJoyIgnore], a
ld a, [wd730]
bit 0, a
ret nz
ld a, $fc
ld [wJoyIgnore], a
SilphCo11Script10:
ld a, $2
ld [wSprite06StateData1MovementStatus], a
ld hl, wSprite06StateData1FacingDirection
ld [hl], SPRITE_FACING_UP
CheckEitherEventSet EVENT_780, EVENT_781
and a
jr z, .asm_623b1
ld [hl], SPRITE_FACING_LEFT
.asm_623b1
call Delay3
ld a, $9
ldh [hSpriteIndexOrTextID], a
call DisplayTextID
SilphCo11Script11:
ld hl, wd72d
set 6, [hl]
set 7, [hl]
call Delay3
ld hl, SilphCo11Text_624c2
ld de, SilphCo11Text_624c2
call SaveEndBattleTextPointers
ld a, OPP_JESSIE_JAMES
ld [wCurOpponent], a
ld a, 4
ld [wTrainerNo], a
ld [wIsTrainerBattle], a
xor a
ldh [hJoyHeld], a
ld [wJoyIgnore], a
ld a, $c
call SilphCo11Script_62189
ret
SilphCo11Script12:
ld a, $ff
ld [wJoyIgnore], a
ld a, [wIsInBattle]
cp $ff
jp z, SilphCo11Script_62185
ld a, $2
ld [wSprite04StateData1MovementStatus], a
ld [wSprite06StateData1MovementStatus], a
xor a
ld [wSprite04StateData1FacingDirection], a
ld [wSprite06StateData1FacingDirection], a
ld a, $fc
ld [wJoyIgnore], a
ld a, $1
ld [wDoNotWaitForButtonPressAfterDisplayingText], a
ld a, $a
ldh [hSpriteIndexOrTextID], a
call DisplayTextID
xor a
ld [wDoNotWaitForButtonPressAfterDisplayingText], a
call StopMusic
ld c, 0 ; BANK(Music_MeetJessieJames)
ld a, MUSIC_MEET_JESSIE_JAMES
call PlayMusic
ld a, $ff
ld [wJoyIgnore], a
ld a, $d
call SilphCo11Script_62189
ret
SilphCo11Script13:
ld a, $ff
ld [wJoyIgnore], a
call GBFadeOutToBlack
ld a, HS_SILPH_CO_11F_JAMES
call SilphCo11Script_6246d
ld a, HS_SILPH_CO_11F_JESSIE
call SilphCo11Script_6246d
call UpdateSprites
call Delay3
call GBFadeInFromBlack
ld a, $e
call SilphCo11Script_62189
ret
SilphCo11Script14:
call PlayDefaultMusic
xor a
ldh [hJoyHeld], a
ld [wJoyIgnore], a
ResetEvent EVENT_782
SetEventReuseHL EVENT_BEAT_SILPH_CO_11F_TRAINER_0
ld a, $0
call SilphCo11Script_62189
ret
SilphCo11Script_6245e:
ld [wMissableObjectIndex], a
predef ShowObject
call UpdateSprites
call Delay3
ret
SilphCo11Script_6246d:
ld [wMissableObjectIndex], a
predef HideObject
ret
SaffronCityHideRocketsShowCitizens:
ld hl, SaffronCityRockets
.hideLoop
ld a, [hli]
cp $ff ; have we run out of rockets to hide?
jr z, .showCitizens ; if so, start showing the citizens
push hl
ld [wMissableObjectIndex], a
predef HideObject
pop hl
jr .hideLoop
.showCitizens
ld hl, SaffronCityCitizens
.showLoop
ld a, [hli]
cp $ff ; have we run out of citizens to show?
ret z ; if so, we're done here
push hl
ld [wMissableObjectIndex], a
predef ShowObject
pop hl
jr .showLoop
SaffronCityCitizens:
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 HS_SAFFRON_CITY_UP_GRADE
db -1 ; end
SaffronCityRockets:
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_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_10F_1
db HS_SILPH_CO_10F_2
db HS_SILPH_CO_11F_1
db HS_SILPH_CO_11F_3
db -1 ; end
SilphCo11F_TextPointers: SilphCo11F_TextPointers:
dw SilphCo11Text1 dw SilphCo11Text1
@ -356,21 +667,55 @@ SilphCo11F_TextPointers:
dw SilphCo11Text4 dw SilphCo11Text4
dw SilphCo11Text5 dw SilphCo11Text5
dw SilphCo11Text6 dw SilphCo11Text6
dw SilphCo11Text7
dw SilphCo11Text8
dw SilphCo11Text9
dw SilphCo11Text10
dw OmegaText dw OmegaText
dw Omega2Text
dw StupidGiovanniFix dw StupidGiovanniFix
SilphCo11TrainerHeaders: SilphCo11TrainerHeaders:
def_trainers 4 def_trainers 5
SilphCo11TrainerHeader0: SilphCo11TrainerHeader0:
trainer EVENT_BEAT_SILPH_CO_11F_TRAINER_0, 4, SilphCo11BattleText1, SilphCo11EndBattleText1, SilphCo11AfterBattleText1 trainer EVENT_BEAT_SILPH_CO_11F_TRAINER_1, 3, SilphCo11Trainer1BattleText, SilphCo11Trainer1EndBattleText, SilphCo11Trainer1AfterBattleText
SilphCo11TrainerHeader1: Omega2TrainerHeader:
trainer EVENT_BEAT_SILPH_CO_11F_TRAINER_1, 3, SilphCo11BattleText2, SilphCo11EndBattleText2, SilphCo11AfterBattleText2 trainer EVENT_BEAT_OMEGA, 0, Omega2BattleText, Omega2BattleText, Omega2BattleText
db -1 ; end db -1 ; end
OmegaText: SilphCo11Text4:
text_far _OmegaBattleText SilphCo11Text6:
SilphCo11Text8:
text_far _SilphCoJessieJamesText1
text_asm
ld c, 10
call DelayFrames
ld a, $4
ld [wPlayerMovingDirection], a
ld a, $0
ld [wEmotionBubbleSpriteIndex], a
ld a, EXCLAMATION_BUBBLE
ld [wWhichEmotionBubble], a
predef EmotionBubble
ld c, 20
call DelayFrames
jp TextScriptEnd
SilphCo11Text9:
text_far _SilphCoJessieJamesText2
text_end text_end
SilphCo11Text_624c2:
text_far _SilphCoJessieJamesText3
text_end
SilphCo11Text10:
text_far _SilphCoJessieJamesText4
text_asm
ld c, 64
call DelayFrames
jp TextScriptEnd
SilphCo11Text1: SilphCo11Text1:
text_asm text_asm
CheckEvent EVENT_GOT_MASTER_BALL CheckEvent EVENT_GOT_MASTER_BALL
@ -419,68 +764,56 @@ SilphCo11Text3:
text_far _SilphCo11Text3 text_far _SilphCo11Text3
text_end text_end
SilphCo10Text_62330: SilphCo10Text_62528:
text_far _SilphCo10Text_62330 text_far _SilphCo10Text_62330
text_end text_end
SilphCo11Text6: SilphCo11Text7:
text_far _SilphCo10Text_62335 text_far _SilphCo10Text_62335
text_end text_end
SilphCo11Text4: SilphCo11Text5:
text_asm text_asm
ld hl, SilphCo11TrainerHeader0 ld hl, SilphCo11TrainerHeader0
call TalkToTrainer call TalkToTrainer
jp TextScriptEnd jp TextScriptEnd
SilphCo11BattleText1: SilphCo11Trainer1BattleText:
text_far _SilphCo11BattleText1
text_end
SilphCo11EndBattleText1:
text_far _SilphCo11EndBattleText1
text_end
SilphCo11AfterBattleText1:
text_far _SilphCo11AfterBattleText1
text_end
SilphCo11Text5:
text_asm
ld hl, SilphCo11TrainerHeader1
call TalkToTrainer
jp TextScriptEnd
SilphCo11BattleText2:
text_far _SilphCo11BattleText2 text_far _SilphCo11BattleText2
text_end text_end
SilphCo11EndBattleText2: SilphCo11Trainer1EndBattleText:
text_far _SilphCo11EndBattleText2 text_far _SilphCo11EndBattleText2
text_end text_end
SilphCo11AfterBattleText2: SilphCo11Trainer1AfterBattleText:
text_far _SilphCo11AfterBattleText2 text_far _SilphCo11AfterBattleText2
text_end text_end
SilphCo10Text_6236c: ; Omega Boss Fight text begins here.
text_asm OmegaText:
ld hl, SilphCo10Text_6237b text_far _OmegaBattleText
call PrintText
ld a, PORYGON
call DisplayPokedex
jp TextScriptEnd
SilphCo10Text_6237b:
text_far _SilphCo10Text_6237b
text_end text_end
; Omega Boss Fight text begins here.
OmegaBattleText: OmegaBattleText:
text_far _OmegaBattleText text_far _OmegaBattleText
text_asm text_asm
jp TextScriptEnd jp TextScriptEnd
Omega2Text:
text_asm
ld hl, Omega2TrainerHeader
call TalkToTrainer
jp TextScriptEnd
Omega2BattleText:
text_far _OmegaBattleText
text_asm
ld a, OMEGA
call PlayCry
call WaitForSoundToFinish
jp TextScriptEnd
StupidGiovanniFix: StupidGiovanniFix:
text_far _SilphCo10Text_62335 text_far _SilphCo10Text_62335
text_end text_end

View file

@ -153,7 +153,9 @@ _MtMoonJessieJamesText3::
prompt prompt
_MtMoonJessieJamesText4:: _MtMoonJessieJamesText4::
text "TEAM ROCKET, blast" text "Looks like TEAM"
line "off at the speed" line "ROCKET's blasting"
cont "of light!@" cont "off!"
para "We'll be back!@"
text_end text_end

View file

@ -3,6 +3,13 @@ _SilphCoPresidentText::
line "you for saving" line "you for saving"
cont "SILPH!" cont "SILPH!"
para "And...sorry about"
line "that OMEGA model."
cont "It must have seen"
cont "you as a threat."
para "Anyway!"
para "I will never" para "I will never"
line "forget you saved" line "forget you saved"
cont "us in our moment" cont "us in our moment"
@ -54,8 +61,13 @@ _SilphCo11Text2::
line "you for rescuing" line "you for rescuing"
cont "all of us!" cont "all of us!"
para "We admire your" para "Hmm? OMEGA?"
line "courage."
para "All I know is the"
line "CHIEF quickly"
cont "started making it"
cont "last year."
done done
_SilphCo11Text3:: _SilphCo11Text3::
@ -135,10 +147,7 @@ _SilphCo10Text_6237b::
done done
_OmegaBattleText:: _OmegaBattleText::
text "ROCKET: Hey, kid!" text "Bzzt! Clank!"
line "Watch out!"
para "Bzzt! Clank!"
prompt prompt
; Fun fact: For some reason, this text is stored in 10F. Seems to be a beta element - they ARE encountered in 11F. ; Fun fact: For some reason, this text is stored in 10F. Seems to be a beta element - they ARE encountered in 11F.