kep-hack/engine/events/diploma.asm
Martha Schilling 2c6fc43011 Title screen + Diploma improvements
- An interesting thing I decided to implement here; every time the title screen gets loaded, it loads a random choice between Red and Green, as well as Scream Tail and Sandy Shocks. This effectively gives 4 different starting title screens.

- Made the EXPN. PAK text on the title screen more centered.

- Green now appears on the diploma instead of Red if you're playing as her.
2024-05-15 20:46:36 +01:00

127 lines
2.2 KiB
NASM

DEF CIRCLE_TILE_ID EQU $70
DisplayDiploma::
call SaveScreenTilesToBuffer2
call GBPalWhiteOutWithDelay3
call ClearScreen
xor a
ld [wUpdateSpritesEnabled], a
ld hl, wd730
set 6, [hl]
call DisableLCD
ld hl, CircleTile
ld de, vChars2 tile CIRCLE_TILE_ID
ld bc, $10
ld a, BANK(CircleTile)
call FarCopyData2
hlcoord 0, 0
lb bc, 16, 18
predef Diploma_TextBoxBorder
ld hl, DiplomaTextPointersAndCoords
ld c, $5
.placeTextLoop
push bc
ld a, [hli]
ld e, a
ld a, [hli]
ld d, a
ld a, [hli]
push hl
ld h, [hl]
ld l, a
call PlaceString
pop hl
inc hl
pop bc
dec c
jr nz, .placeTextLoop
hlcoord 10, 4
ld de, wPlayerName
call PlaceString
ld a, [wPlayerSex]
and a ; are you playing as Red
jr z, .red ; if yes, Red appears on the diploma
jr nz, .green ; if no, Green replaces him
.green
farcall DrawFPlayerCharacter
jr .skip
.red
farcall DrawPlayerCharacter
.skip
; Move the player 33 pixels right and set the priority bit so they appear
; behind the background layer.
ld hl, wShadowOAMSprite00XCoord
lb bc, $80, $28
.adjustPlayerGfxLoop
ld a, [hl] ; X
add 33
ld [hli], a
inc hl
ld a, b
ld [hli], a ; attributes
inc hl
dec c
jr nz, .adjustPlayerGfxLoop
call EnableLCD
farcall LoadTrainerInfoTextBoxTiles
ld b, SET_PAL_GENERIC
call RunPaletteCommand
call Delay3
call GBPalNormal
ld a, $90
ldh [rOBP0], a
call WaitForTextScrollButtonPress
ld hl, wd730
res 6, [hl]
call GBPalWhiteOutWithDelay3
call RestoreScreenTilesAndReloadTilePatterns
call Delay3
jp GBPalNormal
UnusedPlayerNameLengthFunc:
; Unused function that does a calculation involving the length of the player's
; name.
ld hl, wPlayerName
lb bc, $ff, $00
.loop
ld a, [hli]
cp "@"
ret z
dec c
jr .loop
MACRO diploma_text
dw \3
dwcoord \1, \2
ENDM
DiplomaTextPointersAndCoords:
; x, y, text
diploma_text 5, 2, DiplomaText
diploma_text 3, 4, DiplomaPlayer
diploma_text 15, 4, DiplomaEmptyText
diploma_text 2, 6, DiplomaCongrats
diploma_text 9, 16, DiplomaGameFreak
DiplomaText:
db CIRCLE_TILE_ID, "Diploma", CIRCLE_TILE_ID, "@"
DiplomaPlayer:
db "Player@"
DiplomaEmptyText:
db "@"
DiplomaCongrats:
db "Congrats! This"
next "diploma certifies"
next "that you have"
next "completed your"
next "#DEX.@"
DiplomaGameFreak:
db "GAME FREAK@"