mirror of
https://github.com/thornAvery/kep-hack.git
synced 2025-09-17 02:40:50 +12:00

Thanks to Frrf for helping me fix the broken code I initially sent in. This commit refines the mode so that the Oak Lab cutscene is finished and the party picking process is all concrete. Also, given Surge is a fight, the S.S. Anne Pikachu rival can have Raichu, surely... Also, the UnusedNames files were, in fact, needed...otherwise, the item names get all corrupted. Probably left some code behind. So we officially have a new funky mode!
455 lines
8.5 KiB
NASM
455 lines
8.5 KiB
NASM
Route22_Script:
|
|
call EnableAutoTextBoxDrawing
|
|
ld hl, Route22_ScriptPointers
|
|
ld a, [wRoute22CurScript]
|
|
jp CallFunctionInTable
|
|
|
|
Route22_ScriptPointers:
|
|
dw Route22Script0
|
|
dw Route22Script1
|
|
dw Route22Script2
|
|
dw Route22Script3
|
|
dw Route22Script4
|
|
dw Route22Script5
|
|
dw Route22Script6
|
|
dw Route22Script7
|
|
|
|
Route22Script_50ece:
|
|
xor a
|
|
ld [wJoyIgnore], a
|
|
ld [wRoute22CurScript], a
|
|
Route22Script7:
|
|
ret
|
|
|
|
Route22Script_50ed6:
|
|
ld a, [wRivalStarter]
|
|
ld b, a
|
|
.asm_50eda
|
|
ld a, [hli]
|
|
cp b
|
|
jr z, .asm_50ee1
|
|
inc hl
|
|
jr .asm_50eda
|
|
.asm_50ee1
|
|
ld a, [hl]
|
|
ld [wTrainerNo], a
|
|
ld a, 1
|
|
ld [wIsTrainerBattle], a
|
|
ret
|
|
|
|
Route22MoveRivalSprite:
|
|
ld de, Route22RivalMovementData
|
|
ld a, [wcf0d]
|
|
cp $1
|
|
jr z, .asm_50ef1
|
|
inc de
|
|
.asm_50ef1
|
|
call MoveSprite
|
|
ld a, SPRITE_FACING_RIGHT
|
|
ldh [hSpriteFacingDirection], a
|
|
jp SetSpriteFacingDirectionAndDelay
|
|
|
|
Route22RivalMovementData:
|
|
db NPC_MOVEMENT_RIGHT
|
|
db NPC_MOVEMENT_RIGHT
|
|
db NPC_MOVEMENT_RIGHT
|
|
db NPC_MOVEMENT_RIGHT
|
|
db -1 ; end
|
|
|
|
Route22Script0:
|
|
CheckEvent EVENT_ROUTE22_RIVAL_WANTS_BATTLE
|
|
ret z
|
|
ld hl, .Route22RivalBattleCoords
|
|
call ArePlayerCoordsInArray
|
|
ret nc
|
|
ld a, [wCoordIndex]
|
|
ld [wcf0d], a
|
|
xor a
|
|
ldh [hJoyHeld], a
|
|
ld a, $f0
|
|
ld [wJoyIgnore], a
|
|
ld a, PLAYER_DIR_LEFT
|
|
ld [wPlayerMovingDirection], a
|
|
CheckEvent EVENT_1ST_ROUTE22_RIVAL_BATTLE
|
|
jr nz, .firstRivalBattle
|
|
CheckEventReuseA EVENT_2ND_ROUTE22_RIVAL_BATTLE ; is this the rival at the end of the game?
|
|
jp nz, Route22Script_5104e
|
|
ret
|
|
|
|
.Route22RivalBattleCoords
|
|
dbmapcoord 29, 4
|
|
dbmapcoord 29, 5
|
|
db -1 ; end
|
|
|
|
.firstRivalBattle
|
|
ld a, $1
|
|
ld [wEmotionBubbleSpriteIndex], a
|
|
xor a ; EXCLAMATION_BUBBLE
|
|
ld [wWhichEmotionBubble], a
|
|
predef EmotionBubble
|
|
ld a, [wWalkBikeSurfState]
|
|
and a
|
|
jr z, .asm_50f4e
|
|
ld a, SFX_STOP_ALL_MUSIC
|
|
ld [wNewSoundID], a
|
|
call PlaySound
|
|
.asm_50f4e
|
|
ld c, BANK(Music_MeetRival)
|
|
ld a, MUSIC_MEET_RIVAL
|
|
call PlayMusic
|
|
ld a, $1
|
|
ldh [hSpriteIndex], a
|
|
call Route22MoveRivalSprite
|
|
ld a, $1
|
|
ld [wRoute22CurScript], a
|
|
ret
|
|
|
|
Route22Script1:
|
|
ld a, [wd730]
|
|
bit 0, a
|
|
ret nz
|
|
ld a, [wcf0d]
|
|
cp $1
|
|
jr nz, .asm_50f78
|
|
ld a, PLAYER_DIR_DOWN
|
|
ld [wPlayerMovingDirection], a
|
|
ld a, SPRITE_FACING_UP
|
|
jr .asm_50f7a
|
|
.asm_50f78
|
|
ld a, SPRITE_FACING_RIGHT
|
|
.asm_50f7a
|
|
ldh [hSpriteFacingDirection], a
|
|
ld a, $1
|
|
ldh [hSpriteIndex], a
|
|
call SetSpriteFacingDirectionAndDelay
|
|
xor a
|
|
ld [wJoyIgnore], a
|
|
ld a, $1
|
|
ldh [hSpriteIndexOrTextID], a
|
|
call DisplayTextID
|
|
ld hl, wd72d
|
|
set 6, [hl]
|
|
set 7, [hl]
|
|
ld hl, Route22RivalDefeatedText1
|
|
ld de, Route22Text_511bc
|
|
call SaveEndBattleTextPointers
|
|
ld a, OPP_RIVAL1
|
|
ld [wCurOpponent], a
|
|
ld hl, StarterMons_50faf
|
|
call Route22Script_50ed6
|
|
ld a, $2
|
|
ld [wRoute22CurScript], a
|
|
ret
|
|
|
|
StarterMons_50faf:
|
|
; starter the rival picked, rival trainer number
|
|
db STARTER1, 8
|
|
db STARTER2, 6
|
|
db STARTER3, 7
|
|
db STARTER4, 10
|
|
db STARTER5, 9
|
|
|
|
Route22Script2:
|
|
ld a, [wIsInBattle]
|
|
cp $ff
|
|
jp z, Route22Script_50ece
|
|
xor a
|
|
ld [wIsTrainerBattle], a
|
|
ld a, [wSpritePlayerStateData1FacingDirection]
|
|
and a ; cp SPRITE_FACING_DOWN
|
|
jr nz, .notDown
|
|
ld a, SPRITE_FACING_UP
|
|
jr .done
|
|
.notDown
|
|
ld a, SPRITE_FACING_RIGHT
|
|
.done
|
|
ldh [hSpriteFacingDirection], a
|
|
ld a, $1
|
|
ldh [hSpriteIndex], a
|
|
call SetSpriteFacingDirectionAndDelay
|
|
ld a, $f0
|
|
ld [wJoyIgnore], a
|
|
SetEvent EVENT_BEAT_ROUTE22_RIVAL_1ST_BATTLE
|
|
ld a, $1
|
|
ldh [hSpriteIndexOrTextID], a
|
|
call DisplayTextID
|
|
ld a, SFX_STOP_ALL_MUSIC
|
|
ld [wNewSoundID], a
|
|
call PlaySound
|
|
farcall Music_RivalAlternateStart
|
|
ld a, [wcf0d]
|
|
cp $1
|
|
jr nz, .asm_50fff
|
|
call Route22Script_51008
|
|
jr .asm_51002
|
|
.asm_50fff
|
|
call Route22Script_5100d
|
|
.asm_51002
|
|
ld a, $3
|
|
ld [wRoute22CurScript], a
|
|
ret
|
|
|
|
Route22Script_51008:
|
|
ld de, Route22RivalExitMovementData1
|
|
jr Route22MoveRival1
|
|
|
|
Route22Script_5100d:
|
|
ld de, Route22RivalExitMovementData2
|
|
Route22MoveRival1:
|
|
ld a, $1
|
|
ldh [hSpriteIndex], a
|
|
jp MoveSprite
|
|
|
|
Route22RivalExitMovementData1:
|
|
db NPC_MOVEMENT_RIGHT
|
|
db NPC_MOVEMENT_RIGHT
|
|
db NPC_MOVEMENT_DOWN
|
|
db NPC_MOVEMENT_DOWN
|
|
db NPC_MOVEMENT_DOWN
|
|
db NPC_MOVEMENT_DOWN
|
|
db NPC_MOVEMENT_DOWN
|
|
db -1 ; end
|
|
|
|
Route22RivalExitMovementData2:
|
|
db NPC_MOVEMENT_UP
|
|
db NPC_MOVEMENT_RIGHT
|
|
db NPC_MOVEMENT_RIGHT
|
|
db NPC_MOVEMENT_RIGHT
|
|
db NPC_MOVEMENT_DOWN
|
|
db NPC_MOVEMENT_DOWN
|
|
db NPC_MOVEMENT_DOWN
|
|
db NPC_MOVEMENT_DOWN
|
|
db NPC_MOVEMENT_DOWN
|
|
db NPC_MOVEMENT_DOWN
|
|
db -1 ; end
|
|
|
|
Route22Script3:
|
|
ld a, [wd730]
|
|
bit 0, a
|
|
ret nz
|
|
xor a
|
|
ld [wJoyIgnore], a
|
|
ld a, HS_ROUTE_22_RIVAL_1
|
|
ld [wMissableObjectIndex], a
|
|
predef HideObject
|
|
call PlayDefaultMusic
|
|
ResetEvents EVENT_1ST_ROUTE22_RIVAL_BATTLE, EVENT_ROUTE22_RIVAL_WANTS_BATTLE
|
|
ld a, $0
|
|
ld [wRoute22CurScript], a
|
|
ret
|
|
|
|
Route22Script_5104e:
|
|
ld a, $2
|
|
ld [wEmotionBubbleSpriteIndex], a
|
|
xor a ; EXCLAMATION_BUBBLE
|
|
ld [wWhichEmotionBubble], a
|
|
predef EmotionBubble
|
|
ld a, [wWalkBikeSurfState]
|
|
and a
|
|
jr z, .skipYVisibilityTesta
|
|
ld a, SFX_STOP_ALL_MUSIC
|
|
ld [wNewSoundID], a
|
|
call PlaySound
|
|
.skipYVisibilityTesta
|
|
ld a, SFX_STOP_ALL_MUSIC
|
|
ld [wNewSoundID], a
|
|
call PlaySound
|
|
farcall Music_RivalAlternateTempo
|
|
ld a, $2
|
|
ldh [hSpriteIndex], a
|
|
call Route22MoveRivalSprite
|
|
ld a, $4
|
|
ld [wRoute22CurScript], a
|
|
ret
|
|
|
|
Route22Script4:
|
|
ld a, [wd730]
|
|
bit 0, a
|
|
ret nz
|
|
ld a, $2
|
|
ldh [hSpriteIndex], a
|
|
ld a, [wcf0d]
|
|
cp $1
|
|
jr nz, .asm_510a1
|
|
ld a, PLAYER_DIR_DOWN
|
|
ld [wPlayerMovingDirection], a
|
|
ld a, SPRITE_FACING_UP
|
|
jr .asm_510a8
|
|
.asm_510a1
|
|
ld a, PLAYER_DIR_LEFT
|
|
ld [wPlayerMovingDirection], a
|
|
ld a, SPRITE_FACING_RIGHT
|
|
.asm_510a8
|
|
ldh [hSpriteFacingDirection], a
|
|
call SetSpriteFacingDirectionAndDelay
|
|
xor a
|
|
ld [wJoyIgnore], a
|
|
ld a, $2
|
|
ldh [hSpriteIndexOrTextID], a
|
|
call DisplayTextID
|
|
ld hl, wd72d
|
|
set 6, [hl]
|
|
set 7, [hl]
|
|
ld hl, Route22RivalDefeatedText2
|
|
ld de, Route22Text_511d0
|
|
call SaveEndBattleTextPointers
|
|
ld a, OPP_RIVAL2
|
|
ld [wCurOpponent], a
|
|
ld hl, StarterMons_510d9
|
|
call Route22Script_50ed6
|
|
ld a, $5
|
|
ld [wRoute22CurScript], a
|
|
ret
|
|
|
|
StarterMons_510d9:
|
|
db STARTER2, 16
|
|
db STARTER3, 17
|
|
db STARTER1, 18
|
|
db STARTER4, 20
|
|
db STARTER5, 19
|
|
|
|
Route22Script5:
|
|
ld a, [wIsInBattle]
|
|
cp $ff
|
|
jp z, Route22Script_50ece
|
|
xor a
|
|
ld [wIsTrainerBattle], a
|
|
ld a, $2
|
|
ldh [hSpriteIndex], a
|
|
ld a, [wcf0d]
|
|
cp $1
|
|
jr nz, .asm_510fb
|
|
ld a, PLAYER_DIR_DOWN
|
|
ld [wPlayerMovingDirection], a
|
|
ld a, SPRITE_FACING_UP
|
|
jr .asm_51102
|
|
.asm_510fb
|
|
ld a, PLAYER_DIR_LEFT
|
|
ld [wPlayerMovingDirection], a
|
|
ld a, SPRITE_FACING_RIGHT
|
|
.asm_51102
|
|
ldh [hSpriteFacingDirection], a
|
|
call SetSpriteFacingDirectionAndDelay
|
|
ld a, $f0
|
|
ld [wJoyIgnore], a
|
|
SetEvent EVENT_BEAT_ROUTE22_RIVAL_2ND_BATTLE
|
|
ld a, $2
|
|
ldh [hSpriteIndexOrTextID], a
|
|
call DisplayTextID
|
|
ld a, SFX_STOP_ALL_MUSIC
|
|
ld [wNewSoundID], a
|
|
call PlaySound
|
|
farcall Music_RivalAlternateStartAndTempo
|
|
ld a, [wcf0d]
|
|
cp $1
|
|
jr nz, .asm_51134
|
|
call Route22Script_5113d
|
|
jr .asm_51137
|
|
.asm_51134
|
|
call Route22Script_51142
|
|
.asm_51137
|
|
ld a, $6
|
|
ld [wRoute22CurScript], a
|
|
ret
|
|
|
|
Route22Script_5113d:
|
|
ld de, MovementData_5114c
|
|
jr Route22MoveRival2
|
|
|
|
Route22Script_51142:
|
|
ld de, MovementData_5114d
|
|
Route22MoveRival2:
|
|
ld a, $2
|
|
ldh [hSpriteIndex], a
|
|
jp MoveSprite
|
|
|
|
MovementData_5114c:
|
|
db NPC_MOVEMENT_LEFT
|
|
MovementData_5114d:
|
|
db NPC_MOVEMENT_LEFT
|
|
db NPC_MOVEMENT_LEFT
|
|
db NPC_MOVEMENT_LEFT
|
|
db -1 ; end
|
|
|
|
Route22Script6:
|
|
ld a, [wd730]
|
|
bit 0, a
|
|
ret nz
|
|
xor a
|
|
ld [wJoyIgnore], a
|
|
ld a, HS_ROUTE_22_RIVAL_2
|
|
ld [wMissableObjectIndex], a
|
|
predef HideObject
|
|
call PlayDefaultMusic
|
|
ResetEvents EVENT_2ND_ROUTE22_RIVAL_BATTLE, EVENT_ROUTE22_RIVAL_WANTS_BATTLE
|
|
ld a, $7
|
|
ld [wRoute22CurScript], a
|
|
ret
|
|
|
|
Route22_TextPointers:
|
|
dw Route22Text1
|
|
dw Route22Text2
|
|
dw Route22FrontGateText
|
|
|
|
Route22Text1:
|
|
text_asm
|
|
CheckEvent EVENT_BEAT_ROUTE22_RIVAL_1ST_BATTLE
|
|
jr z, .asm_5118b
|
|
ld hl, Route22RivalAfterBattleText1
|
|
call PrintText
|
|
jr .asm_51191
|
|
.asm_5118b
|
|
ld hl, Route22RivalBeforeBattleText1
|
|
call PrintText
|
|
.asm_51191
|
|
jp TextScriptEnd
|
|
|
|
Route22Text2:
|
|
text_asm
|
|
CheckEvent EVENT_BEAT_ROUTE22_RIVAL_2ND_BATTLE
|
|
jr z, .asm_511a4
|
|
ld hl, Route22RivalAfterBattleText2
|
|
call PrintText
|
|
jr .asm_511aa
|
|
.asm_511a4
|
|
ld hl, Route22RivalBeforeBattleText2
|
|
call PrintText
|
|
.asm_511aa
|
|
jp TextScriptEnd
|
|
|
|
Route22RivalBeforeBattleText1:
|
|
text_far _Route22RivalBeforeBattleText1
|
|
text_end
|
|
|
|
Route22RivalAfterBattleText1:
|
|
text_far _Route22RivalAfterBattleText1
|
|
text_end
|
|
|
|
Route22RivalDefeatedText1:
|
|
text_far _Route22RivalDefeatedText1
|
|
text_end
|
|
|
|
Route22Text_511bc:
|
|
text_far _Route22Text_511bc
|
|
text_end
|
|
|
|
Route22RivalBeforeBattleText2:
|
|
text_far _Route22RivalBeforeBattleText2
|
|
text_end
|
|
|
|
Route22RivalAfterBattleText2:
|
|
text_far _Route22RivalAfterBattleText2
|
|
text_end
|
|
|
|
Route22RivalDefeatedText2:
|
|
text_far _Route22RivalDefeatedText2
|
|
text_end
|
|
|
|
Route22Text_511d0:
|
|
text_far _Route22Text_511d0
|
|
text_end
|
|
|
|
Route22FrontGateText:
|
|
text_far _Route22FrontGateText
|
|
text_end
|