pokered/scripts/SafariZoneGate.asm

294 lines
5.5 KiB
NASM
Raw Normal View History

SafariZoneGate_Script:
2014-05-18 18:19:10 +00:00
call EnableAutoTextBoxDrawing
ld hl, SafariZoneGate_ScriptPointers
ld a, [wSafariZoneGateCurScript]
2014-05-18 18:19:10 +00:00
jp CallFunctionInTable
SafariZoneGate_ScriptPointers:
dw .SafariZoneEntranceScript0
dw .SafariZoneEntranceScript1
dw .SafariZoneEntranceScript2
dw .SafariZoneEntranceScript3
dw .SafariZoneEntranceScript4
dw .SafariZoneEntranceScript5
dw .SafariZoneEntranceScript6
2014-05-18 18:19:10 +00:00
.SafariZoneEntranceScript0
ld hl, .CoordsData_75221
2014-05-18 18:19:10 +00:00
call ArePlayerCoordsInArray
ret nc
ld a, $3
ldh [hSpriteIndexOrTextID], a
2014-05-18 18:19:10 +00:00
call DisplayTextID
ld a, $ff
2014-05-25 17:51:53 +00:00
ld [wJoyIgnore], a
2014-05-18 18:19:10 +00:00
xor a
ldh [hJoyHeld], a
ld a, SPRITE_FACING_RIGHT
ld [wSpritePlayerStateData1FacingDirection], a
2015-07-19 03:49:52 +00:00
ld a, [wCoordIndex]
2014-05-18 18:19:10 +00:00
cp $1
jr z, .asm_7520f
2014-05-18 18:19:10 +00:00
ld a, $2
ld [wSafariZoneGateCurScript], a
2014-05-18 18:19:10 +00:00
ret
.asm_7520f
ld a, D_RIGHT
2014-05-18 18:19:10 +00:00
ld c, $1
call SafariZoneEntranceAutoWalk
2014-05-18 18:19:10 +00:00
ld a, $f0
2014-05-25 17:51:53 +00:00
ld [wJoyIgnore], a
2014-05-18 18:19:10 +00:00
ld a, $1
ld [wSafariZoneGateCurScript], a
2014-05-18 18:19:10 +00:00
ret
2016-06-12 00:24:04 +00:00
.CoordsData_75221:
2014-05-18 18:19:10 +00:00
db $02,$03
db $02,$04
db $FF
.SafariZoneEntranceScript1
2014-05-18 18:19:10 +00:00
call SafariZoneEntranceScript_752b4
ret nz
.SafariZoneEntranceScript2
2014-05-18 18:19:10 +00:00
xor a
ldh [hJoyHeld], a
2014-05-25 17:51:53 +00:00
ld [wJoyIgnore], a
2014-05-18 18:19:10 +00:00
call UpdateSprites
ld a, $4
ldh [hSpriteIndexOrTextID], a
2014-05-18 18:19:10 +00:00
call DisplayTextID
ld a, $ff
2014-05-25 17:51:53 +00:00
ld [wJoyIgnore], a
2014-05-18 18:19:10 +00:00
ret
.SafariZoneEntranceScript3
2014-05-18 18:19:10 +00:00
call SafariZoneEntranceScript_752b4
ret nz
xor a
2014-05-25 17:51:53 +00:00
ld [wJoyIgnore], a
2014-05-18 18:19:10 +00:00
ld a, $5
ld [wSafariZoneGateCurScript], a
2014-05-18 18:19:10 +00:00
ret
.SafariZoneEntranceScript5
2015-07-20 00:52:26 +00:00
ld a, PLAYER_DIR_DOWN
ld [wPlayerMovingDirection], a
2015-07-21 01:32:02 +00:00
CheckAndResetEvent EVENT_SAFARI_GAME_OVER
jr z, .asm_7527f
2015-07-21 01:32:02 +00:00
ResetEventReuseHL EVENT_IN_SAFARI_ZONE
2014-05-18 18:19:10 +00:00
call UpdateSprites
ld a, $f0
2014-05-25 17:51:53 +00:00
ld [wJoyIgnore], a
2014-05-18 18:19:10 +00:00
ld a, $6
ldh [hSpriteIndexOrTextID], a
2014-05-18 18:19:10 +00:00
call DisplayTextID
xor a
2015-08-31 02:38:41 +00:00
ld [wNumSafariBalls], a
ld a, D_DOWN
2014-05-18 18:19:10 +00:00
ld c, $3
call SafariZoneEntranceAutoWalk
2014-05-18 18:19:10 +00:00
ld a, $4
ld [wSafariZoneGateCurScript], a
jr .asm_75286
2014-05-18 18:19:10 +00:00
.asm_7527f
ld a, $5
ldh [hSpriteIndexOrTextID], a
2014-05-18 18:19:10 +00:00
call DisplayTextID
.asm_75286
ret
.SafariZoneEntranceScript4
2014-05-18 18:19:10 +00:00
call SafariZoneEntranceScript_752b4
ret nz
xor a
2014-05-25 17:51:53 +00:00
ld [wJoyIgnore], a
2014-05-18 18:19:10 +00:00
ld a, $0
ld [wSafariZoneGateCurScript], a
2014-05-18 18:19:10 +00:00
ret
.SafariZoneEntranceScript6
2014-05-18 18:19:10 +00:00
call SafariZoneEntranceScript_752b4
ret nz
call Delay3
ld a, [wcf0d]
ld [wSafariZoneGateCurScript], a
2014-05-18 18:19:10 +00:00
ret
SafariZoneEntranceAutoWalk:
2014-05-18 18:19:10 +00:00
push af
ld b, 0
ld a, c
ld [wSimulatedJoypadStatesIndex], a
ld hl, wSimulatedJoypadStatesEnd
2014-05-18 18:19:10 +00:00
pop af
call FillMemory
jp StartSimulatingJoypadStates
2014-05-18 18:19:10 +00:00
SafariZoneEntranceScript_752b4:
ld a, [wSimulatedJoypadStatesIndex]
2014-05-18 18:19:10 +00:00
and a
ret
SafariZoneGate_TextPointers:
dw .SafariZoneEntranceText1
dw .SafariZoneEntranceText2
dw .SafariZoneEntranceText1
dw .SafariZoneEntranceText4
dw .SafariZoneEntranceText5
dw .SafariZoneEntranceText6
2014-05-18 18:19:10 +00:00
.SafariZoneEntranceText1
text_far _SafariZoneEntranceText1
text_end
2014-05-18 18:19:10 +00:00
.SafariZoneEntranceText4
text_far SafariZoneEntranceText_9e6e4
text_asm
2015-07-23 13:07:12 +00:00
ld a, MONEY_BOX
ld [wTextBoxID], a
2014-05-18 18:19:10 +00:00
call DisplayTextBoxID
call YesNoChoice
ld a, [wCurrentMenuItem]
2014-05-18 18:19:10 +00:00
and a
jp nz, .PleaseComeAgain
2014-05-18 18:19:10 +00:00
xor a
ldh [hMoney], a
ld a, $05
ldh [hMoney + 1], a
ld a, $00
ldh [hMoney + 2], a
2014-05-18 18:19:10 +00:00
call HasEnoughMoney
jr nc, .success
ld hl, .NotEnoughMoneyText
2014-05-18 18:19:10 +00:00
call PrintText
jr .CantPayWalkDown
.success
2014-05-18 18:19:10 +00:00
xor a
ld [wPriceTemp], a
ld a, $05
ld [wPriceTemp + 1], a
ld a, $00
ld [wPriceTemp + 2], a
ld hl, wPriceTemp + 2
ld de, wPlayerMoney + 2
ld c, 3
predef SubBCDPredef
ld a, MONEY_BOX
ld [wTextBoxID], a
2014-05-18 18:19:10 +00:00
call DisplayTextBoxID
ld hl, .MakePaymentText
2014-05-18 18:19:10 +00:00
call PrintText
ld a, 30
ld [wNumSafariBalls], a
ld a, 502 / $100
ld [wSafariSteps], a
2014-05-18 18:19:10 +00:00
ld a, 502 % $100
ld [wSafariSteps + 1], a
ld a, D_UP
ld c, 3
call SafariZoneEntranceAutoWalk
2015-07-21 01:32:02 +00:00
SetEvent EVENT_IN_SAFARI_ZONE
ResetEventReuseHL EVENT_SAFARI_GAME_OVER
ld a, 3
ld [wSafariZoneGateCurScript], a
jr .done
.PleaseComeAgain
ld hl, .PleaseComeAgainText
2014-05-18 18:19:10 +00:00
call PrintText
.CantPayWalkDown
ld a, D_DOWN
ld c, 1
call SafariZoneEntranceAutoWalk
ld a, 4
ld [wSafariZoneGateCurScript], a
.done
2014-05-18 18:19:10 +00:00
jp TextScriptEnd
.MakePaymentText
text_far SafariZoneEntranceText_9e747
sound_get_item_1
text_far _SafariZoneEntranceText_75360
text_end
2014-05-18 18:19:10 +00:00
.PleaseComeAgainText
text_far _SafariZoneEntranceText_75365
text_end
2014-05-18 18:19:10 +00:00
.NotEnoughMoneyText
text_far _SafariZoneEntranceText_7536a
text_end
2014-05-18 18:19:10 +00:00
.SafariZoneEntranceText5
text_far SafariZoneEntranceText_9e814
text_asm
2014-05-18 18:19:10 +00:00
call YesNoChoice
ld a, [wCurrentMenuItem]
2014-05-18 18:19:10 +00:00
and a
jr nz, .asm_7539c
ld hl, .SafariZoneEntranceText_753bb
2014-05-18 18:19:10 +00:00
call PrintText
xor a
ld [wSpritePlayerStateData1FacingDirection], a
ld a, D_DOWN
2014-05-18 18:19:10 +00:00
ld c, $3
call SafariZoneEntranceAutoWalk
2015-07-21 01:32:02 +00:00
ResetEvents EVENT_SAFARI_GAME_OVER, EVENT_IN_SAFARI_ZONE
2014-05-18 18:19:10 +00:00
ld a, $0
ld [wcf0d], a
jr .asm_753b3
2014-05-18 18:19:10 +00:00
.asm_7539c
ld hl, .SafariZoneEntranceText_753c0
2014-05-18 18:19:10 +00:00
call PrintText
ld a, SPRITE_FACING_UP
ld [wSpritePlayerStateData1FacingDirection], a
ld a, D_UP
2014-05-18 18:19:10 +00:00
ld c, $1
call SafariZoneEntranceAutoWalk
2014-05-18 18:19:10 +00:00
ld a, $5
ld [wcf0d], a
2014-05-18 18:19:10 +00:00
.asm_753b3
ld a, $6
ld [wSafariZoneGateCurScript], a
2014-05-18 18:19:10 +00:00
jp TextScriptEnd
.SafariZoneEntranceText_753bb
text_far _SafariZoneEntranceText_753bb
text_end
2014-05-18 18:19:10 +00:00
.SafariZoneEntranceText_753c0
text_far _SafariZoneEntranceText_753c0
text_end
2014-05-18 18:19:10 +00:00
.SafariZoneEntranceText6
text_far _SafariZoneEntranceText_753c5
text_end
2014-05-18 18:19:10 +00:00
.SafariZoneEntranceText2
text_asm
ld hl, .FirstTimeQuestionText
2014-05-18 18:19:10 +00:00
call PrintText
call YesNoChoice
ld a, [wCurrentMenuItem]
2014-05-18 18:19:10 +00:00
and a
ld hl, .RegularText
jr nz, .Explanation
ld hl, .ExplanationText
.Explanation
2014-05-18 18:19:10 +00:00
call PrintText
jp TextScriptEnd
.FirstTimeQuestionText
text_far _SafariZoneEntranceText_753e6
text_end
2014-05-18 18:19:10 +00:00
.ExplanationText
text_far _SafariZoneEntranceText_753eb
text_end
2014-05-18 18:19:10 +00:00
.RegularText
text_far _SafariZoneEntranceText_753f0
text_end