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

So some bits of this are untested, but the base starters are unaffected. I had to work a lot with the sprite limits so Oak's lab has been changed a bit. This adds a Pikachu and Eevee "mode" to the game, allowing you to pick them as starters. When doing so, the Rival will always pick the opposite. There are some glitches; - Picking Charmander makes Blue erase himself from existence - Picking from anywhere other than the front of the table may have odd results. - Oak has to be shown in the lab at the start from now on for some reason; side effect of removing the dexes, there's definitely a fix for this. These are from me not finishing the ball picking process - it was a little weird. Parties based on starters have been updated but I had to cut out a lot of unused trainer slots. Also the unused names were removed.
230 lines
3.8 KiB
NASM
230 lines
3.8 KiB
NASM
SSAnne2F_Script:
|
|
call EnableAutoTextBoxDrawing
|
|
ld hl, SSAnne2F_ScriptPointers
|
|
ld a, [wSSAnne2FCurScript]
|
|
jp CallFunctionInTable
|
|
|
|
SSAnne2Script_613ab:
|
|
xor a
|
|
ld [wJoyIgnore], a
|
|
ld [wSSAnne2FCurScript], a
|
|
ret
|
|
|
|
SSAnne2F_ScriptPointers:
|
|
dw SSAnne2Script0
|
|
dw SSAnne2Script1
|
|
dw SSAnne2Script2
|
|
dw SSAnne2Script3
|
|
dw SSAnne2Script4
|
|
|
|
SSAnne2Script4:
|
|
ret
|
|
|
|
SSAnne2Script0:
|
|
ld hl, CoordsData_61411
|
|
call ArePlayerCoordsInArray
|
|
ret nc
|
|
ld a, SFX_STOP_ALL_MUSIC
|
|
ld [wNewSoundID], a
|
|
call PlaySound
|
|
ld c, BANK(Music_MeetRival)
|
|
ld a, MUSIC_MEET_RIVAL
|
|
call PlayMusic
|
|
ld a, [wCoordIndex]
|
|
ldh [hSavedCoordIndex], a
|
|
ld a, HS_SS_ANNE_2F_RIVAL
|
|
ld [wMissableObjectIndex], a
|
|
predef ShowObject
|
|
call Delay3
|
|
ld a, $2
|
|
ldh [hSpriteIndex], a
|
|
call SetSpriteMovementBytesToFF
|
|
xor a
|
|
ldh [hJoyHeld], a
|
|
ld a, $f0
|
|
ld [wJoyIgnore], a
|
|
ldh a, [hSavedCoordIndex]
|
|
cp $2
|
|
jr nz, .asm_61400
|
|
ld de, MovementData_6140c
|
|
jr .asm_61403
|
|
.asm_61400
|
|
ld de, MovementData_6140d
|
|
.asm_61403
|
|
call MoveSprite
|
|
ld a, $1
|
|
ld [wSSAnne2FCurScript], a
|
|
ret
|
|
|
|
MovementData_6140c:
|
|
db NPC_MOVEMENT_DOWN
|
|
MovementData_6140d:
|
|
db NPC_MOVEMENT_DOWN
|
|
db NPC_MOVEMENT_DOWN
|
|
db NPC_MOVEMENT_DOWN
|
|
db -1 ; end
|
|
|
|
CoordsData_61411:
|
|
dbmapcoord 36, 8
|
|
dbmapcoord 37, 8
|
|
db -1 ; end
|
|
|
|
SSAnne2Script_61416:
|
|
ld a, [wXCoord]
|
|
cp 37
|
|
jr nz, .asm_61426
|
|
ld a, PLAYER_DIR_LEFT
|
|
ld [wPlayerMovingDirection], a
|
|
ld a, SPRITE_FACING_RIGHT
|
|
jr .asm_61427
|
|
.asm_61426
|
|
xor a ; SPRITE_FACING_DOWN
|
|
.asm_61427
|
|
ldh [hSpriteFacingDirection], a
|
|
ld a, $2
|
|
ldh [hSpriteIndex], a
|
|
jp SetSpriteFacingDirectionAndDelay
|
|
|
|
SSAnne2Script1:
|
|
ld a, [wd730]
|
|
bit 0, a
|
|
ret nz
|
|
call SSAnne2Script_61416
|
|
xor a
|
|
ld [wJoyIgnore], a
|
|
ld a, $2
|
|
ldh [hSpriteIndexOrTextID], a
|
|
call DisplayTextID
|
|
call Delay3
|
|
ld a, OPP_RIVAL2
|
|
ld [wCurOpponent], a
|
|
|
|
; select which team to use during the encounter
|
|
ld a, [wRivalStarter]
|
|
cp STARTER1
|
|
jr nz, .NotSquirtle
|
|
ld a, $1
|
|
jr .done
|
|
.NotSquirtle
|
|
cp STARTER3
|
|
jr nz, .Charmander
|
|
ld a, $2
|
|
jr .done
|
|
.Charmander
|
|
cp STARTER2 ; changes start here
|
|
ld a, $3
|
|
jr nz, .Pikachu
|
|
jr .done
|
|
.Pikachu ;
|
|
cp STARTER4
|
|
jr nz, .Eevee
|
|
ld a, $4
|
|
jr .done
|
|
.Eevee
|
|
ld a, $5
|
|
jr .done
|
|
.done
|
|
ld [wTrainerNo], a
|
|
ld a, 1
|
|
ld [wIsTrainerBattle], a
|
|
|
|
call SSAnne2Script_61416
|
|
ld a, $2
|
|
ld [wSSAnne2FCurScript], a
|
|
ret
|
|
|
|
SSAnne2Script2:
|
|
ld a, [wIsInBattle]
|
|
cp $ff
|
|
jp z, SSAnne2Script_613ab
|
|
xor a
|
|
ld [wIsTrainerBattle], a
|
|
call SSAnne2Script_61416
|
|
ld a, $f0
|
|
ld [wJoyIgnore], a
|
|
ld a, $3
|
|
ldh [hSpriteIndexOrTextID], a
|
|
call DisplayTextID
|
|
ld a, $2
|
|
ldh [hSpriteIndex], a
|
|
call SetSpriteMovementBytesToFF
|
|
ld a, [wXCoord]
|
|
cp 37
|
|
jr nz, .asm_61497
|
|
ld de, MovementData_614b9
|
|
jr .asm_6149a
|
|
.asm_61497
|
|
ld de, MovementData_614b7
|
|
.asm_6149a
|
|
ld a, $2
|
|
ldh [hSpriteIndex], a
|
|
call MoveSprite
|
|
ld a, SFX_STOP_ALL_MUSIC
|
|
ld [wNewSoundID], a
|
|
call PlaySound
|
|
farcall Music_RivalAlternateStart
|
|
ld a, $3
|
|
ld [wSSAnne2FCurScript], a
|
|
ret
|
|
|
|
MovementData_614b7:
|
|
db NPC_MOVEMENT_RIGHT
|
|
db NPC_MOVEMENT_DOWN
|
|
MovementData_614b9:
|
|
db NPC_MOVEMENT_DOWN
|
|
db NPC_MOVEMENT_DOWN
|
|
db NPC_MOVEMENT_DOWN
|
|
db NPC_MOVEMENT_DOWN
|
|
db -1 ; end
|
|
|
|
SSAnne2Script3:
|
|
ld a, [wd730]
|
|
bit 0, a
|
|
ret nz
|
|
xor a
|
|
ld [wJoyIgnore], a
|
|
ld a, HS_SS_ANNE_2F_RIVAL
|
|
ld [wMissableObjectIndex], a
|
|
predef HideObject
|
|
call PlayDefaultMusic
|
|
ld a, $4
|
|
ld [wSSAnne2FCurScript], a
|
|
ret
|
|
|
|
SSAnne2F_TextPointers:
|
|
dw SSAnne2Text1
|
|
dw SSAnne2Text2
|
|
dw SSAnne2Text3
|
|
|
|
SSAnne2Text1:
|
|
text_far _SSAnne2Text1
|
|
text_end
|
|
|
|
SSAnne2Text2:
|
|
text_asm
|
|
ld hl, SSAnneRivalBeforeBattleText
|
|
call PrintText
|
|
ld hl, wd72d
|
|
set 6, [hl]
|
|
set 7, [hl]
|
|
ld hl, SSAnneRivalDefeatedText
|
|
ld de, SSAnneRivalWonText
|
|
call SaveEndBattleTextPointers
|
|
jp TextScriptEnd
|
|
|
|
SSAnneRivalBeforeBattleText:
|
|
text_far _SSAnneRivalBeforeBattleText
|
|
text_end
|
|
|
|
SSAnneRivalDefeatedText:
|
|
text_far _SSAnneRivalDefeatedText
|
|
text_end
|
|
|
|
SSAnneRivalWonText:
|
|
text_far _SSAnneRivalWonText
|
|
text_end
|
|
|
|
SSAnne2Text3:
|
|
text_far _SSAnneRivalCaptainText
|
|
text_end
|