pokered/scripts/Museum1F.asm
vulcandth d001ced41b
Add macros, constants, and labels for map scripts and text (#367)
This introduces `def_script_pointers`, `def_text_pointers`, and `object_const_def` macros, and applies them to all maps. Most other map labels have also been identified.
2023-07-13 21:27:56 -04:00

249 lines
4.8 KiB
NASM

Museum1F_Script:
ld a, TRUE
ld [wAutoTextBoxDrawingControl], a
xor a
ld [wDoNotWaitForButtonPressAfterDisplayingText], a
ld hl, Museum1F_ScriptPointers
ld a, [wMuseum1FCurScript]
jp CallFunctionInTable
Museum1F_ScriptPointers:
def_script_pointers
dw_const Museum1FDefaultScript, SCRIPT_MUSEUM1F_DEFAULT
dw_const Museum1FNoopScript, SCRIPT_MUSEUM1F_NOOP
Museum1FDefaultScript:
ld a, [wYCoord]
cp 4
ret nz
ld a, [wXCoord]
cp 9
jr z, .continue
ld a, [wXCoord]
cp 10
ret nz
.continue
xor a
ldh [hJoyHeld], a
ld a, TEXT_MUSEUM1F_SCIENTIST1
ldh [hSpriteIndexOrTextID], a
jp DisplayTextID
Museum1FNoopScript:
ret
Museum1F_TextPointers:
def_text_pointers
dw_const Museum1FScientist1Text, TEXT_MUSEUM1F_SCIENTIST1
dw_const Museum1FGamblerText, TEXT_MUSEUM1F_GAMBLER
dw_const Museum1FScientist2Text, TEXT_MUSEUM1F_SCIENTIST2
dw_const Museum1FScientist3Text, TEXT_MUSEUM1F_SCIENTIST3
dw_const Museum1FOldAmberText, TEXT_MUSEUM1F_OLD_AMBER
Museum1FScientist1Text:
text_asm
ld a, [wYCoord]
cp 4
jr nz, .not_right_of_scientist
ld a, [wXCoord]
cp 13
jp z, .behind_counter
jr .check_ticket
.not_right_of_scientist
cp 3
jr nz, .not_behind_counter
ld a, [wXCoord]
cp 12
jp z, .behind_counter
.not_behind_counter
CheckEvent EVENT_BOUGHT_MUSEUM_TICKET
jr nz, .already_bought_ticket
ld hl, .GoToOtherSideText
call PrintText
jp .done
.check_ticket
CheckEvent EVENT_BOUGHT_MUSEUM_TICKET
jr z, .no_ticket
.already_bought_ticket
ld hl, .TakePlentyOfTimeText
call PrintText
jp .done
.no_ticket
ld a, MONEY_BOX
ld [wTextBoxID], a
call DisplayTextBoxID
xor a
ldh [hJoyHeld], a
ld hl, .WouldYouLikeToComeInText
call PrintText
call YesNoChoice
ld a, [wCurrentMenuItem]
and a
jr nz, .deny_entry
xor a
ldh [hMoney], a
ldh [hMoney + 1], a
ld a, $50
ldh [hMoney + 2], a
call HasEnoughMoney
jr nc, .buy_ticket
ld hl, .DontHaveEnoughMoneyText
call PrintText
jp .deny_entry
.buy_ticket
ld hl, .ThankYouText
call PrintText
SetEvent EVENT_BOUGHT_MUSEUM_TICKET
xor a
ld [wPriceTemp], a
ld [wPriceTemp + 1], a
ld a, $50
ld [wPriceTemp + 2], a
ld hl, wPriceTemp + 2
ld de, wPlayerMoney + 2
ld c, $3
predef SubBCDPredef
ld a, MONEY_BOX
ld [wTextBoxID], a
call DisplayTextBoxID
ld a, SFX_PURCHASE
call PlaySoundWaitForCurrent
call WaitForSoundToFinish
jr .allow_entry
.deny_entry
ld hl, .ComeAgainText
call PrintText
ld a, $1
ld [wSimulatedJoypadStatesIndex], a
ld a, D_DOWN
ld [wSimulatedJoypadStatesEnd], a
call StartSimulatingJoypadStates
call UpdateSprites
jr .done
.allow_entry
ld a, SCRIPT_MUSEUM1F_NOOP
ld [wMuseum1FCurScript], a
jr .done
.behind_counter
ld hl, .DoYouKnowWhatAmberIsText
call PrintText
call YesNoChoice
ld a, [wCurrentMenuItem]
cp $0
jr nz, .explain_amber
ld hl, .TheresALabSomewhereText
call PrintText
jr .done
.explain_amber
ld hl, .AmberIsFossilizedTreeSapText
call PrintText
.done
jp TextScriptEnd
.ComeAgainText:
text_far _Museum1FScientist1ComeAgainText
text_end
.WouldYouLikeToComeInText:
text_far _Museum1FScientist1WouldYouLikeToComeInText
text_end
.ThankYouText:
text_far _Museum1FScientist1ThankYouText
text_end
.DontHaveEnoughMoneyText:
text_far _Museum1FScientist1DontHaveEnoughMoneyText
text_end
.DoYouKnowWhatAmberIsText:
text_far _Museum1FScientist1DoYouKnowWhatAmberIsText
text_end
.TheresALabSomewhereText:
text_far _Museum1FScientist1TheresALabSomewhereText
text_end
.AmberIsFossilizedTreeSapText:
text_far _Museum1FScientist1AmberIsFossilizedTreeSapText
text_end
.GoToOtherSideText:
text_far _Museum1FScientist1GoToOtherSideText
text_end
.TakePlentyOfTimeText:
text_far _Museum1FScientist1TakePlentyOfTimeText
text_end
Museum1FGamblerText:
text_asm
ld hl, .Text
call PrintText
jp TextScriptEnd
.Text:
text_far _Museum1FGamblerText
text_end
Museum1FScientist2Text:
text_asm
CheckEvent EVENT_GOT_OLD_AMBER
jr nz, .got_item
ld hl, .TakeThisToAPokemonLabText
call PrintText
lb bc, OLD_AMBER, 1
call GiveItem
jr nc, .bag_full
SetEvent EVENT_GOT_OLD_AMBER
ld a, HS_OLD_AMBER
ld [wMissableObjectIndex], a
predef HideObject
ld hl, .ReceivedOldAmberText
jr .done
.bag_full
ld hl, .YouDontHaveSpaceText
jr .done
.got_item
ld hl, .GetTheOldAmberCheckText
.done
call PrintText
jp TextScriptEnd
.TakeThisToAPokemonLabText:
text_far _Museum1FScientist2TakeThisToAPokemonLabText
text_end
.ReceivedOldAmberText:
text_far _Museum1FScientist2ReceivedOldAmberText
sound_get_item_1
text_end
.GetTheOldAmberCheckText:
text_far _Museum1FScientist2GetTheOldAmberCheckText
text_end
.YouDontHaveSpaceText:
text_far _Museum1FScientist2YouDontHaveSpaceText
text_end
Museum1FScientist3Text:
text_asm
ld hl, .Text
call PrintText
jp TextScriptEnd
.Text:
text_far _Museum1FScientist3Text
text_end
Museum1FOldAmberText:
text_asm
ld hl, .Text
call PrintText
jp TextScriptEnd
.Text:
text_far _Museum1FOldAmberText
text_end