mirror of
https://gitlab.com/xCrystal/pokecrystal-board.git
synced 2024-11-16 11:27:33 -08:00
Functional stub of title menus [Commit 1] (#17)
This commit is contained in:
parent
e53ae0eac9
commit
a16322350f
@ -28,8 +28,7 @@ DEF AUTO_INPUT EQU $ff
|
|||||||
const WILDMON ; 4
|
const WILDMON ; 4
|
||||||
|
|
||||||
; wGameTimerPaused::
|
; wGameTimerPaused::
|
||||||
DEF GAME_TIMER_PAUSED_F EQU 0
|
DEF GAME_TIMER_COUNTING_F EQU 0
|
||||||
DEF GAME_TIMER_MOBILE_F EQU 7
|
|
||||||
|
|
||||||
; wJoypadDisable::
|
; wJoypadDisable::
|
||||||
DEF JOYPAD_DISABLE_MON_FAINT_F EQU 6
|
DEF JOYPAD_DISABLE_MON_FAINT_F EQU 6
|
||||||
@ -63,7 +62,6 @@ DEF NUM_FRAMES EQU const_value
|
|||||||
const_def
|
const_def
|
||||||
const FAST_TEXT_DELAY_F ; 0
|
const FAST_TEXT_DELAY_F ; 0
|
||||||
const TEXT_DELAY_F ; 1
|
const TEXT_DELAY_F ; 1
|
||||||
const TEXT_2BPP_F ; 2
|
|
||||||
|
|
||||||
; wGBPrinterBrightness::
|
; wGBPrinterBrightness::
|
||||||
DEF GBPRINTER_LIGHTEST EQU $00
|
DEF GBPRINTER_LIGHTEST EQU $00
|
||||||
@ -178,10 +176,6 @@ DEF SCRIPT_RUNNING EQU 2
|
|||||||
const SCRIPT_WAIT_MOVEMENT
|
const SCRIPT_WAIT_MOVEMENT
|
||||||
const SCRIPT_WAIT
|
const SCRIPT_WAIT
|
||||||
|
|
||||||
; wSpawnAfterChampion::
|
|
||||||
DEF SPAWN_LANCE EQU 1
|
|
||||||
DEF SPAWN_RED EQU 2
|
|
||||||
|
|
||||||
; wCurDay::
|
; wCurDay::
|
||||||
const_def
|
const_def
|
||||||
const SUNDAY ; 0
|
const SUNDAY ; 0
|
||||||
|
@ -102,7 +102,7 @@ endc
|
|||||||
engine_flag wSwarmFlags, SWARMFLAGS_BUENAS_PASSWORD_F
|
engine_flag wSwarmFlags, SWARMFLAGS_BUENAS_PASSWORD_F
|
||||||
engine_flag wSwarmFlags, SWARMFLAGS_GOLDENROD_DEPT_STORE_SALE_F
|
engine_flag wSwarmFlags, SWARMFLAGS_GOLDENROD_DEPT_STORE_SALE_F
|
||||||
|
|
||||||
engine_flag wGameTimerPaused, GAME_TIMER_MOBILE_F
|
engine_flag wGameTimerPaused, 7 ; unused
|
||||||
|
|
||||||
engine_flag wPlayerGender, PLAYERGENDER_FEMALE_F
|
engine_flag wPlayerGender, PLAYERGENDER_FEMALE_F
|
||||||
|
|
||||||
|
@ -31,7 +31,7 @@
|
|||||||
- **PrintText1bpp**, **FarPrintText1bpp**: SpeechTextbox1bpp + UpdateSprites + ApplyTilemap + ClearTextbox + PrintTextboxText
|
- **PrintText1bpp**, **FarPrintText1bpp**: SpeechTextbox1bpp + UpdateSprites + ApplyTilemap + ClearTextbox + PrintTextboxText
|
||||||
- **PrintText2bpp**: SpeechTextbox2bpp + UpdateSprites + ApplyTilemap + ClearTextbox + PrintTextboxText
|
- **PrintText2bpp**: SpeechTextbox2bpp + UpdateSprites + ApplyTilemap + ClearTextbox + PrintTextboxText
|
||||||
- **MapTextbox**: ClearTextbox + redraw tile behind cursor + SafeUpdateSprites + disable OAM update + ApplyTilemap + PrintTextboxText + enable OAM update
|
- **MapTextbox**: ClearTextbox + redraw tile behind cursor + SafeUpdateSprites + disable OAM update + ApplyTilemap + PrintTextboxText + enable OAM update
|
||||||
- **MenuBox**: Calls Textbox1bpp or Textbox2bpp, depending on the value at wTextboxFlags[TEXT_2BPP_F], with menu location and dimensions.
|
- **MenuBox**: Calls Textbox1bpp or Textbox2bpp, depending on the value of wText2bpp, with menu location and dimensions.
|
||||||
|
|
||||||
#### Overworld map scrolling
|
#### Overworld map scrolling
|
||||||
|
|
||||||
|
@ -368,8 +368,8 @@ BoardMenu_OpenSubmenu:
|
|||||||
call LoadStandardMenuHeader
|
call LoadStandardMenuHeader
|
||||||
farcall FadeOutPalettesToWhite
|
farcall FadeOutPalettesToWhite
|
||||||
call DisableOverworldHUD
|
call DisableOverworldHUD
|
||||||
ld hl, wTextboxFlags
|
ld a, FALSE
|
||||||
res TEXT_2BPP_F, [hl]
|
ld [wText2bpp], a
|
||||||
call LoadStandardFont
|
call LoadStandardFont
|
||||||
call LoadFrame
|
call LoadFrame
|
||||||
call ClearSprites
|
call ClearSprites
|
||||||
@ -378,8 +378,8 @@ BoardMenu_OpenSubmenu:
|
|||||||
|
|
||||||
BoardMenu_CloseSubmenu:
|
BoardMenu_CloseSubmenu:
|
||||||
call ClearBGPalettes
|
call ClearBGPalettes
|
||||||
ld hl, wTextboxFlags
|
ld a, TRUE
|
||||||
set TEXT_2BPP_F, [hl]
|
ld [wText2bpp], a
|
||||||
call EnableOverworldHUD
|
call EnableOverworldHUD
|
||||||
call ReloadTilesetAndPalettes
|
call ReloadTilesetAndPalettes
|
||||||
call UpdateSprites
|
call UpdateSprites
|
||||||
|
@ -7,8 +7,6 @@ HallOfFame::
|
|||||||
ld a, 1
|
ld a, 1
|
||||||
ld [wGameLogicPaused], a
|
ld [wGameLogicPaused], a
|
||||||
call DisableSpriteUpdates
|
call DisableSpriteUpdates
|
||||||
ld a, SPAWN_LEVEL_1
|
|
||||||
ld [wSpawnAfterChampion], a
|
|
||||||
|
|
||||||
; Enable the Pokégear map to cycle through all of Kanto
|
; Enable the Pokégear map to cycle through all of Kanto
|
||||||
ld hl, wStatusFlags
|
ld hl, wStatusFlags
|
||||||
@ -49,8 +47,6 @@ RedCredits::
|
|||||||
ld c, 8
|
ld c, 8
|
||||||
call DelayFrames
|
call DelayFrames
|
||||||
call DisableSpriteUpdates
|
call DisableSpriteUpdates
|
||||||
ld a, SPAWN_LEVEL_1
|
|
||||||
ld [wSpawnAfterChampion], a
|
|
||||||
ld a, [wStatusFlags]
|
ld a, [wStatusFlags]
|
||||||
ld b, a
|
ld b, a
|
||||||
farcall Credits
|
farcall Credits
|
||||||
|
121
engine/menus/game_menu.asm
Executable file
121
engine/menus/game_menu.asm
Executable file
@ -0,0 +1,121 @@
|
|||||||
|
; GameMenu.String and GameMenu.Jumptable indexes
|
||||||
|
const_def
|
||||||
|
const GAMEMENU_WORLD_MAP
|
||||||
|
const GAMEMENU_SHOP
|
||||||
|
|
||||||
|
GameMenu:
|
||||||
|
ld de, MUSIC_NONE
|
||||||
|
call PlayMusic
|
||||||
|
call DelayFrame
|
||||||
|
ld de, MUSIC_MAIN_MENU
|
||||||
|
call PlayMusic
|
||||||
|
; fallthrough
|
||||||
|
|
||||||
|
GameMenu_KeepMusic:
|
||||||
|
call ClearTilemap
|
||||||
|
call LoadFrame
|
||||||
|
call LoadStandardFont
|
||||||
|
call ClearMenuAndWindowData
|
||||||
|
ld b, CGB_DIPLOMA
|
||||||
|
call GetCGBLayout
|
||||||
|
call SetPalettes
|
||||||
|
xor a
|
||||||
|
ld [wWhichIndexSet], a
|
||||||
|
ld hl, .MenuHeader
|
||||||
|
call LoadMenuHeader
|
||||||
|
call GameMenuJoypadLoop
|
||||||
|
call CloseWindow
|
||||||
|
jr c, .quit
|
||||||
|
call ClearTilemap
|
||||||
|
ld a, [wMenuSelection]
|
||||||
|
ld hl, .Jumptable
|
||||||
|
rst JumpTable
|
||||||
|
jr GameMenu
|
||||||
|
|
||||||
|
.quit
|
||||||
|
ret
|
||||||
|
|
||||||
|
.MenuHeader:
|
||||||
|
db MENU_BACKUP_TILES ; flags
|
||||||
|
menu_coords 0, 0, 16, 7
|
||||||
|
dw .MenuData
|
||||||
|
db 1 ; default option
|
||||||
|
|
||||||
|
.MenuData:
|
||||||
|
db STATICMENU_CURSOR ; flags
|
||||||
|
db 0 ; items
|
||||||
|
dw GameMenuItems
|
||||||
|
dw PlaceMenuStrings
|
||||||
|
dw .Strings
|
||||||
|
|
||||||
|
.Strings:
|
||||||
|
; entries correspond to GAMEMENUITEM_* constants
|
||||||
|
db "WORLD MAP@"
|
||||||
|
db "SHOP@"
|
||||||
|
|
||||||
|
.Jumptable:
|
||||||
|
; entries correspond to GAMEMENUITEM_* constants
|
||||||
|
dw GameMenu_WorldMap
|
||||||
|
dw GameMenu_Shop
|
||||||
|
|
||||||
|
GameMenuItems:
|
||||||
|
db 2
|
||||||
|
db GAMEMENU_WORLD_MAP
|
||||||
|
db GAMEMENU_SHOP
|
||||||
|
db -1
|
||||||
|
|
||||||
|
GameMenuJoypadLoop:
|
||||||
|
call SetUpMenu
|
||||||
|
.loop
|
||||||
|
ld a, [w2DMenuFlags1]
|
||||||
|
set 5, a
|
||||||
|
ld [w2DMenuFlags1], a
|
||||||
|
call GetScrollingMenuJoypad
|
||||||
|
ld a, [wMenuJoypad]
|
||||||
|
cp B_BUTTON
|
||||||
|
jr z, .b_button
|
||||||
|
cp A_BUTTON
|
||||||
|
jr z, .a_button
|
||||||
|
jr .loop
|
||||||
|
|
||||||
|
.a_button
|
||||||
|
call PlayClickSFX
|
||||||
|
and a
|
||||||
|
ret
|
||||||
|
|
||||||
|
.b_button
|
||||||
|
scf
|
||||||
|
ret
|
||||||
|
|
||||||
|
GameMenu_WorldMap:
|
||||||
|
ld a, [wSaveFileInOverworld]
|
||||||
|
and a
|
||||||
|
jr z, .not_in_overworld
|
||||||
|
|
||||||
|
ld a, $8
|
||||||
|
ld [wMusicFade], a
|
||||||
|
ld a, LOW(MUSIC_NONE)
|
||||||
|
ld [wMusicFadeID], a
|
||||||
|
ld a, HIGH(MUSIC_NONE)
|
||||||
|
ld [wMusicFadeID + 1], a
|
||||||
|
call ClearBGPalettes
|
||||||
|
call ClearTilemap
|
||||||
|
ld c, 20
|
||||||
|
call DelayFrames
|
||||||
|
farcall JumpRoamMons
|
||||||
|
ld a, MAPSETUP_CONTINUE
|
||||||
|
ldh [hMapEntryMethod], a
|
||||||
|
xor a
|
||||||
|
ld [wDontPlayMapMusicOnReload], a
|
||||||
|
ld [wLinkMode], a
|
||||||
|
ld hl, wGameTimerPaused
|
||||||
|
set GAME_TIMER_COUNTING_F, [hl]
|
||||||
|
farcall OverworldLoop
|
||||||
|
jp GameMenu
|
||||||
|
|
||||||
|
.not_in_overworld
|
||||||
|
farcall LevelSelectionMenu
|
||||||
|
ret
|
||||||
|
|
||||||
|
GameMenu_Shop:
|
||||||
|
ret
|
@ -1,14 +1,3 @@
|
|||||||
Intro_MainMenu:
|
|
||||||
ld de, MUSIC_NONE
|
|
||||||
call PlayMusic
|
|
||||||
call DelayFrame
|
|
||||||
ld de, MUSIC_MAIN_MENU
|
|
||||||
ld a, e
|
|
||||||
ld [wMapMusic], a
|
|
||||||
call PlayMusic
|
|
||||||
farcall MainMenu
|
|
||||||
jp StartTitleScreen
|
|
||||||
|
|
||||||
PrintDayOfWeek:
|
PrintDayOfWeek:
|
||||||
push de
|
push de
|
||||||
ld hl, .Days
|
ld hl, .Days
|
||||||
@ -36,15 +25,6 @@ PrintDayOfWeek:
|
|||||||
.Day:
|
.Day:
|
||||||
db "DAY@"
|
db "DAY@"
|
||||||
|
|
||||||
NewGame_ClearTilemapEtc:
|
|
||||||
xor a
|
|
||||||
ldh [hMapAnims], a
|
|
||||||
call ClearTilemap
|
|
||||||
call LoadFrame
|
|
||||||
call LoadStandardFont
|
|
||||||
call ClearMenuAndWindowData
|
|
||||||
ret
|
|
||||||
|
|
||||||
Option:
|
Option:
|
||||||
farcall _Option
|
farcall _Option
|
||||||
ret
|
ret
|
||||||
@ -53,24 +33,32 @@ NewGame:
|
|||||||
xor a
|
xor a
|
||||||
ld [wDebugFlags], a
|
ld [wDebugFlags], a
|
||||||
call ResetWRAM
|
call ResetWRAM
|
||||||
call NewGame_ClearTilemapEtc
|
xor a
|
||||||
|
ldh [hMapAnims], a
|
||||||
|
call ClearTilemap
|
||||||
|
call LoadFrame
|
||||||
|
call LoadStandardFont
|
||||||
|
call ClearMenuAndWindowData
|
||||||
call InitTime ; set wStartDay through wStartSecond to $00
|
call InitTime ; set wStartDay through wStartSecond to $00
|
||||||
call AreYouABoyOrAreYouAGirl
|
|
||||||
call OakSpeech
|
|
||||||
call InitializeWorld
|
|
||||||
|
|
||||||
ld a, LANDMARK_LEVEL_1
|
|
||||||
ld [wPrevLandmark], a
|
|
||||||
|
|
||||||
ld a, SPAWN_LEVEL_1
|
|
||||||
ld [wDefaultSpawnpoint], a
|
|
||||||
|
|
||||||
ld a, MAPSETUP_WARP
|
|
||||||
ldh [hMapEntryMethod], a
|
|
||||||
jp FinishContinueFunction
|
|
||||||
|
|
||||||
AreYouABoyOrAreYouAGirl:
|
|
||||||
farcall InitGender
|
farcall InitGender
|
||||||
|
call .SetPlayerName
|
||||||
|
farcall AutoSaveGameOutsideOverworld
|
||||||
|
jp GameMenu
|
||||||
|
|
||||||
|
.SetPlayerName
|
||||||
|
ld hl, wPlayerName
|
||||||
|
ld a, "D"
|
||||||
|
ld [hli], a
|
||||||
|
ld a, "E"
|
||||||
|
ld [hli], a
|
||||||
|
ld a, "B"
|
||||||
|
ld [hli], a
|
||||||
|
ld a, "U"
|
||||||
|
ld [hli], a
|
||||||
|
ld a, "G"
|
||||||
|
ld [hli], a
|
||||||
|
ld a, "@"
|
||||||
|
ld [hl], a
|
||||||
ret
|
ret
|
||||||
|
|
||||||
ResetWRAM:
|
ResetWRAM:
|
||||||
@ -267,12 +255,6 @@ InitializeNPCNames:
|
|||||||
.Green: db "GREEN@"
|
.Green: db "GREEN@"
|
||||||
.Mom: db "MOM@"
|
.Mom: db "MOM@"
|
||||||
|
|
||||||
InitializeWorld:
|
|
||||||
call ShrinkPlayer
|
|
||||||
farcall SpawnPlayer
|
|
||||||
farcall _InitializeStartDay
|
|
||||||
ret
|
|
||||||
|
|
||||||
LoadOrRegenerateLuckyIDNumber:
|
LoadOrRegenerateLuckyIDNumber:
|
||||||
ld a, BANK(sLuckyIDNumber)
|
ld a, BANK(sLuckyIDNumber)
|
||||||
call OpenSRAM
|
call OpenSRAM
|
||||||
@ -302,90 +284,11 @@ LoadOrRegenerateLuckyIDNumber:
|
|||||||
Continue:
|
Continue:
|
||||||
farcall TryLoadSaveFile
|
farcall TryLoadSaveFile
|
||||||
jr c, .FailToLoad
|
jr c, .FailToLoad
|
||||||
call LoadStandardMenuHeader
|
jp GameMenu_KeepMusic
|
||||||
call DisplaySaveInfoOnContinue
|
|
||||||
ld a, $1
|
|
||||||
ldh [hBGMapMode], a
|
|
||||||
ld c, 20
|
|
||||||
call DelayFrames
|
|
||||||
call ConfirmContinue
|
|
||||||
jr nc, .CheckPass
|
|
||||||
call CloseWindow
|
|
||||||
jr .FailToLoad
|
|
||||||
|
|
||||||
.CheckPass:
|
|
||||||
ld a, $8
|
|
||||||
ld [wMusicFade], a
|
|
||||||
ld a, LOW(MUSIC_NONE)
|
|
||||||
ld [wMusicFadeID], a
|
|
||||||
ld a, HIGH(MUSIC_NONE)
|
|
||||||
ld [wMusicFadeID + 1], a
|
|
||||||
call ClearBGPalettes
|
|
||||||
call CloseWindow
|
|
||||||
call ClearTilemap
|
|
||||||
ld c, 20
|
|
||||||
call DelayFrames
|
|
||||||
farcall JumpRoamMons
|
|
||||||
ld a, [wSpawnAfterChampion]
|
|
||||||
cp SPAWN_N_A
|
|
||||||
jr z, .SpawnAfterE4
|
|
||||||
ld a, MAPSETUP_CONTINUE
|
|
||||||
ldh [hMapEntryMethod], a
|
|
||||||
jp FinishContinueFunction
|
|
||||||
|
|
||||||
.FailToLoad:
|
.FailToLoad:
|
||||||
ret
|
ret
|
||||||
|
|
||||||
.SpawnAfterE4:
|
|
||||||
ld a, SPAWN_LEVEL_1
|
|
||||||
ld [wDefaultSpawnpoint], a
|
|
||||||
call PostCreditsSpawn
|
|
||||||
jp FinishContinueFunction
|
|
||||||
|
|
||||||
SpawnAfterRed:
|
|
||||||
ld a, SPAWN_LEVEL_1
|
|
||||||
ld [wDefaultSpawnpoint], a
|
|
||||||
|
|
||||||
PostCreditsSpawn:
|
|
||||||
xor a
|
|
||||||
ld [wSpawnAfterChampion], a
|
|
||||||
ld a, MAPSETUP_WARP
|
|
||||||
ldh [hMapEntryMethod], a
|
|
||||||
ret
|
|
||||||
|
|
||||||
ConfirmContinue:
|
|
||||||
.loop
|
|
||||||
call DelayFrame
|
|
||||||
call GetJoypad
|
|
||||||
ld hl, hJoyPressed
|
|
||||||
bit A_BUTTON_F, [hl]
|
|
||||||
jr nz, .PressA
|
|
||||||
bit B_BUTTON_F, [hl]
|
|
||||||
jr z, .loop
|
|
||||||
scf
|
|
||||||
ret
|
|
||||||
|
|
||||||
.PressA:
|
|
||||||
ret
|
|
||||||
|
|
||||||
FinishContinueFunction:
|
|
||||||
.loop
|
|
||||||
xor a
|
|
||||||
ld [wDontPlayMapMusicOnReload], a
|
|
||||||
ld [wLinkMode], a
|
|
||||||
ld hl, wGameTimerPaused
|
|
||||||
set GAME_TIMER_PAUSED_F, [hl]
|
|
||||||
res GAME_TIMER_MOBILE_F, [hl]
|
|
||||||
farcall OverworldLoop
|
|
||||||
ld a, [wSpawnAfterChampion]
|
|
||||||
cp SPAWN_N_A
|
|
||||||
jr z, .AfterRed
|
|
||||||
jp Reset
|
|
||||||
|
|
||||||
.AfterRed:
|
|
||||||
call SpawnAfterRed
|
|
||||||
jr .loop
|
|
||||||
|
|
||||||
DisplaySaveInfoOnContinue:
|
DisplaySaveInfoOnContinue:
|
||||||
lb de, 4, 8
|
lb de, 4, 8
|
||||||
call DisplayNormalContinueData
|
call DisplayNormalContinueData
|
||||||
@ -829,309 +732,3 @@ Intro_PlacePlayerSprite:
|
|||||||
db 9 * TILE_WIDTH + 4, 10 * TILE_WIDTH, 1
|
db 9 * TILE_WIDTH + 4, 10 * TILE_WIDTH, 1
|
||||||
db 10 * TILE_WIDTH + 4, 9 * TILE_WIDTH, 2
|
db 10 * TILE_WIDTH + 4, 9 * TILE_WIDTH, 2
|
||||||
db 10 * TILE_WIDTH + 4, 10 * TILE_WIDTH, 3
|
db 10 * TILE_WIDTH + 4, 10 * TILE_WIDTH, 3
|
||||||
|
|
||||||
|
|
||||||
const_def
|
|
||||||
const TITLESCREENOPTION_MAIN_MENU
|
|
||||||
const TITLESCREENOPTION_DELETE_SAVE_DATA
|
|
||||||
const TITLESCREENOPTION_RESTART
|
|
||||||
const TITLESCREENOPTION_UNUSED
|
|
||||||
DEF NUM_TITLESCREENOPTIONS EQU const_value
|
|
||||||
|
|
||||||
IntroSequence:
|
|
||||||
callfar SplashScreen
|
|
||||||
jr c, StartTitleScreen
|
|
||||||
farcall CrystalIntro
|
|
||||||
|
|
||||||
; fallthrough
|
|
||||||
|
|
||||||
StartTitleScreen:
|
|
||||||
ldh a, [rSVBK]
|
|
||||||
push af
|
|
||||||
ld a, BANK(wLYOverrides)
|
|
||||||
ldh [rSVBK], a
|
|
||||||
|
|
||||||
call .TitleScreen
|
|
||||||
call DelayFrame
|
|
||||||
.loop
|
|
||||||
call RunTitleScreen
|
|
||||||
jr nc, .loop
|
|
||||||
|
|
||||||
call ClearSprites
|
|
||||||
call ClearBGPalettes
|
|
||||||
|
|
||||||
pop af
|
|
||||||
ldh [rSVBK], a
|
|
||||||
|
|
||||||
ld hl, rLCDC
|
|
||||||
res rLCDC_SPRITE_SIZE, [hl] ; 8x8
|
|
||||||
call ClearScreen
|
|
||||||
call WaitBGMap2
|
|
||||||
xor a
|
|
||||||
ldh [hLCDCPointer], a
|
|
||||||
ldh [hSCX], a
|
|
||||||
ldh [hSCY], a
|
|
||||||
ld a, $7
|
|
||||||
ldh [hWX], a
|
|
||||||
ld a, $90
|
|
||||||
ldh [hWY], a
|
|
||||||
ld b, CGB_DIPLOMA
|
|
||||||
call GetCGBLayout
|
|
||||||
call UpdateTimePals
|
|
||||||
ld a, [wTitleScreenSelectedOption]
|
|
||||||
cp NUM_TITLESCREENOPTIONS
|
|
||||||
jr c, .ok
|
|
||||||
xor a
|
|
||||||
.ok
|
|
||||||
ld e, a
|
|
||||||
ld d, 0
|
|
||||||
ld hl, .dw
|
|
||||||
add hl, de
|
|
||||||
add hl, de
|
|
||||||
ld a, [hli]
|
|
||||||
ld h, [hl]
|
|
||||||
ld l, a
|
|
||||||
jp hl
|
|
||||||
|
|
||||||
.dw
|
|
||||||
dw Intro_MainMenu
|
|
||||||
dw DeleteSaveData
|
|
||||||
dw IntroSequence
|
|
||||||
dw IntroSequence
|
|
||||||
|
|
||||||
.TitleScreen:
|
|
||||||
farcall _TitleScreen
|
|
||||||
ret
|
|
||||||
|
|
||||||
RunTitleScreen:
|
|
||||||
ld a, [wJumptableIndex]
|
|
||||||
bit 7, a
|
|
||||||
jr nz, .done_title
|
|
||||||
call TitleScreenScene
|
|
||||||
farcall SuicuneFrameIterator
|
|
||||||
call DelayFrame
|
|
||||||
and a
|
|
||||||
ret
|
|
||||||
|
|
||||||
.done_title
|
|
||||||
scf
|
|
||||||
ret
|
|
||||||
|
|
||||||
UnusedTitlePerspectiveScroll: ; unreferenced
|
|
||||||
; Similar behavior to Intro_PerspectiveScrollBG.
|
|
||||||
ldh a, [hVBlankCounter]
|
|
||||||
and $7
|
|
||||||
ret nz
|
|
||||||
ld hl, wLYOverrides + $5f
|
|
||||||
ld a, [hl]
|
|
||||||
dec a
|
|
||||||
ld bc, 2 * SCREEN_WIDTH
|
|
||||||
call ByteFill
|
|
||||||
ret
|
|
||||||
|
|
||||||
TitleScreenScene:
|
|
||||||
ld e, a
|
|
||||||
ld d, 0
|
|
||||||
ld hl, .scenes
|
|
||||||
add hl, de
|
|
||||||
add hl, de
|
|
||||||
ld a, [hli]
|
|
||||||
ld h, [hl]
|
|
||||||
ld l, a
|
|
||||||
jp hl
|
|
||||||
|
|
||||||
.scenes
|
|
||||||
dw TitleScreenEntrance
|
|
||||||
dw TitleScreenTimer
|
|
||||||
dw TitleScreenMain
|
|
||||||
dw TitleScreenEnd
|
|
||||||
|
|
||||||
TitleScreenNextScene: ; unreferenced
|
|
||||||
ld hl, wJumptableIndex
|
|
||||||
inc [hl]
|
|
||||||
ret
|
|
||||||
|
|
||||||
TitleScreenEntrance:
|
|
||||||
; Animate the logo:
|
|
||||||
; Move each line by 4 pixels until our count hits 0.
|
|
||||||
ldh a, [hSCX]
|
|
||||||
and a
|
|
||||||
jr z, .done
|
|
||||||
sub 4
|
|
||||||
ldh [hSCX], a
|
|
||||||
|
|
||||||
; Lay out a base (all lines scrolling together).
|
|
||||||
ld e, a
|
|
||||||
ld hl, wLYOverrides
|
|
||||||
ld bc, 8 * 10 ; logo height
|
|
||||||
call ByteFill
|
|
||||||
|
|
||||||
; Reversed signage for every other line's position.
|
|
||||||
; This is responsible for the interlaced effect.
|
|
||||||
ld a, e
|
|
||||||
xor $ff
|
|
||||||
inc a
|
|
||||||
|
|
||||||
ld b, 8 * 10 / 2 ; logo height / 2
|
|
||||||
ld hl, wLYOverrides + 1
|
|
||||||
.loop
|
|
||||||
ld [hli], a
|
|
||||||
inc hl
|
|
||||||
dec b
|
|
||||||
jr nz, .loop
|
|
||||||
|
|
||||||
farcall AnimateTitleCrystal
|
|
||||||
ret
|
|
||||||
|
|
||||||
.done
|
|
||||||
; Next scene
|
|
||||||
ld hl, wJumptableIndex
|
|
||||||
inc [hl]
|
|
||||||
xor a
|
|
||||||
ldh [hLCDCPointer], a
|
|
||||||
|
|
||||||
; Play the title screen music.
|
|
||||||
ld de, MUSIC_TITLE
|
|
||||||
call PlayMusic
|
|
||||||
|
|
||||||
ld a, $88
|
|
||||||
ldh [hWY], a
|
|
||||||
ret
|
|
||||||
|
|
||||||
TitleScreenTimer:
|
|
||||||
; Next scene
|
|
||||||
ld hl, wJumptableIndex
|
|
||||||
inc [hl]
|
|
||||||
|
|
||||||
; Start a timer
|
|
||||||
ld hl, wTitleScreenTimer
|
|
||||||
ld de, 73 * 60 + 36
|
|
||||||
ld [hl], e
|
|
||||||
inc hl
|
|
||||||
ld [hl], d
|
|
||||||
ret
|
|
||||||
|
|
||||||
TitleScreenMain:
|
|
||||||
; Run the timer down.
|
|
||||||
ld hl, wTitleScreenTimer
|
|
||||||
ld e, [hl]
|
|
||||||
inc hl
|
|
||||||
ld d, [hl]
|
|
||||||
ld a, e
|
|
||||||
or d
|
|
||||||
jr z, .end
|
|
||||||
|
|
||||||
dec de
|
|
||||||
ld [hl], d
|
|
||||||
dec hl
|
|
||||||
ld [hl], e
|
|
||||||
|
|
||||||
; Save data can be deleted by pressing Up + B + Select.
|
|
||||||
call GetJoypad
|
|
||||||
ld hl, hJoyDown
|
|
||||||
ld a, [hl]
|
|
||||||
and D_UP + B_BUTTON + SELECT
|
|
||||||
cp D_UP + B_BUTTON + SELECT
|
|
||||||
jr z, .delete_save_data
|
|
||||||
|
|
||||||
; Press Start or A to start the game.
|
|
||||||
ld a, [hl]
|
|
||||||
and START | A_BUTTON
|
|
||||||
jr nz, .incave
|
|
||||||
ret
|
|
||||||
|
|
||||||
.incave
|
|
||||||
ld a, TITLESCREENOPTION_MAIN_MENU
|
|
||||||
jr .done
|
|
||||||
|
|
||||||
.delete_save_data
|
|
||||||
ld a, TITLESCREENOPTION_DELETE_SAVE_DATA
|
|
||||||
|
|
||||||
.done
|
|
||||||
ld [wTitleScreenSelectedOption], a
|
|
||||||
|
|
||||||
; Return to the intro sequence.
|
|
||||||
ld hl, wJumptableIndex
|
|
||||||
set 7, [hl]
|
|
||||||
ret
|
|
||||||
|
|
||||||
.end
|
|
||||||
; Next scene
|
|
||||||
ld hl, wJumptableIndex
|
|
||||||
inc [hl]
|
|
||||||
|
|
||||||
; Fade out the title screen music
|
|
||||||
xor a ; MUSIC_NONE
|
|
||||||
ld [wMusicFadeID], a
|
|
||||||
ld [wMusicFadeID + 1], a
|
|
||||||
ld hl, wMusicFade
|
|
||||||
ld [hl], 8 ; 1 second
|
|
||||||
|
|
||||||
ld hl, wTitleScreenTimer
|
|
||||||
inc [hl]
|
|
||||||
ret
|
|
||||||
|
|
||||||
TitleScreenEnd:
|
|
||||||
; Wait until the music is done fading.
|
|
||||||
|
|
||||||
ld hl, wTitleScreenTimer
|
|
||||||
inc [hl]
|
|
||||||
|
|
||||||
ld a, [wMusicFade]
|
|
||||||
and a
|
|
||||||
ret nz
|
|
||||||
|
|
||||||
ld a, TITLESCREENOPTION_RESTART
|
|
||||||
ld [wTitleScreenSelectedOption], a
|
|
||||||
|
|
||||||
; Back to the intro.
|
|
||||||
ld hl, wJumptableIndex
|
|
||||||
set 7, [hl]
|
|
||||||
ret
|
|
||||||
|
|
||||||
DeleteSaveData:
|
|
||||||
farcall _DeleteSaveData
|
|
||||||
jp Init
|
|
||||||
|
|
||||||
Copyright:
|
|
||||||
call ClearTilemap
|
|
||||||
call LoadFrame
|
|
||||||
ld de, CopyrightGFX
|
|
||||||
ld hl, vTiles2 tile $60
|
|
||||||
lb bc, BANK(CopyrightGFX), 29
|
|
||||||
call Request2bpp
|
|
||||||
hlcoord 2, 7
|
|
||||||
ld de, CopyrightString
|
|
||||||
jp PlaceString
|
|
||||||
|
|
||||||
CopyrightString:
|
|
||||||
; ©1995-2001 Nintendo
|
|
||||||
db $60, $61, $62, $63, $64, $65, $66
|
|
||||||
db $67, $68, $69, $6a, $6b, $6c
|
|
||||||
|
|
||||||
; ©1995-2001 Creatures inc.
|
|
||||||
next $60, $61, $62, $63, $64, $65, $66
|
|
||||||
db $6d, $6e, $6f, $70, $71, $72, $7a, $7b, $7c
|
|
||||||
|
|
||||||
; ©1995-2001 GAME FREAK inc.
|
|
||||||
next $60, $61, $62, $63, $64, $65, $66
|
|
||||||
db $73, $74, $75, $76, $77, $78, $79, $7a, $7b, $7c
|
|
||||||
|
|
||||||
db "@"
|
|
||||||
|
|
||||||
GameInit::
|
|
||||||
farcall TryLoadSaveData
|
|
||||||
call ClearMenuAndWindowData
|
|
||||||
call ClearBGPalettes
|
|
||||||
call ClearTilemap
|
|
||||||
ld a, HIGH(vBGMap0)
|
|
||||||
ldh [hBGMapAddress + 1], a
|
|
||||||
xor a ; LOW(vBGMap0)
|
|
||||||
ldh [hBGMapAddress], a
|
|
||||||
ldh [hJoyDown], a
|
|
||||||
ldh [hSCX], a
|
|
||||||
ldh [hSCY], a
|
|
||||||
ld a, $90
|
|
||||||
ldh [hWY], a
|
|
||||||
call WaitBGMap
|
|
||||||
jp IntroSequence
|
|
||||||
|
@ -132,6 +132,7 @@ LevelSelectionMenu::
|
|||||||
ld [wMusicFadeID + 1], a
|
ld [wMusicFadeID + 1], a
|
||||||
call ClearBGPalettes
|
call ClearBGPalettes
|
||||||
call ClearTilemap
|
call ClearTilemap
|
||||||
|
farcall ClearSpriteAnims
|
||||||
call ClearSprites
|
call ClearSprites
|
||||||
xor a
|
xor a
|
||||||
ld [wVramState], a
|
ld [wVramState], a
|
||||||
@ -149,7 +150,7 @@ LevelSelectionMenu::
|
|||||||
ld a, PLAYER_NORMAL
|
ld a, PLAYER_NORMAL
|
||||||
ld [wPlayerState], a ; this may need to be set on a per-level basis (e.g. if specific level starts with player in surf state)
|
ld [wPlayerState], a ; this may need to be set on a per-level basis (e.g. if specific level starts with player in surf state)
|
||||||
ld hl, wGameTimerPaused
|
ld hl, wGameTimerPaused
|
||||||
set GAME_TIMER_PAUSED_F, [hl] ; start game timer counter
|
set GAME_TIMER_COUNTING_F, [hl] ; start game timer counter
|
||||||
farcall OverworldLoop
|
farcall OverworldLoop
|
||||||
ret
|
ret
|
||||||
|
|
||||||
@ -161,6 +162,7 @@ LevelSelectionMenu::
|
|||||||
call LevelSelectionMenu_Delay10Frames
|
call LevelSelectionMenu_Delay10Frames
|
||||||
call ClearBGPalettes
|
call ClearBGPalettes
|
||||||
call ClearTilemap
|
call ClearTilemap
|
||||||
|
farcall ClearSpriteAnims
|
||||||
call ClearSprites
|
call ClearSprites
|
||||||
xor a
|
xor a
|
||||||
ld [wVramState], a
|
ld [wVramState], a
|
||||||
|
@ -14,12 +14,16 @@ MainMenu:
|
|||||||
.loop
|
.loop
|
||||||
xor a
|
xor a
|
||||||
ld [wDisableTextAcceleration], a
|
ld [wDisableTextAcceleration], a
|
||||||
call ClearTilemapEtc
|
ldh [hMapAnims], a
|
||||||
|
call ClearTilemap
|
||||||
|
call LoadFrame
|
||||||
|
call LoadStandardFont
|
||||||
|
call ClearMenuAndWindowData
|
||||||
ld b, CGB_DIPLOMA
|
ld b, CGB_DIPLOMA
|
||||||
call GetCGBLayout
|
call GetCGBLayout
|
||||||
call SetPalettes
|
call SetPalettes
|
||||||
ld hl, wGameTimerPaused
|
ld hl, wGameTimerPaused
|
||||||
res GAME_TIMER_PAUSED_F, [hl]
|
res GAME_TIMER_COUNTING_F, [hl]
|
||||||
call MainMenu_GetWhichMenu
|
call MainMenu_GetWhichMenu
|
||||||
ld [wWhichIndexSet], a
|
ld [wWhichIndexSet], a
|
||||||
call MainMenu_PrintCurrentTimeAndDay
|
call MainMenu_PrintCurrentTimeAndDay
|
||||||
@ -88,9 +92,6 @@ endc
|
|||||||
db -1
|
db -1
|
||||||
|
|
||||||
MainMenu_GetWhichMenu:
|
MainMenu_GetWhichMenu:
|
||||||
nop
|
|
||||||
nop
|
|
||||||
nop
|
|
||||||
ld a, [wSaveFileExists]
|
ld a, [wSaveFileExists]
|
||||||
and a
|
and a
|
||||||
jr nz, .next
|
jr nz, .next
|
||||||
@ -206,25 +207,16 @@ MainMenu_PrintCurrentTimeAndDay:
|
|||||||
db "NITE@"
|
db "NITE@"
|
||||||
db "EVE@"
|
db "EVE@"
|
||||||
|
|
||||||
ClearTilemapEtc:
|
|
||||||
xor a
|
|
||||||
ldh [hMapAnims], a
|
|
||||||
call ClearTilemap
|
|
||||||
call LoadFrame
|
|
||||||
call LoadStandardFont
|
|
||||||
call ClearMenuAndWindowData
|
|
||||||
ret
|
|
||||||
|
|
||||||
MainMenu_NewGame:
|
MainMenu_NewGame:
|
||||||
farcall NewGame
|
call NewGame
|
||||||
ret
|
ret
|
||||||
|
|
||||||
MainMenu_Option:
|
MainMenu_Option:
|
||||||
farcall Option
|
call Option
|
||||||
ret
|
ret
|
||||||
|
|
||||||
MainMenu_Continue:
|
MainMenu_Continue:
|
||||||
farcall Continue
|
call Continue
|
||||||
ret
|
ret
|
||||||
|
|
||||||
if DEF(_DEBUG)
|
if DEF(_DEBUG)
|
||||||
|
@ -22,6 +22,36 @@ SaveMenu:
|
|||||||
scf
|
scf
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
AutoSaveGameInOverworld:
|
||||||
|
call PauseGameLogic
|
||||||
|
; Prevent joypad interrupts
|
||||||
|
xor a
|
||||||
|
ldh [hJoypadReleased], a
|
||||||
|
ldh [hJoypadPressed], a
|
||||||
|
ldh [hJoypadSum], a
|
||||||
|
ldh [hJoypadDown], a
|
||||||
|
; Signal that we're saving inside a level
|
||||||
|
ld a, TRUE
|
||||||
|
ld [wSaveFileInOverworld], a
|
||||||
|
call SaveGameData
|
||||||
|
call ResumeGameLogic
|
||||||
|
ret
|
||||||
|
|
||||||
|
AutoSaveGameOutsideOverworld:
|
||||||
|
call PauseGameLogic
|
||||||
|
; Prevent joypad interrupts
|
||||||
|
xor a
|
||||||
|
ldh [hJoypadReleased], a
|
||||||
|
ldh [hJoypadPressed], a
|
||||||
|
ldh [hJoypadSum], a
|
||||||
|
ldh [hJoypadDown], a
|
||||||
|
; Signal that we're not saving inside a level
|
||||||
|
xor a ; FALSE
|
||||||
|
ld [wSaveFileInOverworld], a
|
||||||
|
call SaveGameData
|
||||||
|
call ResumeGameLogic
|
||||||
|
ret
|
||||||
|
|
||||||
SaveAfterLinkTrade:
|
SaveAfterLinkTrade:
|
||||||
call PauseGameLogic
|
call PauseGameLogic
|
||||||
call SavePokemonData
|
call SavePokemonData
|
||||||
@ -166,10 +196,6 @@ AddHallOfFameEntry:
|
|||||||
"MOBILE_EVENT_OBJECT_GS_BALL is no longer equal to $0b."
|
"MOBILE_EVENT_OBJECT_GS_BALL is no longer equal to $0b."
|
||||||
ret
|
ret
|
||||||
|
|
||||||
SaveGameData:
|
|
||||||
call _SaveGameData
|
|
||||||
ret
|
|
||||||
|
|
||||||
AskOverwriteSaveFile:
|
AskOverwriteSaveFile:
|
||||||
ld a, [wSaveFileExists]
|
ld a, [wSaveFileExists]
|
||||||
and a
|
and a
|
||||||
@ -230,7 +256,9 @@ CompareLoadedAndSavedPlayerID:
|
|||||||
_SavingDontTurnOffThePower:
|
_SavingDontTurnOffThePower:
|
||||||
call SavingDontTurnOffThePower
|
call SavingDontTurnOffThePower
|
||||||
SavedTheGame:
|
SavedTheGame:
|
||||||
call _SaveGameData
|
ld a, TRUE
|
||||||
|
ld [wSaveFileInOverworld], a
|
||||||
|
call SaveGameData
|
||||||
; wait 32 frames
|
; wait 32 frames
|
||||||
ld c, 32
|
ld c, 32
|
||||||
call DelayFrames
|
call DelayFrames
|
||||||
@ -254,7 +282,7 @@ SavedTheGame:
|
|||||||
call DelayFrames
|
call DelayFrames
|
||||||
ret
|
ret
|
||||||
|
|
||||||
_SaveGameData:
|
SaveGameData:
|
||||||
ld a, TRUE
|
ld a, TRUE
|
||||||
ld [wSaveFileExists], a
|
ld [wSaveFileExists], a
|
||||||
call ValidateSave
|
call ValidateSave
|
||||||
|
@ -13,8 +13,8 @@
|
|||||||
StartMenu::
|
StartMenu::
|
||||||
call ClearMenuAndWindowData
|
call ClearMenuAndWindowData
|
||||||
|
|
||||||
ld hl, wTextboxFlags
|
ld a, FALSE
|
||||||
res TEXT_2BPP_F, [hl]
|
ld [wText2bpp], a
|
||||||
|
|
||||||
ld de, SFX_MENU
|
ld de, SFX_MENU
|
||||||
call PlaySFX
|
call PlaySFX
|
||||||
|
313
engine/menus/titlescreen.asm
Executable file
313
engine/menus/titlescreen.asm
Executable file
@ -0,0 +1,313 @@
|
|||||||
|
const_def
|
||||||
|
const TITLESCREENOPTION_MAIN_MENU
|
||||||
|
const TITLESCREENOPTION_DELETE_SAVE_DATA
|
||||||
|
const TITLESCREENOPTION_RESTART
|
||||||
|
const TITLESCREENOPTION_UNUSED
|
||||||
|
DEF NUM_TITLESCREENOPTIONS EQU const_value
|
||||||
|
|
||||||
|
IntroSequence:
|
||||||
|
callfar SplashScreen
|
||||||
|
jr c, StartTitleScreen
|
||||||
|
farcall CrystalIntro
|
||||||
|
|
||||||
|
; fallthrough
|
||||||
|
|
||||||
|
StartTitleScreen:
|
||||||
|
ldh a, [rSVBK]
|
||||||
|
push af
|
||||||
|
ld a, BANK(wLYOverrides)
|
||||||
|
ldh [rSVBK], a
|
||||||
|
|
||||||
|
call .TitleScreen
|
||||||
|
call DelayFrame
|
||||||
|
.loop
|
||||||
|
call RunTitleScreen
|
||||||
|
jr nc, .loop
|
||||||
|
|
||||||
|
call ClearSprites
|
||||||
|
call ClearBGPalettes
|
||||||
|
|
||||||
|
pop af
|
||||||
|
ldh [rSVBK], a
|
||||||
|
|
||||||
|
ld hl, rLCDC
|
||||||
|
res rLCDC_SPRITE_SIZE, [hl] ; 8x8
|
||||||
|
call ClearScreen
|
||||||
|
call WaitBGMap2
|
||||||
|
xor a
|
||||||
|
ldh [hLCDCPointer], a
|
||||||
|
ldh [hSCX], a
|
||||||
|
ldh [hSCY], a
|
||||||
|
ld a, $7
|
||||||
|
ldh [hWX], a
|
||||||
|
ld a, $90
|
||||||
|
ldh [hWY], a
|
||||||
|
ld b, CGB_DIPLOMA
|
||||||
|
call GetCGBLayout
|
||||||
|
call UpdateTimePals
|
||||||
|
ld a, [wTitleScreenSelectedOption]
|
||||||
|
cp NUM_TITLESCREENOPTIONS
|
||||||
|
jr c, .ok
|
||||||
|
xor a
|
||||||
|
.ok
|
||||||
|
ld e, a
|
||||||
|
ld d, 0
|
||||||
|
ld hl, .dw
|
||||||
|
add hl, de
|
||||||
|
add hl, de
|
||||||
|
ld a, [hli]
|
||||||
|
ld h, [hl]
|
||||||
|
ld l, a
|
||||||
|
jp hl
|
||||||
|
|
||||||
|
.dw
|
||||||
|
dw Intro_MainMenu
|
||||||
|
dw DeleteSaveData
|
||||||
|
dw IntroSequence
|
||||||
|
dw IntroSequence
|
||||||
|
|
||||||
|
.TitleScreen:
|
||||||
|
farcall _TitleScreen
|
||||||
|
ret
|
||||||
|
|
||||||
|
RunTitleScreen:
|
||||||
|
ld a, [wJumptableIndex]
|
||||||
|
bit 7, a
|
||||||
|
jr nz, .done_title
|
||||||
|
call TitleScreenScene
|
||||||
|
farcall SuicuneFrameIterator
|
||||||
|
call DelayFrame
|
||||||
|
and a
|
||||||
|
ret
|
||||||
|
|
||||||
|
.done_title
|
||||||
|
scf
|
||||||
|
ret
|
||||||
|
|
||||||
|
UnusedTitlePerspectiveScroll: ; unreferenced
|
||||||
|
; Similar behavior to Intro_PerspectiveScrollBG.
|
||||||
|
ldh a, [hVBlankCounter]
|
||||||
|
and $7
|
||||||
|
ret nz
|
||||||
|
ld hl, wLYOverrides + $5f
|
||||||
|
ld a, [hl]
|
||||||
|
dec a
|
||||||
|
ld bc, 2 * SCREEN_WIDTH
|
||||||
|
call ByteFill
|
||||||
|
ret
|
||||||
|
|
||||||
|
TitleScreenScene:
|
||||||
|
ld e, a
|
||||||
|
ld d, 0
|
||||||
|
ld hl, .scenes
|
||||||
|
add hl, de
|
||||||
|
add hl, de
|
||||||
|
ld a, [hli]
|
||||||
|
ld h, [hl]
|
||||||
|
ld l, a
|
||||||
|
jp hl
|
||||||
|
|
||||||
|
.scenes
|
||||||
|
dw TitleScreenEntrance
|
||||||
|
dw TitleScreenTimer
|
||||||
|
dw TitleScreenMain
|
||||||
|
dw TitleScreenEnd
|
||||||
|
|
||||||
|
TitleScreenNextScene: ; unreferenced
|
||||||
|
ld hl, wJumptableIndex
|
||||||
|
inc [hl]
|
||||||
|
ret
|
||||||
|
|
||||||
|
TitleScreenEntrance:
|
||||||
|
; Animate the logo:
|
||||||
|
; Move each line by 4 pixels until our count hits 0.
|
||||||
|
ldh a, [hSCX]
|
||||||
|
and a
|
||||||
|
jr z, .done
|
||||||
|
sub 4
|
||||||
|
ldh [hSCX], a
|
||||||
|
|
||||||
|
; Lay out a base (all lines scrolling together).
|
||||||
|
ld e, a
|
||||||
|
ld hl, wLYOverrides
|
||||||
|
ld bc, 8 * 10 ; logo height
|
||||||
|
call ByteFill
|
||||||
|
|
||||||
|
; Reversed signage for every other line's position.
|
||||||
|
; This is responsible for the interlaced effect.
|
||||||
|
ld a, e
|
||||||
|
xor $ff
|
||||||
|
inc a
|
||||||
|
|
||||||
|
ld b, 8 * 10 / 2 ; logo height / 2
|
||||||
|
ld hl, wLYOverrides + 1
|
||||||
|
.loop
|
||||||
|
ld [hli], a
|
||||||
|
inc hl
|
||||||
|
dec b
|
||||||
|
jr nz, .loop
|
||||||
|
|
||||||
|
farcall AnimateTitleCrystal
|
||||||
|
ret
|
||||||
|
|
||||||
|
.done
|
||||||
|
; Next scene
|
||||||
|
ld hl, wJumptableIndex
|
||||||
|
inc [hl]
|
||||||
|
xor a
|
||||||
|
ldh [hLCDCPointer], a
|
||||||
|
|
||||||
|
; Play the title screen music.
|
||||||
|
ld de, MUSIC_TITLE
|
||||||
|
call PlayMusic
|
||||||
|
|
||||||
|
ld a, $88
|
||||||
|
ldh [hWY], a
|
||||||
|
ret
|
||||||
|
|
||||||
|
TitleScreenTimer:
|
||||||
|
; Next scene
|
||||||
|
ld hl, wJumptableIndex
|
||||||
|
inc [hl]
|
||||||
|
|
||||||
|
; Start a timer
|
||||||
|
ld hl, wTitleScreenTimer
|
||||||
|
ld de, 73 * 60 + 36
|
||||||
|
ld [hl], e
|
||||||
|
inc hl
|
||||||
|
ld [hl], d
|
||||||
|
ret
|
||||||
|
|
||||||
|
TitleScreenMain:
|
||||||
|
; Run the timer down.
|
||||||
|
ld hl, wTitleScreenTimer
|
||||||
|
ld e, [hl]
|
||||||
|
inc hl
|
||||||
|
ld d, [hl]
|
||||||
|
ld a, e
|
||||||
|
or d
|
||||||
|
jr z, .end
|
||||||
|
|
||||||
|
dec de
|
||||||
|
ld [hl], d
|
||||||
|
dec hl
|
||||||
|
ld [hl], e
|
||||||
|
|
||||||
|
; Save data can be deleted by pressing Up + B + Select.
|
||||||
|
call GetJoypad
|
||||||
|
ld hl, hJoyDown
|
||||||
|
ld a, [hl]
|
||||||
|
and D_UP + B_BUTTON + SELECT
|
||||||
|
cp D_UP + B_BUTTON + SELECT
|
||||||
|
jr z, .delete_save_data
|
||||||
|
|
||||||
|
; Press Start or A to start the game.
|
||||||
|
ld a, [hl]
|
||||||
|
and START | A_BUTTON
|
||||||
|
jr nz, .incave
|
||||||
|
ret
|
||||||
|
|
||||||
|
.incave
|
||||||
|
ld a, TITLESCREENOPTION_MAIN_MENU
|
||||||
|
jr .done
|
||||||
|
|
||||||
|
.delete_save_data
|
||||||
|
ld a, TITLESCREENOPTION_DELETE_SAVE_DATA
|
||||||
|
|
||||||
|
.done
|
||||||
|
ld [wTitleScreenSelectedOption], a
|
||||||
|
|
||||||
|
; Return to the intro sequence.
|
||||||
|
ld hl, wJumptableIndex
|
||||||
|
set 7, [hl]
|
||||||
|
ret
|
||||||
|
|
||||||
|
.end
|
||||||
|
; Next scene
|
||||||
|
ld hl, wJumptableIndex
|
||||||
|
inc [hl]
|
||||||
|
|
||||||
|
; Fade out the title screen music
|
||||||
|
xor a ; MUSIC_NONE
|
||||||
|
ld [wMusicFadeID], a
|
||||||
|
ld [wMusicFadeID + 1], a
|
||||||
|
ld hl, wMusicFade
|
||||||
|
ld [hl], 8 ; 1 second
|
||||||
|
|
||||||
|
ld hl, wTitleScreenTimer
|
||||||
|
inc [hl]
|
||||||
|
ret
|
||||||
|
|
||||||
|
TitleScreenEnd:
|
||||||
|
; Wait until the music is done fading.
|
||||||
|
|
||||||
|
ld hl, wTitleScreenTimer
|
||||||
|
inc [hl]
|
||||||
|
|
||||||
|
ld a, [wMusicFade]
|
||||||
|
and a
|
||||||
|
ret nz
|
||||||
|
|
||||||
|
ld a, TITLESCREENOPTION_RESTART
|
||||||
|
ld [wTitleScreenSelectedOption], a
|
||||||
|
|
||||||
|
; Back to the intro.
|
||||||
|
ld hl, wJumptableIndex
|
||||||
|
set 7, [hl]
|
||||||
|
ret
|
||||||
|
|
||||||
|
Intro_MainMenu:
|
||||||
|
ld de, MUSIC_NONE
|
||||||
|
call PlayMusic
|
||||||
|
call DelayFrame
|
||||||
|
ld de, MUSIC_MAIN_MENU
|
||||||
|
call PlayMusic
|
||||||
|
call MainMenu
|
||||||
|
jp StartTitleScreen
|
||||||
|
|
||||||
|
DeleteSaveData:
|
||||||
|
farcall _DeleteSaveData
|
||||||
|
jp Init
|
||||||
|
|
||||||
|
Copyright:
|
||||||
|
call ClearTilemap
|
||||||
|
call LoadFrame
|
||||||
|
ld de, CopyrightGFX
|
||||||
|
ld hl, vTiles2 tile $60
|
||||||
|
lb bc, BANK(CopyrightGFX), 29
|
||||||
|
call Request2bpp
|
||||||
|
hlcoord 2, 7
|
||||||
|
ld de, CopyrightString
|
||||||
|
jp PlaceString
|
||||||
|
|
||||||
|
CopyrightString:
|
||||||
|
; ©1995-2001 Nintendo
|
||||||
|
db $60, $61, $62, $63, $64, $65, $66
|
||||||
|
db $67, $68, $69, $6a, $6b, $6c
|
||||||
|
|
||||||
|
; ©1995-2001 Creatures inc.
|
||||||
|
next $60, $61, $62, $63, $64, $65, $66
|
||||||
|
db $6d, $6e, $6f, $70, $71, $72, $7a, $7b, $7c
|
||||||
|
|
||||||
|
; ©1995-2001 GAME FREAK inc.
|
||||||
|
next $60, $61, $62, $63, $64, $65, $66
|
||||||
|
db $73, $74, $75, $76, $77, $78, $79, $7a, $7b, $7c
|
||||||
|
|
||||||
|
db "@"
|
||||||
|
|
||||||
|
GameInit::
|
||||||
|
farcall TryLoadSaveData
|
||||||
|
call ClearMenuAndWindowData
|
||||||
|
call ClearBGPalettes
|
||||||
|
call ClearTilemap
|
||||||
|
ld a, HIGH(vBGMap0)
|
||||||
|
ldh [hBGMapAddress + 1], a
|
||||||
|
xor a ; LOW(vBGMap0)
|
||||||
|
ldh [hBGMapAddress], a
|
||||||
|
ldh [hJoyDown], a
|
||||||
|
ldh [hSCX], a
|
||||||
|
ldh [hSCY], a
|
||||||
|
ld a, $90
|
||||||
|
ldh [hWY], a
|
||||||
|
call WaitBGMap
|
||||||
|
jp IntroSequence
|
@ -13,7 +13,9 @@ OverworldLoop::
|
|||||||
.done
|
.done
|
||||||
call DisableOverworldHUD
|
call DisableOverworldHUD
|
||||||
ld hl, wGameTimerPaused
|
ld hl, wGameTimerPaused
|
||||||
res GAME_TIMER_PAUSED_F, [hl] ; stop game timer counter
|
res GAME_TIMER_COUNTING_F, [hl] ; stop game timer counter
|
||||||
|
ld a, FALSE
|
||||||
|
ld [wText2bpp], a
|
||||||
ret
|
ret
|
||||||
|
|
||||||
.Jumptable:
|
.Jumptable:
|
||||||
|
@ -2428,14 +2428,14 @@ CheckObjectCoveredByTextbox:
|
|||||||
jr c, .object_not_in_textbox
|
jr c, .object_not_in_textbox
|
||||||
|
|
||||||
;.object_in_textbox
|
;.object_in_textbox
|
||||||
ld a, [wTextboxFlags]
|
ld a, [wText2bpp]
|
||||||
bit TEXT_2BPP_F, a
|
and a
|
||||||
jr z, .disappear
|
jr z, .disappear
|
||||||
jr .ok8
|
jr .ok8
|
||||||
|
|
||||||
.object_not_in_textbox
|
.object_not_in_textbox
|
||||||
ld a, [wTextboxFlags]
|
ld a, [wText2bpp]
|
||||||
bit TEXT_2BPP_F, a
|
and a
|
||||||
jr nz, .not_disappear
|
jr nz, .not_disappear
|
||||||
|
|
||||||
.ok8
|
.ok8
|
||||||
@ -2453,8 +2453,8 @@ CheckObjectCoveredByTextbox:
|
|||||||
; if we managed make it here without returning early, there are only two options:
|
; if we managed make it here without returning early, there are only two options:
|
||||||
; - if 1bpp text, the sprite is wholly outside of a textbox
|
; - if 1bpp text, the sprite is wholly outside of a textbox
|
||||||
; - if 2bpp text, the sprite is wholly inside a textbox
|
; - if 2bpp text, the sprite is wholly inside a textbox
|
||||||
ld a, [wTextboxFlags]
|
ld a, [wText2bpp]
|
||||||
bit TEXT_2BPP_F, a
|
and a
|
||||||
jr z, .not_disappear
|
jr z, .not_disappear
|
||||||
|
|
||||||
.disappear
|
.disappear
|
||||||
|
@ -2315,10 +2315,10 @@ Script_endall:
|
|||||||
|
|
||||||
Script_halloffame:
|
Script_halloffame:
|
||||||
ld hl, wGameTimerPaused
|
ld hl, wGameTimerPaused
|
||||||
res GAME_TIMER_PAUSED_F, [hl]
|
res GAME_TIMER_COUNTING_F, [hl]
|
||||||
farcall HallOfFame
|
farcall HallOfFame
|
||||||
ld hl, wGameTimerPaused
|
ld hl, wGameTimerPaused
|
||||||
set GAME_TIMER_PAUSED_F, [hl]
|
set GAME_TIMER_COUNTING_F, [hl]
|
||||||
jr ReturnFromCredits
|
jr ReturnFromCredits
|
||||||
|
|
||||||
Script_credits:
|
Script_credits:
|
||||||
|
@ -1,7 +1,3 @@
|
|||||||
_InitializeStartDay:
|
|
||||||
call InitializeStartDay
|
|
||||||
ret
|
|
||||||
|
|
||||||
ClearDailyTimers::
|
ClearDailyTimers::
|
||||||
xor a
|
xor a
|
||||||
ld [wLuckyNumberDayTimer], a
|
ld [wLuckyNumberDayTimer], a
|
||||||
@ -63,7 +59,8 @@ InitOneDayCountdown:
|
|||||||
InitNDaysCountdown:
|
InitNDaysCountdown:
|
||||||
ld [hl], a
|
ld [hl], a
|
||||||
inc hl ; wLuckyNumberDayTimer + 1 or wDailyResetTimer + 1 (both are dw)
|
inc hl ; wLuckyNumberDayTimer + 1 or wDailyResetTimer + 1 (both are dw)
|
||||||
call CopyDayToHL
|
ld a, [wCurDay]
|
||||||
|
ld [hl], a
|
||||||
ret
|
ret
|
||||||
|
|
||||||
CheckDayDependentEventHL:
|
CheckDayDependentEventHL:
|
||||||
@ -147,13 +144,8 @@ CheckBugContestTimer::
|
|||||||
scf
|
scf
|
||||||
ret
|
ret
|
||||||
|
|
||||||
InitializeStartDay:
|
|
||||||
ld hl, wTimerEventStartDay
|
|
||||||
call CopyDayToHL
|
|
||||||
ret
|
|
||||||
|
|
||||||
CheckPokerusTick::
|
CheckPokerusTick::
|
||||||
ld hl, wTimerEventStartDay
|
ld hl, .Day0
|
||||||
call CalcDaysSince
|
call CalcDaysSince
|
||||||
call GetDaysSince
|
call GetDaysSince
|
||||||
and a
|
and a
|
||||||
@ -164,6 +156,9 @@ CheckPokerusTick::
|
|||||||
xor a
|
xor a
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
.Day0:
|
||||||
|
db 0
|
||||||
|
|
||||||
RestartLuckyNumberCountdown:
|
RestartLuckyNumberCountdown:
|
||||||
call .GetDaysUntilNextFriday
|
call .GetDaysUntilNextFriday
|
||||||
ld hl, wLuckyNumberDayTimer
|
ld hl, wLuckyNumberDayTimer
|
||||||
@ -304,11 +299,6 @@ CopyHourMinSecToHL:
|
|||||||
ld [hli], a
|
ld [hli], a
|
||||||
ret
|
ret
|
||||||
|
|
||||||
CopyDayToHL:
|
|
||||||
ld a, [wCurDay]
|
|
||||||
ld [hl], a
|
|
||||||
ret
|
|
||||||
|
|
||||||
CopyHourMinToHL:
|
CopyHourMinToHL:
|
||||||
ld a, [wGameTimeHours + 1]
|
ld a, [wGameTimeHours + 1]
|
||||||
ld [hli], a
|
ld [hli], a
|
||||||
|
@ -33,7 +33,7 @@ GameTimer::
|
|||||||
|
|
||||||
; Is the timer paused?
|
; Is the timer paused?
|
||||||
ld hl, wGameTimerPaused
|
ld hl, wGameTimerPaused
|
||||||
bit GAME_TIMER_PAUSED_F, [hl]
|
bit GAME_TIMER_COUNTING_F, [hl]
|
||||||
ret z
|
ret z
|
||||||
|
|
||||||
; Is the timer already capped?
|
; Is the timer already capped?
|
||||||
|
@ -120,7 +120,7 @@ endr
|
|||||||
|
|
||||||
ConstructAndEnableOverworldHUD::
|
ConstructAndEnableOverworldHUD::
|
||||||
; map setup command used by MAPSETUP_ENTERLEVEL and MAPSETUP_CONTINUE
|
; map setup command used by MAPSETUP_ENTERLEVEL and MAPSETUP_CONTINUE
|
||||||
ld hl, wTextboxFlags
|
ld a, TRUE
|
||||||
set TEXT_2BPP_F, [hl]
|
ld [wText2bpp], a
|
||||||
call ConstructOverworldHUDTilemap
|
call ConstructOverworldHUDTilemap
|
||||||
jp EnableOverworldHUD
|
jp EnableOverworldHUD
|
||||||
|
@ -1934,8 +1934,8 @@ ReloadTilesetAndPalettes::
|
|||||||
call DisableLCD
|
call DisableLCD
|
||||||
call ClearSprites
|
call ClearSprites
|
||||||
farcall RefreshSprites
|
farcall RefreshSprites
|
||||||
ld a, [wTextboxFlags]
|
ld a, [wText2bpp]
|
||||||
bit TEXT_2BPP_F, a
|
and a
|
||||||
jr nz, .2bpp
|
jr nz, .2bpp
|
||||||
call LoadStandardFont
|
call LoadStandardFont
|
||||||
call LoadFrame
|
call LoadFrame
|
||||||
|
@ -209,8 +209,8 @@ MenuBox::
|
|||||||
call GetMenuBoxDims
|
call GetMenuBoxDims
|
||||||
dec b
|
dec b
|
||||||
dec c
|
dec c
|
||||||
ld a, [wTextboxFlags]
|
ld a, [wText2bpp]
|
||||||
bit TEXT_2BPP_F, a
|
and a
|
||||||
jp z, Textbox1bpp
|
jp z, Textbox1bpp
|
||||||
ld d, h
|
ld d, h
|
||||||
ld e, l
|
ld e, l
|
||||||
|
@ -167,8 +167,8 @@ Textbox2bpp::
|
|||||||
|
|
||||||
SpeechTextbox:
|
SpeechTextbox:
|
||||||
; Standard 1bpp or 2bpp textbox according to wTextboxFlags[TEXT_2BPP_F]
|
; Standard 1bpp or 2bpp textbox according to wTextboxFlags[TEXT_2BPP_F]
|
||||||
ld a, [wTextboxFlags]
|
ld a, [wText2bpp]
|
||||||
bit TEXT_2BPP_F, a
|
and a
|
||||||
jr z, SpeechTextbox1bpp
|
jr z, SpeechTextbox1bpp
|
||||||
jr SpeechTextbox2bpp
|
jr SpeechTextbox2bpp
|
||||||
|
|
||||||
|
@ -46,8 +46,8 @@ OpenText2bpp::
|
|||||||
ld a, BANK(ReanchorBGMap_NoOAMUpdate)
|
ld a, BANK(ReanchorBGMap_NoOAMUpdate)
|
||||||
rst Bankswitch
|
rst Bankswitch
|
||||||
|
|
||||||
ld hl, wTextboxFlags
|
ld a, TRUE
|
||||||
set TEXT_2BPP_F, [hl]
|
ld [wText2bpp], a
|
||||||
|
|
||||||
; assumes that the overworld 2bpp font and frame are loaded when calling this
|
; assumes that the overworld 2bpp font and frame are loaded when calling this
|
||||||
call ReanchorBGMap_NoOAMUpdate ; anchor bgmap
|
call ReanchorBGMap_NoOAMUpdate ; anchor bgmap
|
||||||
@ -68,8 +68,8 @@ OpenText1bpp::
|
|||||||
rst Bankswitch
|
rst Bankswitch
|
||||||
|
|
||||||
; note: 1bpp text is NOT compatible with the overworld HUD enabled because it uses 2bpp font tiles.
|
; note: 1bpp text is NOT compatible with the overworld HUD enabled because it uses 2bpp font tiles.
|
||||||
ld hl, wTextboxFlags
|
ld a, FALSE
|
||||||
res TEXT_2BPP_F, [hl]
|
ld [wText2bpp], a
|
||||||
|
|
||||||
call ReanchorBGMap_NoOAMUpdate ; anchor bgmap
|
call ReanchorBGMap_NoOAMUpdate ; anchor bgmap
|
||||||
call SpeechTextbox1bpp
|
call SpeechTextbox1bpp
|
||||||
|
6
main.asm
6
main.asm
@ -1,9 +1,12 @@
|
|||||||
SECTION "bank1", ROMX
|
SECTION "bank1", ROMX
|
||||||
|
|
||||||
|
INCLUDE "engine/menus/titlescreen.asm"
|
||||||
|
INCLUDE "engine/menus/main_menu.asm"
|
||||||
|
INCLUDE "engine/menus/intro_menu.asm"
|
||||||
|
INCLUDE "engine/menus/game_menu.asm"
|
||||||
INCLUDE "engine/link/place_waiting_text.asm"
|
INCLUDE "engine/link/place_waiting_text.asm"
|
||||||
INCLUDE "engine/gfx/load_push_oam.asm"
|
INCLUDE "engine/gfx/load_push_oam.asm"
|
||||||
INCLUDE "engine/overworld/map_objects.asm"
|
INCLUDE "engine/overworld/map_objects.asm"
|
||||||
INCLUDE "engine/menus/intro_menu.asm"
|
|
||||||
INCLUDE "engine/overworld/init_map.asm"
|
INCLUDE "engine/overworld/init_map.asm"
|
||||||
INCLUDE "engine/pokemon/learn.asm"
|
INCLUDE "engine/pokemon/learn.asm"
|
||||||
INCLUDE "engine/pokemon/correct_nick_errors.asm"
|
INCLUDE "engine/pokemon/correct_nick_errors.asm"
|
||||||
@ -176,7 +179,6 @@ INCLUDE "engine/items/pack_kris.asm"
|
|||||||
INCLUDE "engine/events/move_tutor.asm"
|
INCLUDE "engine/events/move_tutor.asm"
|
||||||
INCLUDE "engine/gfx/crystal_layouts.asm"
|
INCLUDE "engine/gfx/crystal_layouts.asm"
|
||||||
INCLUDE "engine/events/celebi.asm"
|
INCLUDE "engine/events/celebi.asm"
|
||||||
INCLUDE "engine/menus/main_menu.asm"
|
|
||||||
INCLUDE "engine/pokemon/search_owned.asm"
|
INCLUDE "engine/pokemon/search_owned.asm"
|
||||||
INCLUDE "engine/events/buena_menu.asm"
|
INCLUDE "engine/events/buena_menu.asm"
|
||||||
|
|
||||||
|
27
ram/wram.asm
27
ram/wram.asm
@ -1231,6 +1231,19 @@ wOBP1:: db
|
|||||||
|
|
||||||
wNumHits:: db
|
wNumHits:: db
|
||||||
|
|
||||||
|
; Time buffer, for counting the amount of time since
|
||||||
|
; an event began.
|
||||||
|
wSecondsSince:: db
|
||||||
|
wMinutesSince:: db
|
||||||
|
wHoursSince:: db
|
||||||
|
wDaysSince:: db
|
||||||
|
|
||||||
|
wText2bpp:: db
|
||||||
|
|
||||||
|
wWhichHUD::
|
||||||
|
; index to LoadHUD
|
||||||
|
db
|
||||||
|
|
||||||
wOptions::
|
wOptions::
|
||||||
; bit 0-2: number of frames to delay when printing text
|
; bit 0-2: number of frames to delay when printing text
|
||||||
; fast 1; mid 3; slow 5
|
; fast 1; mid 3; slow 5
|
||||||
@ -1262,17 +1275,6 @@ wOptions2::
|
|||||||
db
|
db
|
||||||
wOptionsEnd::
|
wOptionsEnd::
|
||||||
|
|
||||||
; Time buffer, for counting the amount of time since
|
|
||||||
; an event began.
|
|
||||||
wSecondsSince:: db
|
|
||||||
wMinutesSince:: db
|
|
||||||
wHoursSince:: db
|
|
||||||
wDaysSince:: db
|
|
||||||
|
|
||||||
wWhichHUD::
|
|
||||||
; index to LoadHUD
|
|
||||||
db
|
|
||||||
|
|
||||||
|
|
||||||
SECTION "WRAM 1", WRAMX
|
SECTION "WRAM 1", WRAMX
|
||||||
|
|
||||||
@ -2257,7 +2259,6 @@ wPlayerGender::
|
|||||||
|
|
||||||
wSavedAtLeastOnce:: db
|
wSavedAtLeastOnce:: db
|
||||||
wSaveFileInOverworld:: db
|
wSaveFileInOverworld:: db
|
||||||
wSpawnAfterChampion:: db
|
|
||||||
|
|
||||||
; init time set at newgame
|
; init time set at newgame
|
||||||
wStartDay:: db
|
wStartDay:: db
|
||||||
@ -2438,8 +2439,6 @@ wDailyFlags1:: db
|
|||||||
wDailyFlags2:: db
|
wDailyFlags2:: db
|
||||||
wSwarmFlags:: db
|
wSwarmFlags:: db
|
||||||
|
|
||||||
wTimerEventStartDay:: db
|
|
||||||
|
|
||||||
wFruitTreeFlags:: flag_array NUM_FRUIT_TREES
|
wFruitTreeFlags:: flag_array NUM_FRUIT_TREES
|
||||||
|
|
||||||
wLuckyNumberDayTimer:: dw
|
wLuckyNumberDayTimer:: dw
|
||||||
|
Loading…
Reference in New Issue
Block a user