mirror of
https://github.com/thornAvery/kep-hack.git
synced 2025-09-16 18:30:50 +12:00
Split up engine/events/hidden_object_functions
This commit is contained in:
parent
6bd86e10c3
commit
e882708b85
|
@ -1,475 +0,0 @@
|
||||||
PrintRedSNESText:
|
|
||||||
call EnableAutoTextBoxDrawing
|
|
||||||
tx_pre_jump RedBedroomSNESText
|
|
||||||
|
|
||||||
RedBedroomSNESText::
|
|
||||||
TX_FAR _RedBedroomSNESText
|
|
||||||
db "@"
|
|
||||||
|
|
||||||
OpenRedsPC:
|
|
||||||
call EnableAutoTextBoxDrawing
|
|
||||||
tx_pre_jump RedBedroomPCText
|
|
||||||
|
|
||||||
RedBedroomPCText::
|
|
||||||
TX_PLAYERS_PC
|
|
||||||
|
|
||||||
Route15GateLeftBinoculars:
|
|
||||||
ld a, [wSpriteStateData1 + 9]
|
|
||||||
cp SPRITE_FACING_UP
|
|
||||||
ret nz
|
|
||||||
call EnableAutoTextBoxDrawing
|
|
||||||
tx_pre Route15UpstairsBinocularsText
|
|
||||||
ld a, ARTICUNO
|
|
||||||
ld [wcf91], a
|
|
||||||
call PlayCry
|
|
||||||
jp DisplayMonFrontSpriteInBox
|
|
||||||
|
|
||||||
Route15UpstairsBinocularsText::
|
|
||||||
TX_FAR _Route15UpstairsBinocularsText
|
|
||||||
db "@"
|
|
||||||
|
|
||||||
AerodactylFossil:
|
|
||||||
ld a, FOSSIL_AERODACTYL
|
|
||||||
ld [wcf91], a
|
|
||||||
call DisplayMonFrontSpriteInBox
|
|
||||||
call EnableAutoTextBoxDrawing
|
|
||||||
tx_pre AerodactylFossilText
|
|
||||||
ret
|
|
||||||
|
|
||||||
AerodactylFossilText::
|
|
||||||
TX_FAR _AerodactylFossilText
|
|
||||||
db "@"
|
|
||||||
|
|
||||||
KabutopsFossil:
|
|
||||||
ld a, FOSSIL_KABUTOPS
|
|
||||||
ld [wcf91], a
|
|
||||||
call DisplayMonFrontSpriteInBox
|
|
||||||
call EnableAutoTextBoxDrawing
|
|
||||||
tx_pre KabutopsFossilText
|
|
||||||
ret
|
|
||||||
|
|
||||||
KabutopsFossilText::
|
|
||||||
TX_FAR _KabutopsFossilText
|
|
||||||
db "@"
|
|
||||||
|
|
||||||
DisplayMonFrontSpriteInBox:
|
|
||||||
; Displays a pokemon's front sprite in a pop-up window.
|
|
||||||
; [wcf91] = pokemon internal id number
|
|
||||||
ld a, 1
|
|
||||||
ld [H_AUTOBGTRANSFERENABLED], a
|
|
||||||
call Delay3
|
|
||||||
xor a
|
|
||||||
ld [hWY], a
|
|
||||||
call SaveScreenTilesToBuffer1
|
|
||||||
ld a, MON_SPRITE_POPUP
|
|
||||||
ld [wTextBoxID], a
|
|
||||||
call DisplayTextBoxID
|
|
||||||
call UpdateSprites
|
|
||||||
ld a, [wcf91]
|
|
||||||
ld [wd0b5], a
|
|
||||||
call GetMonHeader
|
|
||||||
ld de, vChars1 + $310
|
|
||||||
call LoadMonFrontSprite
|
|
||||||
ld a, $80
|
|
||||||
ld [hStartTileID], a
|
|
||||||
coord hl, 10, 11
|
|
||||||
predef AnimateSendingOutMon
|
|
||||||
call WaitForTextScrollButtonPress
|
|
||||||
call LoadScreenTilesFromBuffer1
|
|
||||||
call Delay3
|
|
||||||
ld a, $90
|
|
||||||
ld [hWY], a
|
|
||||||
ret
|
|
||||||
|
|
||||||
PrintBlackboardLinkCableText:
|
|
||||||
call EnableAutoTextBoxDrawing
|
|
||||||
ld a, $1
|
|
||||||
ld [wDoNotWaitForButtonPressAfterDisplayingText], a
|
|
||||||
ld a, [wHiddenObjectFunctionArgument]
|
|
||||||
call PrintPredefTextID
|
|
||||||
ret
|
|
||||||
|
|
||||||
LinkCableHelp::
|
|
||||||
TX_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, wd730
|
|
||||||
set 6, [hl]
|
|
||||||
coord hl, 0, 0
|
|
||||||
ld b, 8
|
|
||||||
ld c, 13
|
|
||||||
call TextBoxBorder
|
|
||||||
coord hl, 2, 2
|
|
||||||
ld de, HowToLinkText
|
|
||||||
call PlaceString
|
|
||||||
ld hl, LinkCableHelpText2
|
|
||||||
call PrintText
|
|
||||||
call HandleMenuInput
|
|
||||||
bit 1, a ; pressed b
|
|
||||||
jr nz, .exit
|
|
||||||
ld a, [wCurrentMenuItem]
|
|
||||||
cp 3 ; pressed a on "STOP READING"
|
|
||||||
jr z, .exit
|
|
||||||
ld hl, wd730
|
|
||||||
res 6, [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, wd730
|
|
||||||
res 6, [hl]
|
|
||||||
call LoadScreenTilesFromBuffer1
|
|
||||||
jp TextScriptEnd
|
|
||||||
|
|
||||||
LinkCableHelpText1:
|
|
||||||
TX_FAR _LinkCableHelpText1
|
|
||||||
db "@"
|
|
||||||
|
|
||||||
LinkCableHelpText2:
|
|
||||||
TX_FAR _LinkCableHelpText2
|
|
||||||
db "@"
|
|
||||||
|
|
||||||
HowToLinkText:
|
|
||||||
db "HOW TO LINK"
|
|
||||||
next "COLOSSEUM"
|
|
||||||
next "TRADE CENTER"
|
|
||||||
next "STOP READING@"
|
|
||||||
|
|
||||||
LinkCableInfoTexts:
|
|
||||||
dw LinkCableInfoText1
|
|
||||||
dw LinkCableInfoText2
|
|
||||||
dw LinkCableInfoText3
|
|
||||||
|
|
||||||
LinkCableInfoText1:
|
|
||||||
TX_FAR _LinkCableInfoText1
|
|
||||||
db "@"
|
|
||||||
|
|
||||||
LinkCableInfoText2:
|
|
||||||
TX_FAR _LinkCableInfoText2
|
|
||||||
db "@"
|
|
||||||
|
|
||||||
LinkCableInfoText3:
|
|
||||||
TX_FAR _LinkCableInfoText3
|
|
||||||
db "@"
|
|
||||||
|
|
||||||
ViridianSchoolBlackboard::
|
|
||||||
TX_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, wd730
|
|
||||||
set 6, [hl]
|
|
||||||
coord hl, 0, 0
|
|
||||||
lb bc, 6, 10
|
|
||||||
call TextBoxBorder
|
|
||||||
coord hl, 1, 2
|
|
||||||
ld de, StatusAilmentText1
|
|
||||||
call PlaceString
|
|
||||||
coord hl, 6, 2
|
|
||||||
ld de, StatusAilmentText2
|
|
||||||
call PlaceString
|
|
||||||
ld hl, ViridianSchoolBlackboardText2
|
|
||||||
call PrintText
|
|
||||||
call HandleMenuInput ; pressing up and down is handled in here
|
|
||||||
bit 1, a ; pressed b
|
|
||||||
jr nz, .exitBlackboard
|
|
||||||
bit 4, a ; pressed right
|
|
||||||
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 5, a ; pressed left
|
|
||||||
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, wd730
|
|
||||||
res 6, [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, wd730
|
|
||||||
res 6, [hl]
|
|
||||||
call LoadScreenTilesFromBuffer1
|
|
||||||
jp TextScriptEnd
|
|
||||||
|
|
||||||
ViridianSchoolBlackboardText1:
|
|
||||||
TX_FAR _ViridianSchoolBlackboardText1
|
|
||||||
db "@"
|
|
||||||
|
|
||||||
ViridianSchoolBlackboardText2:
|
|
||||||
TX_FAR _ViridianSchoolBlackboardText2
|
|
||||||
db "@"
|
|
||||||
|
|
||||||
StatusAilmentText1:
|
|
||||||
db " SLP"
|
|
||||||
next " PSN"
|
|
||||||
next " PAR@"
|
|
||||||
|
|
||||||
StatusAilmentText2:
|
|
||||||
db " BRN"
|
|
||||||
next " FRZ"
|
|
||||||
next " QUIT@@"
|
|
||||||
|
|
||||||
ViridianBlackboardStatusPointers:
|
|
||||||
dw ViridianBlackboardSleepText
|
|
||||||
dw ViridianBlackboardPoisonText
|
|
||||||
dw ViridianBlackboardPrlzText
|
|
||||||
dw ViridianBlackboardBurnText
|
|
||||||
dw ViridianBlackboardFrozenText
|
|
||||||
|
|
||||||
ViridianBlackboardSleepText:
|
|
||||||
TX_FAR _ViridianBlackboardSleepText
|
|
||||||
db "@"
|
|
||||||
|
|
||||||
ViridianBlackboardPoisonText:
|
|
||||||
TX_FAR _ViridianBlackboardPoisonText
|
|
||||||
db "@"
|
|
||||||
|
|
||||||
ViridianBlackboardPrlzText:
|
|
||||||
TX_FAR _ViridianBlackboardPrlzText
|
|
||||||
db "@"
|
|
||||||
|
|
||||||
ViridianBlackboardBurnText:
|
|
||||||
TX_FAR _ViridianBlackboardBurnText
|
|
||||||
db "@"
|
|
||||||
|
|
||||||
ViridianBlackboardFrozenText:
|
|
||||||
TX_FAR _ViridianBlackboardFrozenText
|
|
||||||
db "@"
|
|
||||||
|
|
||||||
PrintTrashText:
|
|
||||||
call EnableAutoTextBoxDrawing
|
|
||||||
tx_pre_jump VermilionGymTrashText
|
|
||||||
|
|
||||||
VermilionGymTrashText::
|
|
||||||
TX_FAR _VermilionGymTrashText
|
|
||||||
db "@"
|
|
||||||
|
|
||||||
GymTrashScript:
|
|
||||||
call EnableAutoTextBoxDrawing
|
|
||||||
ld a, [wHiddenObjectFunctionArgument]
|
|
||||||
ld [wGymTrashCanIndex], a
|
|
||||||
|
|
||||||
; Don't do the trash can puzzle if it's already been done.
|
|
||||||
CheckEvent EVENT_2ND_LOCK_OPENED
|
|
||||||
jr z, .ok
|
|
||||||
|
|
||||||
tx_pre_jump VermilionGymTrashText
|
|
||||||
|
|
||||||
.ok
|
|
||||||
CheckEventReuseA EVENT_1ST_LOCK_OPENED
|
|
||||||
jr nz, .trySecondLock
|
|
||||||
|
|
||||||
ld a, [wFirstLockTrashCanIndex]
|
|
||||||
ld b, a
|
|
||||||
ld a, [wGymTrashCanIndex]
|
|
||||||
cp b
|
|
||||||
jr z, .openFirstLock
|
|
||||||
|
|
||||||
tx_pre_id VermilionGymTrashText
|
|
||||||
jr .done
|
|
||||||
|
|
||||||
.openFirstLock
|
|
||||||
; Next can is trying for the second switch.
|
|
||||||
SetEvent EVENT_1ST_LOCK_OPENED
|
|
||||||
|
|
||||||
ld hl, GymTrashCans
|
|
||||||
ld a, [wGymTrashCanIndex]
|
|
||||||
; * 5
|
|
||||||
ld b, a
|
|
||||||
add a
|
|
||||||
add a
|
|
||||||
add b
|
|
||||||
|
|
||||||
ld d, 0
|
|
||||||
ld e, a
|
|
||||||
add hl, de
|
|
||||||
ld a, [hli]
|
|
||||||
|
|
||||||
; There is a bug in this code. It should calculate a value in the range [0, 3]
|
|
||||||
; but if the mask and random number don't have any 1 bits in common, then
|
|
||||||
; the result of the AND will be 0. When 1 is subtracted from that, the value
|
|
||||||
; will become $ff. This will result in 255 being added to hl, which will cause
|
|
||||||
; hl to point to one of the zero bytes that pad the end of the ROM bank.
|
|
||||||
; Trash can 0 was intended to be able to have the second lock only when the
|
|
||||||
; first lock was in trash can 1 or 3. However, due to this bug, trash can 0 can
|
|
||||||
; have the second lock regardless of which trash can had the first lock.
|
|
||||||
|
|
||||||
ld [hGymTrashCanRandNumMask], a
|
|
||||||
push hl
|
|
||||||
call Random
|
|
||||||
swap a
|
|
||||||
ld b, a
|
|
||||||
ld a, [hGymTrashCanRandNumMask]
|
|
||||||
and b
|
|
||||||
dec a
|
|
||||||
pop hl
|
|
||||||
|
|
||||||
ld d, 0
|
|
||||||
ld e, a
|
|
||||||
add hl, de
|
|
||||||
ld a, [hl]
|
|
||||||
and $f
|
|
||||||
ld [wSecondLockTrashCanIndex], a
|
|
||||||
|
|
||||||
tx_pre_id VermilionGymTrashSuccessText1
|
|
||||||
jr .done
|
|
||||||
|
|
||||||
.trySecondLock
|
|
||||||
ld a, [wSecondLockTrashCanIndex]
|
|
||||||
ld b, a
|
|
||||||
ld a, [wGymTrashCanIndex]
|
|
||||||
cp b
|
|
||||||
jr z, .openSecondLock
|
|
||||||
|
|
||||||
; Reset the cans.
|
|
||||||
ResetEvent EVENT_1ST_LOCK_OPENED
|
|
||||||
call Random
|
|
||||||
|
|
||||||
and $e
|
|
||||||
ld [wFirstLockTrashCanIndex], a
|
|
||||||
|
|
||||||
tx_pre_id VermilionGymTrashFailText
|
|
||||||
jr .done
|
|
||||||
|
|
||||||
.openSecondLock
|
|
||||||
; Completed the trash can puzzle.
|
|
||||||
SetEvent EVENT_2ND_LOCK_OPENED
|
|
||||||
ld hl, wCurrentMapScriptFlags
|
|
||||||
set 6, [hl]
|
|
||||||
|
|
||||||
tx_pre_id VermilionGymTrashSuccessText3
|
|
||||||
|
|
||||||
.done
|
|
||||||
jp PrintPredefTextID
|
|
||||||
|
|
||||||
GymTrashCans:
|
|
||||||
; byte 0: mask for random number
|
|
||||||
; bytes 1-4: indices of the trash cans that can have the second lock
|
|
||||||
; (but see the comment above explaining a bug regarding this)
|
|
||||||
; Note that the mask is simply the number of valid trash can indices that
|
|
||||||
; follow. The remaining bytes are filled with 0 to pad the length of each entry
|
|
||||||
; to 5 bytes.
|
|
||||||
db 2, 1, 3, 0, 0 ; 0
|
|
||||||
db 3, 0, 2, 4, 0 ; 1
|
|
||||||
db 2, 1, 5, 0, 0 ; 2
|
|
||||||
db 3, 0, 4, 6, 0 ; 3
|
|
||||||
db 4, 1, 3, 5, 7 ; 4
|
|
||||||
db 3, 2, 4, 8, 0 ; 5
|
|
||||||
db 3, 3, 7, 9, 0 ; 6
|
|
||||||
db 4, 4, 6, 8, 10 ; 7
|
|
||||||
db 3, 5, 7, 11, 0 ; 8
|
|
||||||
db 3, 6, 10, 12, 0 ; 9
|
|
||||||
db 4, 7, 9, 11, 13 ; 10
|
|
||||||
db 3, 8, 10, 14, 0 ; 11
|
|
||||||
db 2, 9, 13, 0, 0 ; 12
|
|
||||||
db 3, 10, 12, 14, 0 ; 13
|
|
||||||
db 2, 11, 13, 0, 0 ; 14
|
|
||||||
|
|
||||||
VermilionGymTrashSuccessText1::
|
|
||||||
TX_FAR _VermilionGymTrashSuccessText1
|
|
||||||
TX_ASM
|
|
||||||
call WaitForSoundToFinish
|
|
||||||
ld a, SFX_SWITCH
|
|
||||||
call PlaySound
|
|
||||||
call WaitForSoundToFinish
|
|
||||||
jp TextScriptEnd
|
|
||||||
|
|
||||||
; unused
|
|
||||||
VermilionGymTrashSuccessText2::
|
|
||||||
TX_FAR _VermilionGymTrashSuccessText2
|
|
||||||
db "@"
|
|
||||||
|
|
||||||
; unused
|
|
||||||
VermilionGymTrashSuccesPlaySfx:
|
|
||||||
TX_ASM
|
|
||||||
call WaitForSoundToFinish
|
|
||||||
ld a, SFX_SWITCH
|
|
||||||
call PlaySound
|
|
||||||
call WaitForSoundToFinish
|
|
||||||
jp TextScriptEnd
|
|
||||||
|
|
||||||
VermilionGymTrashSuccessText3::
|
|
||||||
TX_FAR _VermilionGymTrashSuccessText3
|
|
||||||
TX_ASM
|
|
||||||
call WaitForSoundToFinish
|
|
||||||
ld a, SFX_GO_INSIDE
|
|
||||||
call PlaySound
|
|
||||||
call WaitForSoundToFinish
|
|
||||||
jp TextScriptEnd
|
|
||||||
|
|
||||||
VermilionGymTrashFailText::
|
|
||||||
TX_FAR _VermilionGymTrashFailText
|
|
||||||
TX_ASM
|
|
||||||
call WaitForSoundToFinish
|
|
||||||
ld a, SFX_DENIED
|
|
||||||
call PlaySound
|
|
||||||
call WaitForSoundToFinish
|
|
||||||
jp TextScriptEnd
|
|
|
@ -1,117 +0,0 @@
|
||||||
; prints text for bookshelves in buildings without sign events
|
|
||||||
PrintBookshelfText::
|
|
||||||
ld a, [wSpriteStateData1 + 9] ; player's sprite facing direction
|
|
||||||
cp SPRITE_FACING_UP
|
|
||||||
jr nz, .noMatch
|
|
||||||
; facing up
|
|
||||||
ld a, [wCurMapTileset]
|
|
||||||
ld b, a
|
|
||||||
aCoord 8, 7
|
|
||||||
ld c, a
|
|
||||||
ld hl, BookshelfTileIDs
|
|
||||||
.loop
|
|
||||||
ld a, [hli]
|
|
||||||
cp $ff
|
|
||||||
jr z, .noMatch
|
|
||||||
cp b
|
|
||||||
jr nz, .nextBookshelfEntry1
|
|
||||||
ld a, [hli]
|
|
||||||
cp c
|
|
||||||
jr nz, .nextBookshelfEntry2
|
|
||||||
ld a, [hl]
|
|
||||||
push af
|
|
||||||
call EnableAutoTextBoxDrawing
|
|
||||||
pop af
|
|
||||||
call PrintPredefTextID
|
|
||||||
xor a
|
|
||||||
ld [$ffdb], a
|
|
||||||
ret
|
|
||||||
.nextBookshelfEntry1
|
|
||||||
inc hl
|
|
||||||
.nextBookshelfEntry2
|
|
||||||
inc hl
|
|
||||||
jr .loop
|
|
||||||
.noMatch
|
|
||||||
ld a, $ff
|
|
||||||
ld [$ffdb], a
|
|
||||||
jpba PrintCardKeyText
|
|
||||||
|
|
||||||
INCLUDE "data/tilesets/bookshelf_tile_ids.asm"
|
|
||||||
|
|
||||||
IndigoPlateauStatues::
|
|
||||||
TX_ASM
|
|
||||||
ld hl, IndigoPlateauStatuesText1
|
|
||||||
call PrintText
|
|
||||||
ld a, [wXCoord]
|
|
||||||
bit 0, a
|
|
||||||
ld hl, IndigoPlateauStatuesText2
|
|
||||||
jr nz, .ok
|
|
||||||
ld hl, IndigoPlateauStatuesText3
|
|
||||||
.ok
|
|
||||||
call PrintText
|
|
||||||
jp TextScriptEnd
|
|
||||||
|
|
||||||
IndigoPlateauStatuesText1:
|
|
||||||
TX_FAR _IndigoPlateauStatuesText1
|
|
||||||
db "@"
|
|
||||||
|
|
||||||
IndigoPlateauStatuesText2:
|
|
||||||
TX_FAR _IndigoPlateauStatuesText2
|
|
||||||
db "@"
|
|
||||||
|
|
||||||
IndigoPlateauStatuesText3:
|
|
||||||
TX_FAR _IndigoPlateauStatuesText3
|
|
||||||
db "@"
|
|
||||||
|
|
||||||
BookOrSculptureText::
|
|
||||||
TX_ASM
|
|
||||||
ld hl, PokemonBooksText
|
|
||||||
ld a, [wCurMapTileset]
|
|
||||||
cp MANSION ; Celadon Mansion tileset
|
|
||||||
jr nz, .ok
|
|
||||||
aCoord 8, 6
|
|
||||||
cp $38
|
|
||||||
jr nz, .ok
|
|
||||||
ld hl, DiglettSculptureText
|
|
||||||
.ok
|
|
||||||
call PrintText
|
|
||||||
jp TextScriptEnd
|
|
||||||
|
|
||||||
PokemonBooksText:
|
|
||||||
TX_FAR _PokemonBooksText
|
|
||||||
db "@"
|
|
||||||
|
|
||||||
DiglettSculptureText:
|
|
||||||
TX_FAR _DiglettSculptureText
|
|
||||||
db "@"
|
|
||||||
|
|
||||||
ElevatorText::
|
|
||||||
TX_FAR _ElevatorText
|
|
||||||
db "@"
|
|
||||||
|
|
||||||
TownMapText::
|
|
||||||
TX_FAR _TownMapText
|
|
||||||
TX_BLINK
|
|
||||||
TX_ASM
|
|
||||||
ld a, $1
|
|
||||||
ld [wDoNotWaitForButtonPressAfterDisplayingText], a
|
|
||||||
ld hl, wd730
|
|
||||||
set 6, [hl]
|
|
||||||
call GBPalWhiteOutWithDelay3
|
|
||||||
xor a
|
|
||||||
ld [hWY], a
|
|
||||||
inc a
|
|
||||||
ld [H_AUTOBGTRANSFERENABLED], a
|
|
||||||
call LoadFontTilePatterns
|
|
||||||
callba DisplayTownMap
|
|
||||||
ld hl, wd730
|
|
||||||
res 6, [hl]
|
|
||||||
ld de, TextScriptEnd
|
|
||||||
push de
|
|
||||||
ld a, [H_LOADEDROMBANK]
|
|
||||||
push af
|
|
||||||
jp CloseTextDisplay
|
|
||||||
|
|
||||||
PokemonStuffText::
|
|
||||||
TX_FAR _PokemonStuffText
|
|
||||||
db "@"
|
|
|
@ -1,467 +0,0 @@
|
||||||
PrintNewBikeText:
|
|
||||||
call EnableAutoTextBoxDrawing
|
|
||||||
tx_pre_jump NewBicycleText
|
|
||||||
|
|
||||||
NewBicycleText::
|
|
||||||
TX_FAR _NewBicycleText
|
|
||||||
db "@"
|
|
||||||
|
|
||||||
DisplayOakLabLeftPoster:
|
|
||||||
call EnableAutoTextBoxDrawing
|
|
||||||
tx_pre_jump PushStartText
|
|
||||||
|
|
||||||
PushStartText::
|
|
||||||
TX_FAR _PushStartText
|
|
||||||
db "@"
|
|
||||||
|
|
||||||
DisplayOakLabRightPoster:
|
|
||||||
call EnableAutoTextBoxDrawing
|
|
||||||
ld hl, wPokedexOwned
|
|
||||||
ld b, wPokedexOwnedEnd - wPokedexOwned
|
|
||||||
call CountSetBits
|
|
||||||
ld a, [wNumSetBits]
|
|
||||||
cp 2
|
|
||||||
tx_pre_id SaveOptionText
|
|
||||||
jr c, .ownLessThanTwo
|
|
||||||
; own two or more mon
|
|
||||||
tx_pre_id StrengthsAndWeaknessesText
|
|
||||||
.ownLessThanTwo
|
|
||||||
jp PrintPredefTextID
|
|
||||||
|
|
||||||
SaveOptionText::
|
|
||||||
TX_FAR _SaveOptionText
|
|
||||||
db "@"
|
|
||||||
|
|
||||||
StrengthsAndWeaknessesText::
|
|
||||||
TX_FAR _StrengthsAndWeaknessesText
|
|
||||||
db "@"
|
|
||||||
|
|
||||||
SafariZoneCheck::
|
|
||||||
CheckEventHL EVENT_IN_SAFARI_ZONE ; if we are not in the Safari Zone,
|
|
||||||
jr z, SafariZoneGameStillGoing ; don't bother printing game over text
|
|
||||||
ld a, [wNumSafariBalls]
|
|
||||||
and a
|
|
||||||
jr z, SafariZoneGameOver
|
|
||||||
jr SafariZoneGameStillGoing
|
|
||||||
|
|
||||||
SafariZoneCheckSteps::
|
|
||||||
ld a, [wSafariSteps]
|
|
||||||
ld b, a
|
|
||||||
ld a, [wSafariSteps + 1]
|
|
||||||
ld c, a
|
|
||||||
or b
|
|
||||||
jr z, SafariZoneGameOver
|
|
||||||
dec bc
|
|
||||||
ld a, b
|
|
||||||
ld [wSafariSteps], a
|
|
||||||
ld a, c
|
|
||||||
ld [wSafariSteps + 1], a
|
|
||||||
SafariZoneGameStillGoing:
|
|
||||||
xor a
|
|
||||||
ld [wSafariZoneGameOver], a
|
|
||||||
ret
|
|
||||||
|
|
||||||
SafariZoneGameOver:
|
|
||||||
call EnableAutoTextBoxDrawing
|
|
||||||
xor a
|
|
||||||
ld [wAudioFadeOutControl], a
|
|
||||||
dec a
|
|
||||||
call PlaySound
|
|
||||||
ld c, BANK(SFX_Safari_Zone_PA)
|
|
||||||
ld a, SFX_SAFARI_ZONE_PA
|
|
||||||
call PlayMusic
|
|
||||||
.waitForMusicToPlay
|
|
||||||
ld a, [wChannelSoundIDs + Ch5]
|
|
||||||
cp SFX_SAFARI_ZONE_PA
|
|
||||||
jr nz, .waitForMusicToPlay
|
|
||||||
ld a, TEXT_SAFARI_GAME_OVER
|
|
||||||
ld [hSpriteIndexOrTextID], a
|
|
||||||
call DisplayTextID
|
|
||||||
xor a
|
|
||||||
ld [wPlayerMovingDirection], a
|
|
||||||
ld a, SAFARI_ZONE_GATE
|
|
||||||
ld [hWarpDestinationMap], a
|
|
||||||
ld a, $3
|
|
||||||
ld [wDestinationWarpID], a
|
|
||||||
ld a, $5
|
|
||||||
ld [wSafariZoneGateCurScript], a
|
|
||||||
SetEvent EVENT_SAFARI_GAME_OVER
|
|
||||||
ld a, 1
|
|
||||||
ld [wSafariZoneGameOver], a
|
|
||||||
ret
|
|
||||||
|
|
||||||
PrintSafariGameOverText::
|
|
||||||
xor a
|
|
||||||
ld [wJoyIgnore], a
|
|
||||||
ld hl, SafariGameOverText
|
|
||||||
jp PrintText
|
|
||||||
|
|
||||||
SafariGameOverText:
|
|
||||||
TX_ASM
|
|
||||||
ld a, [wNumSafariBalls]
|
|
||||||
and a
|
|
||||||
jr z, .noMoreSafariBalls
|
|
||||||
ld hl, TimesUpText
|
|
||||||
call PrintText
|
|
||||||
.noMoreSafariBalls
|
|
||||||
ld hl, GameOverText
|
|
||||||
call PrintText
|
|
||||||
jp TextScriptEnd
|
|
||||||
|
|
||||||
TimesUpText:
|
|
||||||
TX_FAR _TimesUpText
|
|
||||||
db "@"
|
|
||||||
|
|
||||||
GameOverText:
|
|
||||||
TX_FAR _GameOverText
|
|
||||||
db "@"
|
|
||||||
|
|
||||||
PrintCinnabarQuiz:
|
|
||||||
ld a, [wSpriteStateData1 + 9]
|
|
||||||
cp SPRITE_FACING_UP
|
|
||||||
ret nz
|
|
||||||
call EnableAutoTextBoxDrawing
|
|
||||||
tx_pre_jump CinnabarGymQuiz
|
|
||||||
|
|
||||||
CinnabarGymQuiz::
|
|
||||||
TX_ASM
|
|
||||||
xor a
|
|
||||||
ld [wOpponentAfterWrongAnswer], a
|
|
||||||
ld a, [wHiddenObjectFunctionArgument]
|
|
||||||
push af
|
|
||||||
and $f
|
|
||||||
ld [hGymGateIndex], a
|
|
||||||
pop af
|
|
||||||
and $f0
|
|
||||||
swap a
|
|
||||||
ld [$ffdc], a
|
|
||||||
ld hl, CinnabarGymQuizIntroText
|
|
||||||
call PrintText
|
|
||||||
ld a, [hGymGateIndex]
|
|
||||||
dec a
|
|
||||||
add a
|
|
||||||
ld d, 0
|
|
||||||
ld e, a
|
|
||||||
ld hl, CinnabarQuizQuestions
|
|
||||||
add hl, de
|
|
||||||
ld a, [hli]
|
|
||||||
ld h, [hl]
|
|
||||||
ld l, a
|
|
||||||
call PrintText
|
|
||||||
ld a, 1
|
|
||||||
ld [wDoNotWaitForButtonPressAfterDisplayingText], a
|
|
||||||
call CinnabarGymQuiz_1ea92
|
|
||||||
jp TextScriptEnd
|
|
||||||
|
|
||||||
CinnabarGymQuizIntroText:
|
|
||||||
TX_FAR _CinnabarGymQuizIntroText
|
|
||||||
db "@"
|
|
||||||
|
|
||||||
CinnabarQuizQuestions:
|
|
||||||
dw CinnabarQuizQuestionsText1
|
|
||||||
dw CinnabarQuizQuestionsText2
|
|
||||||
dw CinnabarQuizQuestionsText3
|
|
||||||
dw CinnabarQuizQuestionsText4
|
|
||||||
dw CinnabarQuizQuestionsText5
|
|
||||||
dw CinnabarQuizQuestionsText6
|
|
||||||
|
|
||||||
CinnabarQuizQuestionsText1:
|
|
||||||
TX_FAR _CinnabarQuizQuestionsText1
|
|
||||||
db "@"
|
|
||||||
|
|
||||||
CinnabarQuizQuestionsText2:
|
|
||||||
TX_FAR _CinnabarQuizQuestionsText2
|
|
||||||
db "@"
|
|
||||||
|
|
||||||
CinnabarQuizQuestionsText3:
|
|
||||||
TX_FAR _CinnabarQuizQuestionsText3
|
|
||||||
db "@"
|
|
||||||
|
|
||||||
CinnabarQuizQuestionsText4:
|
|
||||||
TX_FAR _CinnabarQuizQuestionsText4
|
|
||||||
db "@"
|
|
||||||
|
|
||||||
CinnabarQuizQuestionsText5:
|
|
||||||
TX_FAR _CinnabarQuizQuestionsText5
|
|
||||||
db "@"
|
|
||||||
|
|
||||||
CinnabarQuizQuestionsText6:
|
|
||||||
TX_FAR _CinnabarQuizQuestionsText6
|
|
||||||
db "@"
|
|
||||||
|
|
||||||
CinnabarGymGateFlagAction:
|
|
||||||
EventFlagAddress hl, EVENT_CINNABAR_GYM_GATE0_UNLOCKED
|
|
||||||
predef_jump FlagActionPredef
|
|
||||||
|
|
||||||
CinnabarGymQuiz_1ea92:
|
|
||||||
call YesNoChoice
|
|
||||||
ld a, [$ffdc]
|
|
||||||
ld c, a
|
|
||||||
ld a, [wCurrentMenuItem]
|
|
||||||
cp c
|
|
||||||
jr nz, .wrongAnswer
|
|
||||||
ld hl, wCurrentMapScriptFlags
|
|
||||||
set 5, [hl]
|
|
||||||
ld a, [hGymGateIndex]
|
|
||||||
ld [$ffe0], a
|
|
||||||
ld hl, CinnabarGymQuizCorrectText
|
|
||||||
call PrintText
|
|
||||||
ld a, [$ffe0]
|
|
||||||
AdjustEventBit EVENT_CINNABAR_GYM_GATE0_UNLOCKED, 0
|
|
||||||
ld c, a
|
|
||||||
ld b, FLAG_SET
|
|
||||||
call CinnabarGymGateFlagAction
|
|
||||||
jp UpdateCinnabarGymGateTileBlocks_
|
|
||||||
.wrongAnswer
|
|
||||||
call WaitForSoundToFinish
|
|
||||||
ld a, SFX_DENIED
|
|
||||||
call PlaySound
|
|
||||||
call WaitForSoundToFinish
|
|
||||||
ld hl, CinnabarGymQuizIncorrectText
|
|
||||||
call PrintText
|
|
||||||
ld a, [hGymGateIndex]
|
|
||||||
add $2
|
|
||||||
AdjustEventBit EVENT_BEAT_CINNABAR_GYM_TRAINER_0, 2
|
|
||||||
ld c, a
|
|
||||||
ld b, FLAG_TEST
|
|
||||||
EventFlagAddress hl, EVENT_BEAT_CINNABAR_GYM_TRAINER_0
|
|
||||||
predef FlagActionPredef
|
|
||||||
ld a, c
|
|
||||||
and a
|
|
||||||
ret nz
|
|
||||||
ld a, [hGymGateIndex]
|
|
||||||
add $2
|
|
||||||
ld [wOpponentAfterWrongAnswer], a
|
|
||||||
ret
|
|
||||||
|
|
||||||
CinnabarGymQuizCorrectText:
|
|
||||||
TX_SFX_ITEM_1
|
|
||||||
TX_FAR _CinnabarGymQuizCorrectText
|
|
||||||
TX_BLINK
|
|
||||||
TX_ASM
|
|
||||||
|
|
||||||
ld a, [$ffe0]
|
|
||||||
AdjustEventBit EVENT_CINNABAR_GYM_GATE0_UNLOCKED, 0
|
|
||||||
ld c, a
|
|
||||||
ld b, FLAG_TEST
|
|
||||||
call CinnabarGymGateFlagAction
|
|
||||||
ld a, c
|
|
||||||
and a
|
|
||||||
jp nz, TextScriptEnd
|
|
||||||
call WaitForSoundToFinish
|
|
||||||
ld a, SFX_GO_INSIDE
|
|
||||||
call PlaySound
|
|
||||||
call WaitForSoundToFinish
|
|
||||||
jp TextScriptEnd
|
|
||||||
|
|
||||||
CinnabarGymQuizIncorrectText:
|
|
||||||
TX_FAR _CinnabarGymQuizIncorrectText
|
|
||||||
db "@"
|
|
||||||
|
|
||||||
UpdateCinnabarGymGateTileBlocks_::
|
|
||||||
; Update the overworld map with open floor blocks or locked gate blocks
|
|
||||||
; depending on event flags.
|
|
||||||
ld a, 6
|
|
||||||
ld [hGymGateIndex], a
|
|
||||||
.loop
|
|
||||||
ld a, [hGymGateIndex]
|
|
||||||
dec a
|
|
||||||
add a
|
|
||||||
add a
|
|
||||||
ld d, 0
|
|
||||||
ld e, a
|
|
||||||
ld hl, CinnabarGymGateCoords
|
|
||||||
add hl, de
|
|
||||||
ld a, [hli]
|
|
||||||
ld b, [hl]
|
|
||||||
ld c, a
|
|
||||||
inc hl
|
|
||||||
ld a, [hl]
|
|
||||||
ld [wGymGateTileBlock], a
|
|
||||||
push bc
|
|
||||||
ld a, [hGymGateIndex]
|
|
||||||
ld [$ffe0], a
|
|
||||||
AdjustEventBit EVENT_CINNABAR_GYM_GATE0_UNLOCKED, 0
|
|
||||||
ld c, a
|
|
||||||
ld b, FLAG_TEST
|
|
||||||
call CinnabarGymGateFlagAction
|
|
||||||
ld a, c
|
|
||||||
and a
|
|
||||||
jr nz, .unlocked
|
|
||||||
ld a, [wGymGateTileBlock]
|
|
||||||
jr .next
|
|
||||||
.unlocked
|
|
||||||
ld a, $e
|
|
||||||
.next
|
|
||||||
pop bc
|
|
||||||
ld [wNewTileBlockID], a
|
|
||||||
predef ReplaceTileBlock
|
|
||||||
ld hl, hGymGateIndex
|
|
||||||
dec [hl]
|
|
||||||
jr nz, .loop
|
|
||||||
ret
|
|
||||||
|
|
||||||
CinnabarGymGateCoords:
|
|
||||||
; format: x-coord, y-coord, direction, padding
|
|
||||||
; direction: $54 = horizontal gate, $5f = vertical gate
|
|
||||||
db $09,$03,$54,$00
|
|
||||||
db $06,$03,$54,$00
|
|
||||||
db $06,$06,$54,$00
|
|
||||||
db $03,$08,$5f,$00
|
|
||||||
db $02,$06,$54,$00
|
|
||||||
db $02,$03,$54,$00
|
|
||||||
|
|
||||||
PrintMagazinesText:
|
|
||||||
call EnableAutoTextBoxDrawing
|
|
||||||
tx_pre MagazinesText
|
|
||||||
ret
|
|
||||||
|
|
||||||
MagazinesText::
|
|
||||||
TX_FAR _MagazinesText
|
|
||||||
db "@"
|
|
||||||
|
|
||||||
BillsHousePC:
|
|
||||||
call EnableAutoTextBoxDrawing
|
|
||||||
ld a, [wSpriteStateData1 + 9]
|
|
||||||
cp SPRITE_FACING_UP
|
|
||||||
ret nz
|
|
||||||
CheckEvent EVENT_LEFT_BILLS_HOUSE_AFTER_HELPING
|
|
||||||
jr nz, .displayBillsHousePokemonList
|
|
||||||
CheckEventReuseA EVENT_USED_CELL_SEPARATOR_ON_BILL
|
|
||||||
jr nz, .displayBillsHouseMonitorText
|
|
||||||
CheckEventReuseA EVENT_BILL_SAID_USE_CELL_SEPARATOR
|
|
||||||
jr nz, .doCellSeparator
|
|
||||||
.displayBillsHouseMonitorText
|
|
||||||
tx_pre_jump BillsHouseMonitorText
|
|
||||||
.doCellSeparator
|
|
||||||
ld a, $1
|
|
||||||
ld [wDoNotWaitForButtonPressAfterDisplayingText], a
|
|
||||||
tx_pre BillsHouseInitiatedText
|
|
||||||
ld c, 32
|
|
||||||
call DelayFrames
|
|
||||||
ld a, SFX_TINK
|
|
||||||
call PlaySound
|
|
||||||
call WaitForSoundToFinish
|
|
||||||
ld c, 80
|
|
||||||
call DelayFrames
|
|
||||||
ld a, SFX_SHRINK
|
|
||||||
call PlaySound
|
|
||||||
call WaitForSoundToFinish
|
|
||||||
ld c, 48
|
|
||||||
call DelayFrames
|
|
||||||
ld a, SFX_TINK
|
|
||||||
call PlaySound
|
|
||||||
call WaitForSoundToFinish
|
|
||||||
ld c, 32
|
|
||||||
call DelayFrames
|
|
||||||
ld a, SFX_GET_ITEM_1
|
|
||||||
call PlaySound
|
|
||||||
call WaitForSoundToFinish
|
|
||||||
call PlayDefaultMusic
|
|
||||||
SetEvent EVENT_USED_CELL_SEPARATOR_ON_BILL
|
|
||||||
ret
|
|
||||||
.displayBillsHousePokemonList
|
|
||||||
ld a, $1
|
|
||||||
ld [wDoNotWaitForButtonPressAfterDisplayingText], a
|
|
||||||
tx_pre BillsHousePokemonList
|
|
||||||
ret
|
|
||||||
|
|
||||||
BillsHouseMonitorText::
|
|
||||||
TX_FAR _BillsHouseMonitorText
|
|
||||||
db "@"
|
|
||||||
|
|
||||||
BillsHouseInitiatedText::
|
|
||||||
TX_FAR _BillsHouseInitiatedText
|
|
||||||
TX_BLINK
|
|
||||||
TX_ASM
|
|
||||||
ld a, $ff
|
|
||||||
ld [wNewSoundID], a
|
|
||||||
call PlaySound
|
|
||||||
ld c, 16
|
|
||||||
call DelayFrames
|
|
||||||
ld a, SFX_SWITCH
|
|
||||||
call PlaySound
|
|
||||||
call WaitForSoundToFinish
|
|
||||||
ld c, 60
|
|
||||||
call DelayFrames
|
|
||||||
jp TextScriptEnd
|
|
||||||
|
|
||||||
BillsHousePokemonList::
|
|
||||||
TX_ASM
|
|
||||||
call SaveScreenTilesToBuffer1
|
|
||||||
ld hl, BillsHousePokemonListText1
|
|
||||||
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, 4
|
|
||||||
ld [wMaxMenuItem], a
|
|
||||||
ld a, 2
|
|
||||||
ld [wTopMenuItemY], a
|
|
||||||
ld a, 1
|
|
||||||
ld [wTopMenuItemX], a
|
|
||||||
.billsPokemonLoop
|
|
||||||
ld hl, wd730
|
|
||||||
set 6, [hl]
|
|
||||||
coord hl, 0, 0
|
|
||||||
ld b, 10
|
|
||||||
ld c, 9
|
|
||||||
call TextBoxBorder
|
|
||||||
coord hl, 2, 2
|
|
||||||
ld de, BillsMonListText
|
|
||||||
call PlaceString
|
|
||||||
ld hl, BillsHousePokemonListText2
|
|
||||||
call PrintText
|
|
||||||
call SaveScreenTilesToBuffer2
|
|
||||||
call HandleMenuInput
|
|
||||||
bit 1, a ; pressed b
|
|
||||||
jr nz, .cancel
|
|
||||||
ld a, [wCurrentMenuItem]
|
|
||||||
add EEVEE
|
|
||||||
cp EEVEE
|
|
||||||
jr z, .displayPokedex
|
|
||||||
cp FLAREON
|
|
||||||
jr z, .displayPokedex
|
|
||||||
cp JOLTEON
|
|
||||||
jr z, .displayPokedex
|
|
||||||
cp VAPOREON
|
|
||||||
jr z, .displayPokedex
|
|
||||||
jr .cancel
|
|
||||||
.displayPokedex
|
|
||||||
call DisplayPokedex
|
|
||||||
call LoadScreenTilesFromBuffer2
|
|
||||||
jr .billsPokemonLoop
|
|
||||||
.cancel
|
|
||||||
ld hl, wd730
|
|
||||||
res 6, [hl]
|
|
||||||
call LoadScreenTilesFromBuffer2
|
|
||||||
jp TextScriptEnd
|
|
||||||
|
|
||||||
BillsHousePokemonListText1:
|
|
||||||
TX_FAR _BillsHousePokemonListText1
|
|
||||||
db "@"
|
|
||||||
|
|
||||||
BillsMonListText:
|
|
||||||
db "EEVEE"
|
|
||||||
next "FLAREON"
|
|
||||||
next "JOLTEON"
|
|
||||||
next "VAPOREON"
|
|
||||||
next "CANCEL@"
|
|
||||||
|
|
||||||
BillsHousePokemonListText2:
|
|
||||||
TX_FAR _BillsHousePokemonListText2
|
|
||||||
db "@"
|
|
||||||
|
|
||||||
DisplayOakLabEmailText:
|
|
||||||
ld a, [wSpriteStateData1 + 9]
|
|
||||||
cp SPRITE_FACING_UP
|
|
||||||
ret nz
|
|
||||||
call EnableAutoTextBoxDrawing
|
|
||||||
tx_pre_jump OakLabEmailText
|
|
||||||
|
|
||||||
OakLabEmailText::
|
|
||||||
TX_FAR _OakLabEmailText
|
|
||||||
db "@"
|
|
74
engine/events/hidden_object_functions18.asm → engine/events/hidden_objects/bench_guys.asm
Executable file → Normal file
74
engine/events/hidden_object_functions18.asm → engine/events/hidden_objects/bench_guys.asm
Executable file → Normal file
|
@ -1,52 +1,3 @@
|
||||||
GymStatues:
|
|
||||||
; if in a gym and have the corresponding badge, a = GymStatueText2_id and jp PrintPredefTextID
|
|
||||||
; if in a gym and don’t have the corresponding badge, a = GymStatueText1_id and jp PrintPredefTextID
|
|
||||||
; else ret
|
|
||||||
call EnableAutoTextBoxDrawing
|
|
||||||
ld a, [wSpriteStateData1 + 9]
|
|
||||||
cp SPRITE_FACING_UP
|
|
||||||
ret nz
|
|
||||||
ld hl, .BadgeFlags
|
|
||||||
ld a, [wCurMap]
|
|
||||||
ld b, a
|
|
||||||
.loop
|
|
||||||
ld a, [hli]
|
|
||||||
cp $ff
|
|
||||||
ret z
|
|
||||||
cp b
|
|
||||||
jr z, .match
|
|
||||||
inc hl
|
|
||||||
jr .loop
|
|
||||||
.match
|
|
||||||
ld b, [hl]
|
|
||||||
ld a, [wBeatGymFlags]
|
|
||||||
and b
|
|
||||||
cp b
|
|
||||||
tx_pre_id GymStatueText2
|
|
||||||
jr z, .haveBadge
|
|
||||||
tx_pre_id GymStatueText1
|
|
||||||
.haveBadge
|
|
||||||
jp PrintPredefTextID
|
|
||||||
|
|
||||||
.BadgeFlags:
|
|
||||||
db PEWTER_GYM, %00000001
|
|
||||||
db CERULEAN_GYM, %00000010
|
|
||||||
db VERMILION_GYM,%00000100
|
|
||||||
db CELADON_GYM, %00001000
|
|
||||||
db FUCHSIA_GYM, %00010000
|
|
||||||
db SAFFRON_GYM, %00100000
|
|
||||||
db CINNABAR_GYM, %01000000
|
|
||||||
db VIRIDIAN_GYM, %10000000
|
|
||||||
db $ff
|
|
||||||
|
|
||||||
GymStatueText1::
|
|
||||||
TX_FAR _GymStatueText1
|
|
||||||
db "@"
|
|
||||||
|
|
||||||
GymStatueText2::
|
|
||||||
TX_FAR _GymStatueText2
|
|
||||||
db "@"
|
|
||||||
|
|
||||||
PrintBenchGuyText:
|
PrintBenchGuyText:
|
||||||
call EnableAutoTextBoxDrawing
|
call EnableAutoTextBoxDrawing
|
||||||
ld hl, BenchGuyTextPointers
|
ld hl, BenchGuyTextPointers
|
||||||
|
@ -171,28 +122,3 @@ SaffronCityPokecenterBenchGuyText2:
|
||||||
CeladonCityHotelText::
|
CeladonCityHotelText::
|
||||||
TX_FAR _CeladonCityHotelText
|
TX_FAR _CeladonCityHotelText
|
||||||
db "@"
|
db "@"
|
||||||
|
|
||||||
ret
|
|
||||||
|
|
||||||
UnusedPredefText::
|
|
||||||
db "@"
|
|
||||||
|
|
||||||
PrintBookcaseText:
|
|
||||||
call EnableAutoTextBoxDrawing
|
|
||||||
tx_pre_jump BookcaseText
|
|
||||||
|
|
||||||
BookcaseText::
|
|
||||||
TX_FAR _BookcaseText
|
|
||||||
db "@"
|
|
||||||
|
|
||||||
OpenPokemonCenterPC:
|
|
||||||
ld a, [wSpriteStateData1 + 9]
|
|
||||||
cp SPRITE_FACING_UP ; check to see if player is facing up
|
|
||||||
ret nz
|
|
||||||
call EnableAutoTextBoxDrawing
|
|
||||||
ld a, $1
|
|
||||||
ld [wAutoTextBoxDrawingControl], a
|
|
||||||
tx_pre_jump PokemonCenterPCText
|
|
||||||
|
|
||||||
PokemonCenterPCText::
|
|
||||||
TX_POKECENTER_PC
|
|
134
engine/events/hidden_objects/bills_house_pc.asm
Normal file
134
engine/events/hidden_objects/bills_house_pc.asm
Normal file
|
@ -0,0 +1,134 @@
|
||||||
|
BillsHousePC:
|
||||||
|
call EnableAutoTextBoxDrawing
|
||||||
|
ld a, [wSpriteStateData1 + 9]
|
||||||
|
cp SPRITE_FACING_UP
|
||||||
|
ret nz
|
||||||
|
CheckEvent EVENT_LEFT_BILLS_HOUSE_AFTER_HELPING
|
||||||
|
jr nz, .displayBillsHousePokemonList
|
||||||
|
CheckEventReuseA EVENT_USED_CELL_SEPARATOR_ON_BILL
|
||||||
|
jr nz, .displayBillsHouseMonitorText
|
||||||
|
CheckEventReuseA EVENT_BILL_SAID_USE_CELL_SEPARATOR
|
||||||
|
jr nz, .doCellSeparator
|
||||||
|
.displayBillsHouseMonitorText
|
||||||
|
tx_pre_jump BillsHouseMonitorText
|
||||||
|
.doCellSeparator
|
||||||
|
ld a, $1
|
||||||
|
ld [wDoNotWaitForButtonPressAfterDisplayingText], a
|
||||||
|
tx_pre BillsHouseInitiatedText
|
||||||
|
ld c, 32
|
||||||
|
call DelayFrames
|
||||||
|
ld a, SFX_TINK
|
||||||
|
call PlaySound
|
||||||
|
call WaitForSoundToFinish
|
||||||
|
ld c, 80
|
||||||
|
call DelayFrames
|
||||||
|
ld a, SFX_SHRINK
|
||||||
|
call PlaySound
|
||||||
|
call WaitForSoundToFinish
|
||||||
|
ld c, 48
|
||||||
|
call DelayFrames
|
||||||
|
ld a, SFX_TINK
|
||||||
|
call PlaySound
|
||||||
|
call WaitForSoundToFinish
|
||||||
|
ld c, 32
|
||||||
|
call DelayFrames
|
||||||
|
ld a, SFX_GET_ITEM_1
|
||||||
|
call PlaySound
|
||||||
|
call WaitForSoundToFinish
|
||||||
|
call PlayDefaultMusic
|
||||||
|
SetEvent EVENT_USED_CELL_SEPARATOR_ON_BILL
|
||||||
|
ret
|
||||||
|
.displayBillsHousePokemonList
|
||||||
|
ld a, $1
|
||||||
|
ld [wDoNotWaitForButtonPressAfterDisplayingText], a
|
||||||
|
tx_pre BillsHousePokemonList
|
||||||
|
ret
|
||||||
|
|
||||||
|
BillsHouseMonitorText::
|
||||||
|
TX_FAR _BillsHouseMonitorText
|
||||||
|
db "@"
|
||||||
|
|
||||||
|
BillsHouseInitiatedText::
|
||||||
|
TX_FAR _BillsHouseInitiatedText
|
||||||
|
TX_BLINK
|
||||||
|
TX_ASM
|
||||||
|
ld a, $ff
|
||||||
|
ld [wNewSoundID], a
|
||||||
|
call PlaySound
|
||||||
|
ld c, 16
|
||||||
|
call DelayFrames
|
||||||
|
ld a, SFX_SWITCH
|
||||||
|
call PlaySound
|
||||||
|
call WaitForSoundToFinish
|
||||||
|
ld c, 60
|
||||||
|
call DelayFrames
|
||||||
|
jp TextScriptEnd
|
||||||
|
|
||||||
|
BillsHousePokemonList::
|
||||||
|
TX_ASM
|
||||||
|
call SaveScreenTilesToBuffer1
|
||||||
|
ld hl, BillsHousePokemonListText1
|
||||||
|
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, 4
|
||||||
|
ld [wMaxMenuItem], a
|
||||||
|
ld a, 2
|
||||||
|
ld [wTopMenuItemY], a
|
||||||
|
ld a, 1
|
||||||
|
ld [wTopMenuItemX], a
|
||||||
|
.billsPokemonLoop
|
||||||
|
ld hl, wd730
|
||||||
|
set 6, [hl]
|
||||||
|
coord hl, 0, 0
|
||||||
|
ld b, 10
|
||||||
|
ld c, 9
|
||||||
|
call TextBoxBorder
|
||||||
|
coord hl, 2, 2
|
||||||
|
ld de, BillsMonListText
|
||||||
|
call PlaceString
|
||||||
|
ld hl, BillsHousePokemonListText2
|
||||||
|
call PrintText
|
||||||
|
call SaveScreenTilesToBuffer2
|
||||||
|
call HandleMenuInput
|
||||||
|
bit 1, a ; pressed b
|
||||||
|
jr nz, .cancel
|
||||||
|
ld a, [wCurrentMenuItem]
|
||||||
|
add EEVEE
|
||||||
|
cp EEVEE
|
||||||
|
jr z, .displayPokedex
|
||||||
|
cp FLAREON
|
||||||
|
jr z, .displayPokedex
|
||||||
|
cp JOLTEON
|
||||||
|
jr z, .displayPokedex
|
||||||
|
cp VAPOREON
|
||||||
|
jr z, .displayPokedex
|
||||||
|
jr .cancel
|
||||||
|
.displayPokedex
|
||||||
|
call DisplayPokedex
|
||||||
|
call LoadScreenTilesFromBuffer2
|
||||||
|
jr .billsPokemonLoop
|
||||||
|
.cancel
|
||||||
|
ld hl, wd730
|
||||||
|
res 6, [hl]
|
||||||
|
call LoadScreenTilesFromBuffer2
|
||||||
|
jp TextScriptEnd
|
||||||
|
|
||||||
|
BillsHousePokemonListText1:
|
||||||
|
TX_FAR _BillsHousePokemonListText1
|
||||||
|
db "@"
|
||||||
|
|
||||||
|
BillsMonListText:
|
||||||
|
db "EEVEE"
|
||||||
|
next "FLAREON"
|
||||||
|
next "JOLTEON"
|
||||||
|
next "VAPOREON"
|
||||||
|
next "CANCEL@"
|
||||||
|
|
||||||
|
BillsHousePokemonListText2:
|
||||||
|
TX_FAR _BillsHousePokemonListText2
|
||||||
|
db "@"
|
13
engine/events/hidden_objects/blues_room.asm
Normal file
13
engine/events/hidden_objects/blues_room.asm
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
|
||||||
|
ret ; unused
|
||||||
|
|
||||||
|
UnusedPredefText::
|
||||||
|
db "@"
|
||||||
|
|
||||||
|
PrintBookcaseText:
|
||||||
|
call EnableAutoTextBoxDrawing
|
||||||
|
tx_pre_jump BookcaseText
|
||||||
|
|
||||||
|
BookcaseText::
|
||||||
|
TX_FAR _BookcaseText
|
||||||
|
db "@"
|
39
engine/events/hidden_objects/bookshelves.asm
Normal file
39
engine/events/hidden_objects/bookshelves.asm
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
; prints text for bookshelves in buildings without sign events
|
||||||
|
PrintBookshelfText::
|
||||||
|
ld a, [wSpriteStateData1 + 9] ; player's sprite facing direction
|
||||||
|
cp SPRITE_FACING_UP
|
||||||
|
jr nz, .noMatch
|
||||||
|
; facing up
|
||||||
|
ld a, [wCurMapTileset]
|
||||||
|
ld b, a
|
||||||
|
aCoord 8, 7
|
||||||
|
ld c, a
|
||||||
|
ld hl, BookshelfTileIDs
|
||||||
|
.loop
|
||||||
|
ld a, [hli]
|
||||||
|
cp $ff
|
||||||
|
jr z, .noMatch
|
||||||
|
cp b
|
||||||
|
jr nz, .nextBookshelfEntry1
|
||||||
|
ld a, [hli]
|
||||||
|
cp c
|
||||||
|
jr nz, .nextBookshelfEntry2
|
||||||
|
ld a, [hl]
|
||||||
|
push af
|
||||||
|
call EnableAutoTextBoxDrawing
|
||||||
|
pop af
|
||||||
|
call PrintPredefTextID
|
||||||
|
xor a
|
||||||
|
ld [$ffdb], a
|
||||||
|
ret
|
||||||
|
.nextBookshelfEntry1
|
||||||
|
inc hl
|
||||||
|
.nextBookshelfEntry2
|
||||||
|
inc hl
|
||||||
|
jr .loop
|
||||||
|
.noMatch
|
||||||
|
ld a, $ff
|
||||||
|
ld [$ffdb], a
|
||||||
|
jpba PrintCardKeyText
|
||||||
|
|
||||||
|
INCLUDE "data/tilesets/bookshelf_tile_ids.asm"
|
194
engine/events/hidden_objects/cinnabar_gym_quiz.asm
Normal file
194
engine/events/hidden_objects/cinnabar_gym_quiz.asm
Normal file
|
@ -0,0 +1,194 @@
|
||||||
|
PrintCinnabarQuiz:
|
||||||
|
ld a, [wSpriteStateData1 + 9]
|
||||||
|
cp SPRITE_FACING_UP
|
||||||
|
ret nz
|
||||||
|
call EnableAutoTextBoxDrawing
|
||||||
|
tx_pre_jump CinnabarGymQuiz
|
||||||
|
|
||||||
|
CinnabarGymQuiz::
|
||||||
|
TX_ASM
|
||||||
|
xor a
|
||||||
|
ld [wOpponentAfterWrongAnswer], a
|
||||||
|
ld a, [wHiddenObjectFunctionArgument]
|
||||||
|
push af
|
||||||
|
and $f
|
||||||
|
ld [hGymGateIndex], a
|
||||||
|
pop af
|
||||||
|
and $f0
|
||||||
|
swap a
|
||||||
|
ld [$ffdc], a
|
||||||
|
ld hl, CinnabarGymQuizIntroText
|
||||||
|
call PrintText
|
||||||
|
ld a, [hGymGateIndex]
|
||||||
|
dec a
|
||||||
|
add a
|
||||||
|
ld d, 0
|
||||||
|
ld e, a
|
||||||
|
ld hl, CinnabarQuizQuestions
|
||||||
|
add hl, de
|
||||||
|
ld a, [hli]
|
||||||
|
ld h, [hl]
|
||||||
|
ld l, a
|
||||||
|
call PrintText
|
||||||
|
ld a, 1
|
||||||
|
ld [wDoNotWaitForButtonPressAfterDisplayingText], a
|
||||||
|
call CinnabarGymQuiz_1ea92
|
||||||
|
jp TextScriptEnd
|
||||||
|
|
||||||
|
CinnabarGymQuizIntroText:
|
||||||
|
TX_FAR _CinnabarGymQuizIntroText
|
||||||
|
db "@"
|
||||||
|
|
||||||
|
CinnabarQuizQuestions:
|
||||||
|
dw CinnabarQuizQuestionsText1
|
||||||
|
dw CinnabarQuizQuestionsText2
|
||||||
|
dw CinnabarQuizQuestionsText3
|
||||||
|
dw CinnabarQuizQuestionsText4
|
||||||
|
dw CinnabarQuizQuestionsText5
|
||||||
|
dw CinnabarQuizQuestionsText6
|
||||||
|
|
||||||
|
CinnabarQuizQuestionsText1:
|
||||||
|
TX_FAR _CinnabarQuizQuestionsText1
|
||||||
|
db "@"
|
||||||
|
|
||||||
|
CinnabarQuizQuestionsText2:
|
||||||
|
TX_FAR _CinnabarQuizQuestionsText2
|
||||||
|
db "@"
|
||||||
|
|
||||||
|
CinnabarQuizQuestionsText3:
|
||||||
|
TX_FAR _CinnabarQuizQuestionsText3
|
||||||
|
db "@"
|
||||||
|
|
||||||
|
CinnabarQuizQuestionsText4:
|
||||||
|
TX_FAR _CinnabarQuizQuestionsText4
|
||||||
|
db "@"
|
||||||
|
|
||||||
|
CinnabarQuizQuestionsText5:
|
||||||
|
TX_FAR _CinnabarQuizQuestionsText5
|
||||||
|
db "@"
|
||||||
|
|
||||||
|
CinnabarQuizQuestionsText6:
|
||||||
|
TX_FAR _CinnabarQuizQuestionsText6
|
||||||
|
db "@"
|
||||||
|
|
||||||
|
CinnabarGymGateFlagAction:
|
||||||
|
EventFlagAddress hl, EVENT_CINNABAR_GYM_GATE0_UNLOCKED
|
||||||
|
predef_jump FlagActionPredef
|
||||||
|
|
||||||
|
CinnabarGymQuiz_1ea92:
|
||||||
|
call YesNoChoice
|
||||||
|
ld a, [$ffdc]
|
||||||
|
ld c, a
|
||||||
|
ld a, [wCurrentMenuItem]
|
||||||
|
cp c
|
||||||
|
jr nz, .wrongAnswer
|
||||||
|
ld hl, wCurrentMapScriptFlags
|
||||||
|
set 5, [hl]
|
||||||
|
ld a, [hGymGateIndex]
|
||||||
|
ld [$ffe0], a
|
||||||
|
ld hl, CinnabarGymQuizCorrectText
|
||||||
|
call PrintText
|
||||||
|
ld a, [$ffe0]
|
||||||
|
AdjustEventBit EVENT_CINNABAR_GYM_GATE0_UNLOCKED, 0
|
||||||
|
ld c, a
|
||||||
|
ld b, FLAG_SET
|
||||||
|
call CinnabarGymGateFlagAction
|
||||||
|
jp UpdateCinnabarGymGateTileBlocks_
|
||||||
|
.wrongAnswer
|
||||||
|
call WaitForSoundToFinish
|
||||||
|
ld a, SFX_DENIED
|
||||||
|
call PlaySound
|
||||||
|
call WaitForSoundToFinish
|
||||||
|
ld hl, CinnabarGymQuizIncorrectText
|
||||||
|
call PrintText
|
||||||
|
ld a, [hGymGateIndex]
|
||||||
|
add $2
|
||||||
|
AdjustEventBit EVENT_BEAT_CINNABAR_GYM_TRAINER_0, 2
|
||||||
|
ld c, a
|
||||||
|
ld b, FLAG_TEST
|
||||||
|
EventFlagAddress hl, EVENT_BEAT_CINNABAR_GYM_TRAINER_0
|
||||||
|
predef FlagActionPredef
|
||||||
|
ld a, c
|
||||||
|
and a
|
||||||
|
ret nz
|
||||||
|
ld a, [hGymGateIndex]
|
||||||
|
add $2
|
||||||
|
ld [wOpponentAfterWrongAnswer], a
|
||||||
|
ret
|
||||||
|
|
||||||
|
CinnabarGymQuizCorrectText:
|
||||||
|
TX_SFX_ITEM_1
|
||||||
|
TX_FAR _CinnabarGymQuizCorrectText
|
||||||
|
TX_BLINK
|
||||||
|
TX_ASM
|
||||||
|
|
||||||
|
ld a, [$ffe0]
|
||||||
|
AdjustEventBit EVENT_CINNABAR_GYM_GATE0_UNLOCKED, 0
|
||||||
|
ld c, a
|
||||||
|
ld b, FLAG_TEST
|
||||||
|
call CinnabarGymGateFlagAction
|
||||||
|
ld a, c
|
||||||
|
and a
|
||||||
|
jp nz, TextScriptEnd
|
||||||
|
call WaitForSoundToFinish
|
||||||
|
ld a, SFX_GO_INSIDE
|
||||||
|
call PlaySound
|
||||||
|
call WaitForSoundToFinish
|
||||||
|
jp TextScriptEnd
|
||||||
|
|
||||||
|
CinnabarGymQuizIncorrectText:
|
||||||
|
TX_FAR _CinnabarGymQuizIncorrectText
|
||||||
|
db "@"
|
||||||
|
|
||||||
|
UpdateCinnabarGymGateTileBlocks_::
|
||||||
|
; Update the overworld map with open floor blocks or locked gate blocks
|
||||||
|
; depending on event flags.
|
||||||
|
ld a, 6
|
||||||
|
ld [hGymGateIndex], a
|
||||||
|
.loop
|
||||||
|
ld a, [hGymGateIndex]
|
||||||
|
dec a
|
||||||
|
add a
|
||||||
|
add a
|
||||||
|
ld d, 0
|
||||||
|
ld e, a
|
||||||
|
ld hl, CinnabarGymGateCoords
|
||||||
|
add hl, de
|
||||||
|
ld a, [hli]
|
||||||
|
ld b, [hl]
|
||||||
|
ld c, a
|
||||||
|
inc hl
|
||||||
|
ld a, [hl]
|
||||||
|
ld [wGymGateTileBlock], a
|
||||||
|
push bc
|
||||||
|
ld a, [hGymGateIndex]
|
||||||
|
ld [$ffe0], a
|
||||||
|
AdjustEventBit EVENT_CINNABAR_GYM_GATE0_UNLOCKED, 0
|
||||||
|
ld c, a
|
||||||
|
ld b, FLAG_TEST
|
||||||
|
call CinnabarGymGateFlagAction
|
||||||
|
ld a, c
|
||||||
|
and a
|
||||||
|
jr nz, .unlocked
|
||||||
|
ld a, [wGymGateTileBlock]
|
||||||
|
jr .next
|
||||||
|
.unlocked
|
||||||
|
ld a, $e
|
||||||
|
.next
|
||||||
|
pop bc
|
||||||
|
ld [wNewTileBlockID], a
|
||||||
|
predef ReplaceTileBlock
|
||||||
|
ld hl, hGymGateIndex
|
||||||
|
dec [hl]
|
||||||
|
jr nz, .loop
|
||||||
|
ret
|
||||||
|
|
||||||
|
CinnabarGymGateCoords:
|
||||||
|
; format: x-coord, y-coord, direction, padding
|
||||||
|
; direction: $54 = horizontal gate, $5f = vertical gate
|
||||||
|
db $09,$03,$54,$00
|
||||||
|
db $06,$03,$54,$00
|
||||||
|
db $06,$06,$54,$00
|
||||||
|
db $03,$08,$5f,$00
|
||||||
|
db $02,$06,$54,$00
|
||||||
|
db $02,$03,$54,$00
|
21
engine/events/hidden_objects/diglett_sculpture.asm
Normal file
21
engine/events/hidden_objects/diglett_sculpture.asm
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
BookOrSculptureText::
|
||||||
|
TX_ASM
|
||||||
|
ld hl, PokemonBooksText
|
||||||
|
ld a, [wCurMapTileset]
|
||||||
|
cp MANSION ; Celadon Mansion tileset
|
||||||
|
jr nz, .ok
|
||||||
|
aCoord 8, 6
|
||||||
|
cp $38
|
||||||
|
jr nz, .ok
|
||||||
|
ld hl, DiglettSculptureText
|
||||||
|
.ok
|
||||||
|
call PrintText
|
||||||
|
jp TextScriptEnd
|
||||||
|
|
||||||
|
PokemonBooksText:
|
||||||
|
TX_FAR _PokemonBooksText
|
||||||
|
db "@"
|
||||||
|
|
||||||
|
DiglettSculptureText:
|
||||||
|
TX_FAR _DiglettSculptureText
|
||||||
|
db "@"
|
3
engine/events/hidden_objects/elevator.asm
Normal file
3
engine/events/hidden_objects/elevator.asm
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
ElevatorText::
|
||||||
|
TX_FAR _ElevatorText
|
||||||
|
db "@"
|
23
engine/events/hidden_objects/fighting_dojo.asm
Normal file
23
engine/events/hidden_objects/fighting_dojo.asm
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
PrintFightingDojoText2:
|
||||||
|
call EnableAutoTextBoxDrawing
|
||||||
|
tx_pre_jump EnemiesOnEverySideText
|
||||||
|
|
||||||
|
EnemiesOnEverySideText::
|
||||||
|
TX_FAR _EnemiesOnEverySideText
|
||||||
|
db "@"
|
||||||
|
|
||||||
|
PrintFightingDojoText3:
|
||||||
|
call EnableAutoTextBoxDrawing
|
||||||
|
tx_pre_jump WhatGoesAroundComesAroundText
|
||||||
|
|
||||||
|
WhatGoesAroundComesAroundText::
|
||||||
|
TX_FAR _WhatGoesAroundComesAroundText
|
||||||
|
db "@"
|
||||||
|
|
||||||
|
PrintFightingDojoText:
|
||||||
|
call EnableAutoTextBoxDrawing
|
||||||
|
tx_pre_jump FightingDojoText
|
||||||
|
|
||||||
|
FightingDojoText::
|
||||||
|
TX_FAR _FightingDojoText
|
||||||
|
db "@"
|
48
engine/events/hidden_objects/gym_statues.asm
Normal file
48
engine/events/hidden_objects/gym_statues.asm
Normal file
|
@ -0,0 +1,48 @@
|
||||||
|
GymStatues:
|
||||||
|
; if in a gym and have the corresponding badge, a = GymStatueText2_id and jp PrintPredefTextID
|
||||||
|
; if in a gym and don’t have the corresponding badge, a = GymStatueText1_id and jp PrintPredefTextID
|
||||||
|
; else ret
|
||||||
|
call EnableAutoTextBoxDrawing
|
||||||
|
ld a, [wSpriteStateData1 + 9]
|
||||||
|
cp SPRITE_FACING_UP
|
||||||
|
ret nz
|
||||||
|
ld hl, .BadgeFlags
|
||||||
|
ld a, [wCurMap]
|
||||||
|
ld b, a
|
||||||
|
.loop
|
||||||
|
ld a, [hli]
|
||||||
|
cp $ff
|
||||||
|
ret z
|
||||||
|
cp b
|
||||||
|
jr z, .match
|
||||||
|
inc hl
|
||||||
|
jr .loop
|
||||||
|
.match
|
||||||
|
ld b, [hl]
|
||||||
|
ld a, [wBeatGymFlags]
|
||||||
|
and b
|
||||||
|
cp b
|
||||||
|
tx_pre_id GymStatueText2
|
||||||
|
jr z, .haveBadge
|
||||||
|
tx_pre_id GymStatueText1
|
||||||
|
.haveBadge
|
||||||
|
jp PrintPredefTextID
|
||||||
|
|
||||||
|
.BadgeFlags:
|
||||||
|
db PEWTER_GYM, %00000001
|
||||||
|
db CERULEAN_GYM, %00000010
|
||||||
|
db VERMILION_GYM,%00000100
|
||||||
|
db CELADON_GYM, %00001000
|
||||||
|
db FUCHSIA_GYM, %00010000
|
||||||
|
db SAFFRON_GYM, %00100000
|
||||||
|
db CINNABAR_GYM, %01000000
|
||||||
|
db VIRIDIAN_GYM, %10000000
|
||||||
|
db $ff
|
||||||
|
|
||||||
|
GymStatueText1::
|
||||||
|
TX_FAR _GymStatueText1
|
||||||
|
db "@"
|
||||||
|
|
||||||
|
GymStatueText2::
|
||||||
|
TX_FAR _GymStatueText2
|
||||||
|
db "@"
|
10
engine/events/hidden_objects/indigo_plateau_hq.asm
Normal file
10
engine/events/hidden_objects/indigo_plateau_hq.asm
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
PrintIndigoPlateauHQText:
|
||||||
|
ld a, [wSpriteStateData1 + 9]
|
||||||
|
cp SPRITE_FACING_UP
|
||||||
|
ret nz
|
||||||
|
call EnableAutoTextBoxDrawing
|
||||||
|
tx_pre_jump IndigoPlateauHQText
|
||||||
|
|
||||||
|
IndigoPlateauHQText::
|
||||||
|
TX_FAR _IndigoPlateauHQText
|
||||||
|
db "@"
|
24
engine/events/hidden_objects/indigo_plateau_statues.asm
Normal file
24
engine/events/hidden_objects/indigo_plateau_statues.asm
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
IndigoPlateauStatues::
|
||||||
|
TX_ASM
|
||||||
|
ld hl, IndigoPlateauStatuesText1
|
||||||
|
call PrintText
|
||||||
|
ld a, [wXCoord]
|
||||||
|
bit 0, a
|
||||||
|
ld hl, IndigoPlateauStatuesText2
|
||||||
|
jr nz, .ok
|
||||||
|
ld hl, IndigoPlateauStatuesText3
|
||||||
|
.ok
|
||||||
|
call PrintText
|
||||||
|
jp TextScriptEnd
|
||||||
|
|
||||||
|
IndigoPlateauStatuesText1:
|
||||||
|
TX_FAR _IndigoPlateauStatuesText1
|
||||||
|
db "@"
|
||||||
|
|
||||||
|
IndigoPlateauStatuesText2:
|
||||||
|
TX_FAR _IndigoPlateauStatuesText2
|
||||||
|
db "@"
|
||||||
|
|
||||||
|
IndigoPlateauStatuesText3:
|
||||||
|
TX_FAR _IndigoPlateauStatuesText3
|
||||||
|
db "@"
|
8
engine/events/hidden_objects/magazines.asm
Normal file
8
engine/events/hidden_objects/magazines.asm
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
PrintMagazinesText:
|
||||||
|
call EnableAutoTextBoxDrawing
|
||||||
|
tx_pre MagazinesText
|
||||||
|
ret
|
||||||
|
|
||||||
|
MagazinesText::
|
||||||
|
TX_FAR _MagazinesText
|
||||||
|
db "@"
|
52
engine/events/hidden_objects/museum_fossils.asm
Normal file
52
engine/events/hidden_objects/museum_fossils.asm
Normal file
|
@ -0,0 +1,52 @@
|
||||||
|
AerodactylFossil:
|
||||||
|
ld a, FOSSIL_AERODACTYL
|
||||||
|
ld [wcf91], a
|
||||||
|
call DisplayMonFrontSpriteInBox
|
||||||
|
call EnableAutoTextBoxDrawing
|
||||||
|
tx_pre AerodactylFossilText
|
||||||
|
ret
|
||||||
|
|
||||||
|
AerodactylFossilText::
|
||||||
|
TX_FAR _AerodactylFossilText
|
||||||
|
db "@"
|
||||||
|
|
||||||
|
KabutopsFossil:
|
||||||
|
ld a, FOSSIL_KABUTOPS
|
||||||
|
ld [wcf91], a
|
||||||
|
call DisplayMonFrontSpriteInBox
|
||||||
|
call EnableAutoTextBoxDrawing
|
||||||
|
tx_pre KabutopsFossilText
|
||||||
|
ret
|
||||||
|
|
||||||
|
KabutopsFossilText::
|
||||||
|
TX_FAR _KabutopsFossilText
|
||||||
|
db "@"
|
||||||
|
|
||||||
|
DisplayMonFrontSpriteInBox:
|
||||||
|
; Displays a pokemon's front sprite in a pop-up window.
|
||||||
|
; [wcf91] = pokemon internal id number
|
||||||
|
ld a, 1
|
||||||
|
ld [H_AUTOBGTRANSFERENABLED], a
|
||||||
|
call Delay3
|
||||||
|
xor a
|
||||||
|
ld [hWY], a
|
||||||
|
call SaveScreenTilesToBuffer1
|
||||||
|
ld a, MON_SPRITE_POPUP
|
||||||
|
ld [wTextBoxID], a
|
||||||
|
call DisplayTextBoxID
|
||||||
|
call UpdateSprites
|
||||||
|
ld a, [wcf91]
|
||||||
|
ld [wd0b5], a
|
||||||
|
call GetMonHeader
|
||||||
|
ld de, vChars1 + $310
|
||||||
|
call LoadMonFrontSprite
|
||||||
|
ld a, $80
|
||||||
|
ld [hStartTileID], a
|
||||||
|
coord hl, 10, 11
|
||||||
|
predef AnimateSendingOutMon
|
||||||
|
call WaitForTextScrollButtonPress
|
||||||
|
call LoadScreenTilesFromBuffer1
|
||||||
|
call Delay3
|
||||||
|
ld a, $90
|
||||||
|
ld [hWY], a
|
||||||
|
ret
|
7
engine/events/hidden_objects/new_bike.asm
Normal file
7
engine/events/hidden_objects/new_bike.asm
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
PrintNewBikeText:
|
||||||
|
call EnableAutoTextBoxDrawing
|
||||||
|
tx_pre_jump NewBicycleText
|
||||||
|
|
||||||
|
NewBicycleText::
|
||||||
|
TX_FAR _NewBicycleText
|
||||||
|
db "@"
|
10
engine/events/hidden_objects/oaks_lab_email.asm
Normal file
10
engine/events/hidden_objects/oaks_lab_email.asm
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
DisplayOakLabEmailText:
|
||||||
|
ld a, [wSpriteStateData1 + 9]
|
||||||
|
cp SPRITE_FACING_UP
|
||||||
|
ret nz
|
||||||
|
call EnableAutoTextBoxDrawing
|
||||||
|
tx_pre_jump OakLabEmailText
|
||||||
|
|
||||||
|
OakLabEmailText::
|
||||||
|
TX_FAR _OakLabEmailText
|
||||||
|
db "@"
|
29
engine/events/hidden_objects/oaks_lab_posters.asm
Normal file
29
engine/events/hidden_objects/oaks_lab_posters.asm
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
DisplayOakLabLeftPoster:
|
||||||
|
call EnableAutoTextBoxDrawing
|
||||||
|
tx_pre_jump PushStartText
|
||||||
|
|
||||||
|
PushStartText::
|
||||||
|
TX_FAR _PushStartText
|
||||||
|
db "@"
|
||||||
|
|
||||||
|
DisplayOakLabRightPoster:
|
||||||
|
call EnableAutoTextBoxDrawing
|
||||||
|
ld hl, wPokedexOwned
|
||||||
|
ld b, wPokedexOwnedEnd - wPokedexOwned
|
||||||
|
call CountSetBits
|
||||||
|
ld a, [wNumSetBits]
|
||||||
|
cp 2
|
||||||
|
tx_pre_id SaveOptionText
|
||||||
|
jr c, .ownLessThanTwo
|
||||||
|
; own two or more mon
|
||||||
|
tx_pre_id StrengthsAndWeaknessesText
|
||||||
|
.ownLessThanTwo
|
||||||
|
jp PrintPredefTextID
|
||||||
|
|
||||||
|
SaveOptionText::
|
||||||
|
TX_FAR _SaveOptionText
|
||||||
|
db "@"
|
||||||
|
|
||||||
|
StrengthsAndWeaknessesText::
|
||||||
|
TX_FAR _StrengthsAndWeaknessesText
|
||||||
|
db "@"
|
11
engine/events/hidden_objects/pokecenter_pc.asm
Normal file
11
engine/events/hidden_objects/pokecenter_pc.asm
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
OpenPokemonCenterPC:
|
||||||
|
ld a, [wSpriteStateData1 + 9]
|
||||||
|
cp SPRITE_FACING_UP ; check to see if player is facing up
|
||||||
|
ret nz
|
||||||
|
call EnableAutoTextBoxDrawing
|
||||||
|
ld a, $1
|
||||||
|
ld [wAutoTextBoxDrawingControl], a
|
||||||
|
tx_pre_jump PokemonCenterPCText
|
||||||
|
|
||||||
|
PokemonCenterPCText::
|
||||||
|
TX_POKECENTER_PC
|
3
engine/events/hidden_objects/pokemon_stuff.asm
Normal file
3
engine/events/hidden_objects/pokemon_stuff.asm
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
PokemonStuffText::
|
||||||
|
TX_FAR _PokemonStuffText
|
||||||
|
db "@"
|
14
engine/events/hidden_objects/reds_room.asm
Normal file
14
engine/events/hidden_objects/reds_room.asm
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
PrintRedSNESText:
|
||||||
|
call EnableAutoTextBoxDrawing
|
||||||
|
tx_pre_jump RedBedroomSNESText
|
||||||
|
|
||||||
|
RedBedroomSNESText::
|
||||||
|
TX_FAR _RedBedroomSNESText
|
||||||
|
db "@"
|
||||||
|
|
||||||
|
OpenRedsPC:
|
||||||
|
call EnableAutoTextBoxDrawing
|
||||||
|
tx_pre_jump RedBedroomPCText
|
||||||
|
|
||||||
|
RedBedroomPCText::
|
||||||
|
TX_PLAYERS_PC
|
14
engine/events/hidden_objects/route_15_binoculars.asm
Normal file
14
engine/events/hidden_objects/route_15_binoculars.asm
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
Route15GateLeftBinoculars:
|
||||||
|
ld a, [wSpriteStateData1 + 9]
|
||||||
|
cp SPRITE_FACING_UP
|
||||||
|
ret nz
|
||||||
|
call EnableAutoTextBoxDrawing
|
||||||
|
tx_pre Route15UpstairsBinocularsText
|
||||||
|
ld a, ARTICUNO
|
||||||
|
ld [wcf91], a
|
||||||
|
call PlayCry
|
||||||
|
jp DisplayMonFrontSpriteInBox
|
||||||
|
|
||||||
|
Route15UpstairsBinocularsText::
|
||||||
|
TX_FAR _Route15UpstairsBinocularsText
|
||||||
|
db "@"
|
79
engine/events/hidden_objects/safari_game.asm
Normal file
79
engine/events/hidden_objects/safari_game.asm
Normal file
|
@ -0,0 +1,79 @@
|
||||||
|
SafariZoneCheck::
|
||||||
|
CheckEventHL EVENT_IN_SAFARI_ZONE ; if we are not in the Safari Zone,
|
||||||
|
jr z, SafariZoneGameStillGoing ; don't bother printing game over text
|
||||||
|
ld a, [wNumSafariBalls]
|
||||||
|
and a
|
||||||
|
jr z, SafariZoneGameOver
|
||||||
|
jr SafariZoneGameStillGoing
|
||||||
|
|
||||||
|
SafariZoneCheckSteps::
|
||||||
|
ld a, [wSafariSteps]
|
||||||
|
ld b, a
|
||||||
|
ld a, [wSafariSteps + 1]
|
||||||
|
ld c, a
|
||||||
|
or b
|
||||||
|
jr z, SafariZoneGameOver
|
||||||
|
dec bc
|
||||||
|
ld a, b
|
||||||
|
ld [wSafariSteps], a
|
||||||
|
ld a, c
|
||||||
|
ld [wSafariSteps + 1], a
|
||||||
|
SafariZoneGameStillGoing:
|
||||||
|
xor a
|
||||||
|
ld [wSafariZoneGameOver], a
|
||||||
|
ret
|
||||||
|
|
||||||
|
SafariZoneGameOver:
|
||||||
|
call EnableAutoTextBoxDrawing
|
||||||
|
xor a
|
||||||
|
ld [wAudioFadeOutControl], a
|
||||||
|
dec a
|
||||||
|
call PlaySound
|
||||||
|
ld c, BANK(SFX_Safari_Zone_PA)
|
||||||
|
ld a, SFX_SAFARI_ZONE_PA
|
||||||
|
call PlayMusic
|
||||||
|
.waitForMusicToPlay
|
||||||
|
ld a, [wChannelSoundIDs + Ch5]
|
||||||
|
cp SFX_SAFARI_ZONE_PA
|
||||||
|
jr nz, .waitForMusicToPlay
|
||||||
|
ld a, TEXT_SAFARI_GAME_OVER
|
||||||
|
ld [hSpriteIndexOrTextID], a
|
||||||
|
call DisplayTextID
|
||||||
|
xor a
|
||||||
|
ld [wPlayerMovingDirection], a
|
||||||
|
ld a, SAFARI_ZONE_GATE
|
||||||
|
ld [hWarpDestinationMap], a
|
||||||
|
ld a, $3
|
||||||
|
ld [wDestinationWarpID], a
|
||||||
|
ld a, $5
|
||||||
|
ld [wSafariZoneGateCurScript], a
|
||||||
|
SetEvent EVENT_SAFARI_GAME_OVER
|
||||||
|
ld a, 1
|
||||||
|
ld [wSafariZoneGameOver], a
|
||||||
|
ret
|
||||||
|
|
||||||
|
PrintSafariGameOverText::
|
||||||
|
xor a
|
||||||
|
ld [wJoyIgnore], a
|
||||||
|
ld hl, SafariGameOverText
|
||||||
|
jp PrintText
|
||||||
|
|
||||||
|
SafariGameOverText:
|
||||||
|
TX_ASM
|
||||||
|
ld a, [wNumSafariBalls]
|
||||||
|
and a
|
||||||
|
jr z, .noMoreSafariBalls
|
||||||
|
ld hl, TimesUpText
|
||||||
|
call PrintText
|
||||||
|
.noMoreSafariBalls
|
||||||
|
ld hl, GameOverText
|
||||||
|
call PrintText
|
||||||
|
jp TextScriptEnd
|
||||||
|
|
||||||
|
TimesUpText:
|
||||||
|
TX_FAR _TimesUpText
|
||||||
|
db "@"
|
||||||
|
|
||||||
|
GameOverText:
|
||||||
|
TX_FAR _GameOverText
|
||||||
|
db "@"
|
222
engine/events/hidden_objects/school_blackboard.asm
Normal file
222
engine/events/hidden_objects/school_blackboard.asm
Normal file
|
@ -0,0 +1,222 @@
|
||||||
|
PrintBlackboardLinkCableText:
|
||||||
|
call EnableAutoTextBoxDrawing
|
||||||
|
ld a, $1
|
||||||
|
ld [wDoNotWaitForButtonPressAfterDisplayingText], a
|
||||||
|
ld a, [wHiddenObjectFunctionArgument]
|
||||||
|
call PrintPredefTextID
|
||||||
|
ret
|
||||||
|
|
||||||
|
LinkCableHelp::
|
||||||
|
TX_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, wd730
|
||||||
|
set 6, [hl]
|
||||||
|
coord hl, 0, 0
|
||||||
|
ld b, 8
|
||||||
|
ld c, 13
|
||||||
|
call TextBoxBorder
|
||||||
|
coord hl, 2, 2
|
||||||
|
ld de, HowToLinkText
|
||||||
|
call PlaceString
|
||||||
|
ld hl, LinkCableHelpText2
|
||||||
|
call PrintText
|
||||||
|
call HandleMenuInput
|
||||||
|
bit 1, a ; pressed b
|
||||||
|
jr nz, .exit
|
||||||
|
ld a, [wCurrentMenuItem]
|
||||||
|
cp 3 ; pressed a on "STOP READING"
|
||||||
|
jr z, .exit
|
||||||
|
ld hl, wd730
|
||||||
|
res 6, [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, wd730
|
||||||
|
res 6, [hl]
|
||||||
|
call LoadScreenTilesFromBuffer1
|
||||||
|
jp TextScriptEnd
|
||||||
|
|
||||||
|
LinkCableHelpText1:
|
||||||
|
TX_FAR _LinkCableHelpText1
|
||||||
|
db "@"
|
||||||
|
|
||||||
|
LinkCableHelpText2:
|
||||||
|
TX_FAR _LinkCableHelpText2
|
||||||
|
db "@"
|
||||||
|
|
||||||
|
HowToLinkText:
|
||||||
|
db "HOW TO LINK"
|
||||||
|
next "COLOSSEUM"
|
||||||
|
next "TRADE CENTER"
|
||||||
|
next "STOP READING@"
|
||||||
|
|
||||||
|
LinkCableInfoTexts:
|
||||||
|
dw LinkCableInfoText1
|
||||||
|
dw LinkCableInfoText2
|
||||||
|
dw LinkCableInfoText3
|
||||||
|
|
||||||
|
LinkCableInfoText1:
|
||||||
|
TX_FAR _LinkCableInfoText1
|
||||||
|
db "@"
|
||||||
|
|
||||||
|
LinkCableInfoText2:
|
||||||
|
TX_FAR _LinkCableInfoText2
|
||||||
|
db "@"
|
||||||
|
|
||||||
|
LinkCableInfoText3:
|
||||||
|
TX_FAR _LinkCableInfoText3
|
||||||
|
db "@"
|
||||||
|
|
||||||
|
ViridianSchoolBlackboard::
|
||||||
|
TX_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, wd730
|
||||||
|
set 6, [hl]
|
||||||
|
coord hl, 0, 0
|
||||||
|
lb bc, 6, 10
|
||||||
|
call TextBoxBorder
|
||||||
|
coord hl, 1, 2
|
||||||
|
ld de, StatusAilmentText1
|
||||||
|
call PlaceString
|
||||||
|
coord hl, 6, 2
|
||||||
|
ld de, StatusAilmentText2
|
||||||
|
call PlaceString
|
||||||
|
ld hl, ViridianSchoolBlackboardText2
|
||||||
|
call PrintText
|
||||||
|
call HandleMenuInput ; pressing up and down is handled in here
|
||||||
|
bit 1, a ; pressed b
|
||||||
|
jr nz, .exitBlackboard
|
||||||
|
bit 4, a ; pressed right
|
||||||
|
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 5, a ; pressed left
|
||||||
|
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, wd730
|
||||||
|
res 6, [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, wd730
|
||||||
|
res 6, [hl]
|
||||||
|
call LoadScreenTilesFromBuffer1
|
||||||
|
jp TextScriptEnd
|
||||||
|
|
||||||
|
ViridianSchoolBlackboardText1:
|
||||||
|
TX_FAR _ViridianSchoolBlackboardText1
|
||||||
|
db "@"
|
||||||
|
|
||||||
|
ViridianSchoolBlackboardText2:
|
||||||
|
TX_FAR _ViridianSchoolBlackboardText2
|
||||||
|
db "@"
|
||||||
|
|
||||||
|
StatusAilmentText1:
|
||||||
|
db " SLP"
|
||||||
|
next " PSN"
|
||||||
|
next " PAR@"
|
||||||
|
|
||||||
|
StatusAilmentText2:
|
||||||
|
db " BRN"
|
||||||
|
next " FRZ"
|
||||||
|
next " QUIT@@"
|
||||||
|
|
||||||
|
ViridianBlackboardStatusPointers:
|
||||||
|
dw ViridianBlackboardSleepText
|
||||||
|
dw ViridianBlackboardPoisonText
|
||||||
|
dw ViridianBlackboardPrlzText
|
||||||
|
dw ViridianBlackboardBurnText
|
||||||
|
dw ViridianBlackboardFrozenText
|
||||||
|
|
||||||
|
ViridianBlackboardSleepText:
|
||||||
|
TX_FAR _ViridianBlackboardSleepText
|
||||||
|
db "@"
|
||||||
|
|
||||||
|
ViridianBlackboardPoisonText:
|
||||||
|
TX_FAR _ViridianBlackboardPoisonText
|
||||||
|
db "@"
|
||||||
|
|
||||||
|
ViridianBlackboardPrlzText:
|
||||||
|
TX_FAR _ViridianBlackboardPrlzText
|
||||||
|
db "@"
|
||||||
|
|
||||||
|
ViridianBlackboardBurnText:
|
||||||
|
TX_FAR _ViridianBlackboardBurnText
|
||||||
|
db "@"
|
||||||
|
|
||||||
|
ViridianBlackboardFrozenText:
|
||||||
|
TX_FAR _ViridianBlackboardFrozenText
|
||||||
|
db "@"
|
35
engine/events/hidden_object_functions14.asm → engine/events/hidden_objects/school_notebooks.asm
Executable file → Normal file
35
engine/events/hidden_object_functions14.asm → engine/events/hidden_objects/school_notebooks.asm
Executable file → Normal file
|
@ -63,38 +63,3 @@ ViridianSchoolNotebookText3:
|
||||||
ViridianSchoolNotebookText4:
|
ViridianSchoolNotebookText4:
|
||||||
TX_FAR _ViridianSchoolNotebookText4
|
TX_FAR _ViridianSchoolNotebookText4
|
||||||
db "@"
|
db "@"
|
||||||
|
|
||||||
PrintFightingDojoText2:
|
|
||||||
call EnableAutoTextBoxDrawing
|
|
||||||
tx_pre_jump EnemiesOnEverySideText
|
|
||||||
|
|
||||||
EnemiesOnEverySideText::
|
|
||||||
TX_FAR _EnemiesOnEverySideText
|
|
||||||
db "@"
|
|
||||||
|
|
||||||
PrintFightingDojoText3:
|
|
||||||
call EnableAutoTextBoxDrawing
|
|
||||||
tx_pre_jump WhatGoesAroundComesAroundText
|
|
||||||
|
|
||||||
WhatGoesAroundComesAroundText::
|
|
||||||
TX_FAR _WhatGoesAroundComesAroundText
|
|
||||||
db "@"
|
|
||||||
|
|
||||||
PrintFightingDojoText:
|
|
||||||
call EnableAutoTextBoxDrawing
|
|
||||||
tx_pre_jump FightingDojoText
|
|
||||||
|
|
||||||
FightingDojoText::
|
|
||||||
TX_FAR _FightingDojoText
|
|
||||||
db "@"
|
|
||||||
|
|
||||||
PrintIndigoPlateauHQText:
|
|
||||||
ld a, [wSpriteStateData1 + 9]
|
|
||||||
cp SPRITE_FACING_UP
|
|
||||||
ret nz
|
|
||||||
call EnableAutoTextBoxDrawing
|
|
||||||
tx_pre_jump IndigoPlateauHQText
|
|
||||||
|
|
||||||
IndigoPlateauHQText::
|
|
||||||
TX_FAR _IndigoPlateauHQText
|
|
||||||
db "@"
|
|
22
engine/events/hidden_objects/town_map.asm
Normal file
22
engine/events/hidden_objects/town_map.asm
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
TownMapText::
|
||||||
|
TX_FAR _TownMapText
|
||||||
|
TX_BLINK
|
||||||
|
TX_ASM
|
||||||
|
ld a, $1
|
||||||
|
ld [wDoNotWaitForButtonPressAfterDisplayingText], a
|
||||||
|
ld hl, wd730
|
||||||
|
set 6, [hl]
|
||||||
|
call GBPalWhiteOutWithDelay3
|
||||||
|
xor a
|
||||||
|
ld [hWY], a
|
||||||
|
inc a
|
||||||
|
ld [H_AUTOBGTRANSFERENABLED], a
|
||||||
|
call LoadFontTilePatterns
|
||||||
|
callba DisplayTownMap
|
||||||
|
ld hl, wd730
|
||||||
|
res 6, [hl]
|
||||||
|
ld de, TextScriptEnd
|
||||||
|
push de
|
||||||
|
ld a, [H_LOADEDROMBANK]
|
||||||
|
push af
|
||||||
|
jp CloseTextDisplay
|
169
engine/events/hidden_objects/vermilion_gym_trash.asm
Normal file
169
engine/events/hidden_objects/vermilion_gym_trash.asm
Normal file
|
@ -0,0 +1,169 @@
|
||||||
|
PrintTrashText:
|
||||||
|
call EnableAutoTextBoxDrawing
|
||||||
|
tx_pre_jump VermilionGymTrashText
|
||||||
|
|
||||||
|
VermilionGymTrashText::
|
||||||
|
TX_FAR _VermilionGymTrashText
|
||||||
|
db "@"
|
||||||
|
|
||||||
|
GymTrashScript:
|
||||||
|
call EnableAutoTextBoxDrawing
|
||||||
|
ld a, [wHiddenObjectFunctionArgument]
|
||||||
|
ld [wGymTrashCanIndex], a
|
||||||
|
|
||||||
|
; Don't do the trash can puzzle if it's already been done.
|
||||||
|
CheckEvent EVENT_2ND_LOCK_OPENED
|
||||||
|
jr z, .ok
|
||||||
|
|
||||||
|
tx_pre_jump VermilionGymTrashText
|
||||||
|
|
||||||
|
.ok
|
||||||
|
CheckEventReuseA EVENT_1ST_LOCK_OPENED
|
||||||
|
jr nz, .trySecondLock
|
||||||
|
|
||||||
|
ld a, [wFirstLockTrashCanIndex]
|
||||||
|
ld b, a
|
||||||
|
ld a, [wGymTrashCanIndex]
|
||||||
|
cp b
|
||||||
|
jr z, .openFirstLock
|
||||||
|
|
||||||
|
tx_pre_id VermilionGymTrashText
|
||||||
|
jr .done
|
||||||
|
|
||||||
|
.openFirstLock
|
||||||
|
; Next can is trying for the second switch.
|
||||||
|
SetEvent EVENT_1ST_LOCK_OPENED
|
||||||
|
|
||||||
|
ld hl, GymTrashCans
|
||||||
|
ld a, [wGymTrashCanIndex]
|
||||||
|
; * 5
|
||||||
|
ld b, a
|
||||||
|
add a
|
||||||
|
add a
|
||||||
|
add b
|
||||||
|
|
||||||
|
ld d, 0
|
||||||
|
ld e, a
|
||||||
|
add hl, de
|
||||||
|
ld a, [hli]
|
||||||
|
|
||||||
|
; There is a bug in this code. It should calculate a value in the range [0, 3]
|
||||||
|
; but if the mask and random number don't have any 1 bits in common, then
|
||||||
|
; the result of the AND will be 0. When 1 is subtracted from that, the value
|
||||||
|
; will become $ff. This will result in 255 being added to hl, which will cause
|
||||||
|
; hl to point to one of the zero bytes that pad the end of the ROM bank.
|
||||||
|
; Trash can 0 was intended to be able to have the second lock only when the
|
||||||
|
; first lock was in trash can 1 or 3. However, due to this bug, trash can 0 can
|
||||||
|
; have the second lock regardless of which trash can had the first lock.
|
||||||
|
|
||||||
|
ld [hGymTrashCanRandNumMask], a
|
||||||
|
push hl
|
||||||
|
call Random
|
||||||
|
swap a
|
||||||
|
ld b, a
|
||||||
|
ld a, [hGymTrashCanRandNumMask]
|
||||||
|
and b
|
||||||
|
dec a
|
||||||
|
pop hl
|
||||||
|
|
||||||
|
ld d, 0
|
||||||
|
ld e, a
|
||||||
|
add hl, de
|
||||||
|
ld a, [hl]
|
||||||
|
and $f
|
||||||
|
ld [wSecondLockTrashCanIndex], a
|
||||||
|
|
||||||
|
tx_pre_id VermilionGymTrashSuccessText1
|
||||||
|
jr .done
|
||||||
|
|
||||||
|
.trySecondLock
|
||||||
|
ld a, [wSecondLockTrashCanIndex]
|
||||||
|
ld b, a
|
||||||
|
ld a, [wGymTrashCanIndex]
|
||||||
|
cp b
|
||||||
|
jr z, .openSecondLock
|
||||||
|
|
||||||
|
; Reset the cans.
|
||||||
|
ResetEvent EVENT_1ST_LOCK_OPENED
|
||||||
|
call Random
|
||||||
|
|
||||||
|
and $e
|
||||||
|
ld [wFirstLockTrashCanIndex], a
|
||||||
|
|
||||||
|
tx_pre_id VermilionGymTrashFailText
|
||||||
|
jr .done
|
||||||
|
|
||||||
|
.openSecondLock
|
||||||
|
; Completed the trash can puzzle.
|
||||||
|
SetEvent EVENT_2ND_LOCK_OPENED
|
||||||
|
ld hl, wCurrentMapScriptFlags
|
||||||
|
set 6, [hl]
|
||||||
|
|
||||||
|
tx_pre_id VermilionGymTrashSuccessText3
|
||||||
|
|
||||||
|
.done
|
||||||
|
jp PrintPredefTextID
|
||||||
|
|
||||||
|
GymTrashCans:
|
||||||
|
; byte 0: mask for random number
|
||||||
|
; bytes 1-4: indices of the trash cans that can have the second lock
|
||||||
|
; (but see the comment above explaining a bug regarding this)
|
||||||
|
; Note that the mask is simply the number of valid trash can indices that
|
||||||
|
; follow. The remaining bytes are filled with 0 to pad the length of each entry
|
||||||
|
; to 5 bytes.
|
||||||
|
db 2, 1, 3, 0, 0 ; 0
|
||||||
|
db 3, 0, 2, 4, 0 ; 1
|
||||||
|
db 2, 1, 5, 0, 0 ; 2
|
||||||
|
db 3, 0, 4, 6, 0 ; 3
|
||||||
|
db 4, 1, 3, 5, 7 ; 4
|
||||||
|
db 3, 2, 4, 8, 0 ; 5
|
||||||
|
db 3, 3, 7, 9, 0 ; 6
|
||||||
|
db 4, 4, 6, 8, 10 ; 7
|
||||||
|
db 3, 5, 7, 11, 0 ; 8
|
||||||
|
db 3, 6, 10, 12, 0 ; 9
|
||||||
|
db 4, 7, 9, 11, 13 ; 10
|
||||||
|
db 3, 8, 10, 14, 0 ; 11
|
||||||
|
db 2, 9, 13, 0, 0 ; 12
|
||||||
|
db 3, 10, 12, 14, 0 ; 13
|
||||||
|
db 2, 11, 13, 0, 0 ; 14
|
||||||
|
|
||||||
|
VermilionGymTrashSuccessText1::
|
||||||
|
TX_FAR _VermilionGymTrashSuccessText1
|
||||||
|
TX_ASM
|
||||||
|
call WaitForSoundToFinish
|
||||||
|
ld a, SFX_SWITCH
|
||||||
|
call PlaySound
|
||||||
|
call WaitForSoundToFinish
|
||||||
|
jp TextScriptEnd
|
||||||
|
|
||||||
|
; unused
|
||||||
|
VermilionGymTrashSuccessText2::
|
||||||
|
TX_FAR _VermilionGymTrashSuccessText2
|
||||||
|
db "@"
|
||||||
|
|
||||||
|
; unused
|
||||||
|
VermilionGymTrashSuccesPlaySfx:
|
||||||
|
TX_ASM
|
||||||
|
call WaitForSoundToFinish
|
||||||
|
ld a, SFX_SWITCH
|
||||||
|
call PlaySound
|
||||||
|
call WaitForSoundToFinish
|
||||||
|
jp TextScriptEnd
|
||||||
|
|
||||||
|
VermilionGymTrashSuccessText3::
|
||||||
|
TX_FAR _VermilionGymTrashSuccessText3
|
||||||
|
TX_ASM
|
||||||
|
call WaitForSoundToFinish
|
||||||
|
ld a, SFX_GO_INSIDE
|
||||||
|
call PlaySound
|
||||||
|
call WaitForSoundToFinish
|
||||||
|
jp TextScriptEnd
|
||||||
|
|
||||||
|
VermilionGymTrashFailText::
|
||||||
|
TX_FAR _VermilionGymTrashFailText
|
||||||
|
TX_ASM
|
||||||
|
call WaitForSoundToFinish
|
||||||
|
ld a, SFX_DENIED
|
||||||
|
call PlaySound
|
||||||
|
call WaitForSoundToFinish
|
||||||
|
jp TextScriptEnd
|
30
main.asm
30
main.asm
|
@ -74,7 +74,12 @@ INCLUDE "engine/movie/oak_speech/init_player_data.asm"
|
||||||
INCLUDE "engine/items/get_bag_item_quantity.asm"
|
INCLUDE "engine/items/get_bag_item_quantity.asm"
|
||||||
INCLUDE "engine/overworld/pathfinding.asm"
|
INCLUDE "engine/overworld/pathfinding.asm"
|
||||||
INCLUDE "engine/gfx/hp_bar.asm"
|
INCLUDE "engine/gfx/hp_bar.asm"
|
||||||
INCLUDE "engine/events/hidden_object_functions3.asm"
|
INCLUDE "engine/events/hidden_objects/bookshelves.asm"
|
||||||
|
INCLUDE "engine/events/hidden_objects/indigo_plateau_statues.asm"
|
||||||
|
INCLUDE "engine/events/hidden_objects/diglett_sculpture.asm"
|
||||||
|
INCLUDE "engine/events/hidden_objects/elevator.asm"
|
||||||
|
INCLUDE "engine/events/hidden_objects/town_map.asm"
|
||||||
|
INCLUDE "engine/events/hidden_objects/pokemon_stuff.asm"
|
||||||
|
|
||||||
|
|
||||||
SECTION "Graphics (BANK 4)", ROMX
|
SECTION "Graphics (BANK 4)", ROMX
|
||||||
|
@ -157,7 +162,13 @@ INCLUDE "engine/events/elevator.asm"
|
||||||
SECTION "bank7_2", ROMX
|
SECTION "bank7_2", ROMX
|
||||||
|
|
||||||
INCLUDE "engine/menus/oaks_pc.asm"
|
INCLUDE "engine/menus/oaks_pc.asm"
|
||||||
INCLUDE "engine/events/hidden_object_functions7.asm"
|
INCLUDE "engine/events/hidden_objects/new_bike.asm"
|
||||||
|
INCLUDE "engine/events/hidden_objects/oaks_lab_posters.asm"
|
||||||
|
INCLUDE "engine/events/hidden_objects/safari_game.asm"
|
||||||
|
INCLUDE "engine/events/hidden_objects/cinnabar_gym_quiz.asm"
|
||||||
|
INCLUDE "engine/events/hidden_objects/magazines.asm"
|
||||||
|
INCLUDE "engine/events/hidden_objects/bills_house_pc.asm"
|
||||||
|
INCLUDE "engine/events/hidden_objects/oaks_lab_email.asm"
|
||||||
|
|
||||||
|
|
||||||
SECTION "Bill's PC", ROMX
|
SECTION "Bill's PC", ROMX
|
||||||
|
@ -274,7 +285,9 @@ INCLUDE "engine/battle/init_battle_variables.asm"
|
||||||
INCLUDE "engine/battle/move_effects/paralyze.asm"
|
INCLUDE "engine/battle/move_effects/paralyze.asm"
|
||||||
INCLUDE "engine/events/card_key.asm"
|
INCLUDE "engine/events/card_key.asm"
|
||||||
INCLUDE "engine/events/prize_menu.asm"
|
INCLUDE "engine/events/prize_menu.asm"
|
||||||
INCLUDE "engine/events/hidden_object_functions14.asm"
|
INCLUDE "engine/events/hidden_objects/school_notebooks.asm"
|
||||||
|
INCLUDE "engine/events/hidden_objects/fighting_dojo.asm"
|
||||||
|
INCLUDE "engine/events/hidden_objects/indigo_plateau_hq.asm"
|
||||||
|
|
||||||
|
|
||||||
SECTION "bank15_1", ROMX
|
SECTION "bank15_1", ROMX
|
||||||
|
@ -308,7 +321,11 @@ INCLUDE "engine/events/starter_dex.asm"
|
||||||
SECTION "bank17_2", ROMX
|
SECTION "bank17_2", ROMX
|
||||||
|
|
||||||
INCLUDE "engine/pokemon/set_types.asm"
|
INCLUDE "engine/pokemon/set_types.asm"
|
||||||
INCLUDE "engine/events/hidden_object_functions17.asm"
|
INCLUDE "engine/events/hidden_objects/reds_room.asm"
|
||||||
|
INCLUDE "engine/events/hidden_objects/route_15_binoculars.asm"
|
||||||
|
INCLUDE "engine/events/hidden_objects/museum_fossils.asm"
|
||||||
|
INCLUDE "engine/events/hidden_objects/school_blackboard.asm"
|
||||||
|
INCLUDE "engine/events/hidden_objects/vermilion_gym_trash.asm"
|
||||||
|
|
||||||
|
|
||||||
SECTION "bank18_1", ROMX
|
SECTION "bank18_1", ROMX
|
||||||
|
@ -318,7 +335,10 @@ INCLUDE "engine/events/cinnabar_lab.asm"
|
||||||
|
|
||||||
SECTION "bank18_2", ROMX
|
SECTION "bank18_2", ROMX
|
||||||
|
|
||||||
INCLUDE "engine/events/hidden_object_functions18.asm"
|
INCLUDE "engine/events/hidden_objects/gym_statues.asm"
|
||||||
|
INCLUDE "engine/events/hidden_objects/bench_guys.asm"
|
||||||
|
INCLUDE "engine/events/hidden_objects/blues_room.asm"
|
||||||
|
INCLUDE "engine/events/hidden_objects/pokecenter_pc.asm"
|
||||||
|
|
||||||
|
|
||||||
SECTION "bank1A", ROMX
|
SECTION "bank1A", ROMX
|
||||||
|
|
Loading…
Reference in a new issue