kep-hack/scripts/HallOfFame.asm
May Evans 67132fefcb Yujirou Event Scripting, half-finished
This code has a lot of problems with solutions that me and Frrf can't seem to figure out. We've taken a lot of references from Erika's Gym but we've got many bugs after Yujirou is defeated, such as one case where you end up instantly doing the rematch fight, which is insane because there's no way this can actually happen.

What's committed is a fight that can be re-fought when it shouldn't.
2023-03-30 21:01:18 +01:00

128 lines
2.5 KiB
NASM

HallOfFame_Script:
call EnableAutoTextBoxDrawing
ld hl, HallOfFame_ScriptPointers
ld a, [wHallOfFameCurScript]
jp CallFunctionInTable
HallofFameRoomScript_5a4aa:
xor a
ld [wJoyIgnore], a
ld [wHallOfFameCurScript], a
ret
HallOfFame_ScriptPointers:
dw HallofFameRoomScript0
dw HallofFameRoomScript1
dw HallofFameRoomScript2
dw HallofFameRoomScript3
HallofFameRoomScript3:
ret
HallofFameRoomScript2:
call Delay3
ld a, [wLetterPrintingDelayFlags]
push af
xor a
ld [wJoyIgnore], a
predef HallOfFamePC
pop af
ld [wLetterPrintingDelayFlags], a
ld hl, wFlags_D733
res 1, [hl]
inc hl
set 0, [hl]
xor a
ld hl, wLoreleisRoomCurScript
ld [hli], a ; wLoreleisRoomCurScript
ld [hli], a ; wBrunosRoomCurScript
ld [hl], a ; wAgathasRoomCurScript
ld [wLancesRoomCurScript], a
ld [wHallOfFameCurScript], a
; Elite 4 events
ResetEventRange ELITE4_EVENTS_START, ELITE4_CHAMPION_EVENTS_END, 1
xor a
ld [wHallOfFameCurScript], a
ld a, PALLET_TOWN
ld [wLastBlackoutMap], a
farcall SaveSAVtoSRAM
ld b, 5
.delayLoop
ld c, 600 / 5
call DelayFrames
dec b
jr nz, .delayLoop
call WaitForTextScrollButtonPress
jp Init
HallofFameRoomScript0:
ld a, $ff
ld [wJoyIgnore], a
ld hl, wSimulatedJoypadStatesEnd
ld de, RLEMovement5a528
call DecodeRLEList
dec a
ld [wSimulatedJoypadStatesIndex], a
call StartSimulatingJoypadStates
ld a, $1
ld [wHallOfFameCurScript], a
ret
RLEMovement5a528:
db D_UP, 5
db -1 ; end
HallofFameRoomScript1:
ld a, [wSimulatedJoypadStatesIndex]
and a
ret nz
ld a, PLAYER_DIR_RIGHT
ld [wPlayerMovingDirection], a
ld a, $1
ldh [hSpriteIndex], a
call SetSpriteMovementBytesToFF
ld a, SPRITE_FACING_LEFT
ldh [hSpriteFacingDirection], a
call SetSpriteFacingDirectionAndDelay
call Delay3
xor a
ld [wJoyIgnore], a
inc a ; PLAYER_DIR_RIGHT
ld [wPlayerMovingDirection], a
ld a, $1
ldh [hSpriteIndexOrTextID], a
call DisplayTextID
ld a, $ff
ld [wJoyIgnore], a
ld a, HS_CERULEAN_CAVE_GUY
ld [wMissableObjectIndex], a
predef HideObject
ld a, HS_MT_MOON_CRATER_GUARD
ld [wMissableObjectIndex], a
predef HideObject
ld a, HS_ROUTE_1_OAK
ld [wMissableObjectIndex], a
predef ShowObject
ld a, HS_BILLS_NIDORINO
ld [wMissableObjectIndex], a
predef HideObject
ld a, HS_MANSION_GUARD
ld [wMissableObjectIndex], a
predef HideObject
ld a, HS_YUJIROU
ld [wMissableObjectIndex], a
predef HideObject
ld a, HS_YUJIROU_REMATCH
ld [wMissableObjectIndex], a
predef ShowObject
ld a, $2
ld [wHallOfFameCurScript], a
ret
HallOfFame_TextPointers:
dw HallofFameRoomText1
HallofFameRoomText1:
text_far _HallofFameRoomText1
text_end