pokered/engine/events/hidden_objects/school_blackboard.asm

224 lines
4.3 KiB
NASM

PrintBlackboardLinkCableText:
call EnableAutoTextBoxDrawing
ld a, $1
ld [wDoNotWaitForButtonPressAfterDisplayingText], a
ld a, [wHiddenObjectFunctionArgument]
call PrintPredefTextID
ret
LinkCableHelp::
text_asm
call SaveScreenTilesToBuffer1
ld hl, LinkCableHelpText1
call PrintText
xor a
ld [wMenuItemOffset], a ; not used
ld [wCurrentMenuItem], a
ld [wLastMenuItem], a
ld a, A_BUTTON | B_BUTTON
ld [wMenuWatchedKeys], a
ld a, 3
ld [wMaxMenuItem], a
ld a, 2
ld [wTopMenuItemY], a
ld a, 1
ld [wTopMenuItemX], a
.linkHelpLoop
ld hl, wStatusFlags5
set BIT_NO_TEXT_DELAY, [hl]
hlcoord 0, 0
ld b, 8
ld c, 13
call TextBoxBorder
hlcoord 2, 2
ld de, HowToLinkText
call PlaceString
ld hl, LinkCableHelpText2
call PrintText
call HandleMenuInput
bit BIT_B_BUTTON, a
jr nz, .exit
ld a, [wCurrentMenuItem]
cp 3 ; pressed a on "STOP READING"
jr z, .exit
ld hl, wStatusFlags5
res BIT_NO_TEXT_DELAY, [hl]
ld hl, LinkCableInfoTexts
add a
ld d, 0
ld e, a
add hl, de
ld a, [hli]
ld h, [hl]
ld l, a
call PrintText
jp .linkHelpLoop
.exit
ld hl, wStatusFlags5
res BIT_NO_TEXT_DELAY, [hl]
call LoadScreenTilesFromBuffer1
jp TextScriptEnd
LinkCableHelpText1:
text_far _LinkCableHelpText1
text_end
LinkCableHelpText2:
text_far _LinkCableHelpText2
text_end
HowToLinkText:
db "HOW TO LINK"
next "COLOSSEUM"
next "TRADE CENTER"
next "STOP READING@"
LinkCableInfoTexts:
dw LinkCableInfoText1
dw LinkCableInfoText2
dw LinkCableInfoText3
LinkCableInfoText1:
text_far _LinkCableInfoText1
text_end
LinkCableInfoText2:
text_far _LinkCableInfoText2
text_end
LinkCableInfoText3:
text_far _LinkCableInfoText3
text_end
ViridianSchoolBlackboard::
text_asm
call SaveScreenTilesToBuffer1
ld hl, ViridianSchoolBlackboardText1
call PrintText
xor a
ld [wMenuItemOffset], a
ld [wCurrentMenuItem], a
ld [wLastMenuItem], a
ld a, D_LEFT | D_RIGHT | A_BUTTON | B_BUTTON
ld [wMenuWatchedKeys], a
ld a, 2
ld [wMaxMenuItem], a
ld a, 2
ld [wTopMenuItemY], a
ld a, 1
ld [wTopMenuItemX], a
.blackboardLoop
ld hl, wStatusFlags5
set BIT_NO_TEXT_DELAY, [hl]
hlcoord 0, 0
lb bc, 6, 10
call TextBoxBorder
hlcoord 1, 2
ld de, StatusAilmentText1
call PlaceString
hlcoord 6, 2
ld de, StatusAilmentText2
call PlaceString
ld hl, ViridianSchoolBlackboardText2
call PrintText
call HandleMenuInput ; pressing up and down is handled in here
bit BIT_B_BUTTON, a ; pressed b
jr nz, .exitBlackboard
bit BIT_D_RIGHT, a
jr z, .didNotPressRight
; move cursor to right column
ld a, 2
ld [wMaxMenuItem], a
ld a, 2
ld [wTopMenuItemY], a
ld a, 6
ld [wTopMenuItemX], a
ld a, 3 ; in the the right column, use an offset to prevent overlap
ld [wMenuItemOffset], a
jr .blackboardLoop
.didNotPressRight
bit BIT_D_LEFT, a
jr z, .didNotPressLeftOrRight
; move cursor to left column
ld a, 2
ld [wMaxMenuItem], a
ld a, 2
ld [wTopMenuItemY], a
ld a, 1
ld [wTopMenuItemX], a
xor a
ld [wMenuItemOffset], a
jr .blackboardLoop
.didNotPressLeftOrRight
ld a, [wCurrentMenuItem]
ld b, a
ld a, [wMenuItemOffset]
add b
cp 5 ; cursor is pointing to "QUIT"
jr z, .exitBlackboard
; we must have pressed a on a status condition
; so print the text
ld hl, wStatusFlags5
res BIT_NO_TEXT_DELAY, [hl]
ld hl, ViridianBlackboardStatusPointers
add a
ld d, 0
ld e, a
add hl, de
ld a, [hli]
ld h, [hl]
ld l, a
call PrintText
jp .blackboardLoop
.exitBlackboard
ld hl, wStatusFlags5
res BIT_NO_TEXT_DELAY, [hl]
call LoadScreenTilesFromBuffer1
jp TextScriptEnd
ViridianSchoolBlackboardText1:
text_far _ViridianSchoolBlackboardText1
text_end
ViridianSchoolBlackboardText2:
text_far _ViridianSchoolBlackboardText2
text_end
StatusAilmentText1:
db " SLP"
next " PSN"
next " PAR@"
StatusAilmentText2:
db " BRN"
next " FRZ"
next " QUIT@"
db "@" ; unused
ViridianBlackboardStatusPointers:
dw ViridianBlackboardSleepText
dw ViridianBlackboardPoisonText
dw ViridianBlackboardPrlzText
dw ViridianBlackboardBurnText
dw ViridianBlackboardFrozenText
ViridianBlackboardSleepText:
text_far _ViridianBlackboardSleepText
text_end
ViridianBlackboardPoisonText:
text_far _ViridianBlackboardPoisonText
text_end
ViridianBlackboardPrlzText:
text_far _ViridianBlackboardPrlzText
text_end
ViridianBlackboardBurnText:
text_far _ViridianBlackboardBurnText
text_end
ViridianBlackboardFrozenText:
text_far _ViridianBlackboardFrozenText
text_end