summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile2
-rw-r--r--engine/title.asm631
-rw-r--r--gfx.asm25
-rw-r--r--gfx/title/title.pngbin0 -> 265 bytes
-rw-r--r--gfx/title/title_gold_version.pngbin0 -> 276 bytes
-rw-r--r--gfx/title/title_goldlogo.pngbin0 -> 225 bytes
-rw-r--r--gfx/title/title_hooh.pngbin0 -> 488 bytes
-rw-r--r--gfx/title/title_logo.pngbin0 -> 618 bytes
-rw-r--r--gfx/title/title_silver_version.pngbin0 -> 282 bytes
-rw-r--r--gfx/title/title_silverlogo.pngbin0 -> 243 bytes
-rw-r--r--gfx/title/titlebgdecoration.pngbin0 -> 145 bytes
-rw-r--r--home/init.asm2
-rw-r--r--wram.asm7
13 files changed, 650 insertions, 17 deletions
diff --git a/Makefile b/Makefile
index 31d49f2..4d04083 100644
--- a/Makefile
+++ b/Makefile
@@ -94,8 +94,6 @@ $(BUILD)/%.o: %.asm | $$(dir $$@)
$(BUILD)/gfx/sgb/sgb_border_alt.2bpp: tools/gfx += --trim-whitespace
$(BUILD)/gfx/sgb/sgb_border_gold.2bpp: tools/gfx += --trim-whitespace
$(BUILD)/gfx/sgb/sgb_border_silver.2bpp: tools/gfx += --trim-whitespace
-$(BUILD)/gfx/title/title_gold.2bpp: tools/gfx += --trim-whitespace
-$(BUILD)/gfx/title/title_silver.2bpp: tools/gfx += --trim-whitespace
$(BUILD)/gfx/trainer_card/leaders.2bpp: tools/gfx += --trim-whitespace
$(BUILD)/gfx/trainer_card/trainer_card.2bpp: tools/gfx += --trim-whitespace
$(BUILD)/gfx/pokegear/town_map.2bpp: tools/gfx += --trim-trailing
diff --git a/engine/title.asm b/engine/title.asm
index 961b83b..432c9c1 100644
--- a/engine/title.asm
+++ b/engine/title.asm
@@ -1,18 +1,643 @@
INCLUDE "constants.asm"
+INCLUDE "vram.asm"
SECTION "Title screen", ROMX[$5D8C], BANK[$01]
-IntroSequence:: ; 5d8c
- ; TODO
+IntroSequence::
+ callab GameFreakIntro ; Bank $39
+ jr c, TitleSequenceStart
+ ld a, [wTitleSequenceOpeningType]
+ and a
+ jr z, .opening_sequence
+
+.pikachu_minigame
+ callab PikachuMiniGame ; Bank $38
+ jr TitleSequenceStart
+.opening_sequence
+ callab OpeningCutscene ; Bank $39
+
+TitleSequenceStart::
+ call TitleSequenceInit
+ callab SetTitleBGDecorationBorder ; Bank $02
+
+.loop
+ call TitleScreenMain
+ jr nc, .loop
+
+ call ClearPalettesAndWait
+ call ClearSprites
+ ld a, $01
+ ldh [hBGMapMode], a
+ call ClearTileMap
+ call ResetPalette
+
+ ld a, [wJumptableIndex + 1]
+ ld e, a
+ ld d, 0
+ ld hl, TitleScreenJumpTable
+ add hl, de
+ add hl, de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+
+ jp hl
+
+TitleScreenJumpTable::
+ dw MainMenu
+ dw DebugMenu
+ dw SRAMClearMenu
+ dw IntroSequence
+
+TitleSequenceInit::
+ call ClearPalettes
+
+ xor a
+ ldh [hMapAnims], a
+ ldh [hSCY], a
+ ldh [hSCX], a
+
+ ld de, MUSIC_NONE ; Stop the music.
+ call PlayMusic
+
+ call ClearTileMap
+ call DisableLCD
+ call ClearSprites
+
+ callba InitEffectObject ; Bank $23
+ ld hl, vChars0
+ ld bc, vBGMap0 - vChars0
+
+.clear_loop
+ ld [hl], $00
+ inc hl
+ dec bc
+ ld a, b
+ or c
+ jr nz, .clear_loop
+
+ ld hl, TitleScreenGFX
+ ld de, vChars2 + 65 tiles
+ ld bc, 13 tiles
+ ld a, BANK(TitleScreenGFX)
+ call FarCopyData
+
+ ld hl, TitleScreenVersionGFX
+ ld de, vChars2 + 96 tiles
+ ld bc, 24 tiles
+ ld a, BANK(TitleScreenVersionGFX)
+ call FarCopyData
+
+ ld hl, TitleScreenHoOhGFX
+ ld de, vChars2
+ ld bc, 49 tiles
+ ld a, BANK(TitleScreenHoOhGFX)
+ call FarCopyData
+
+ ld hl, TitleScreenLogoGFX
+ ld de, vChars1
+ ld bc, 58 tiles
+ ld a, BANK(TitleScreenLogoGFX)
+ call FarCopyData
+
+ ld hl, TitleScreenGoldLogoGFX
+ ld de, vChars0 + 186 tiles
+ ld bc, 20 tiles
+ ld a, BANK(TitleScreenGoldLogoGFX)
+ call FarCopyData
+
+ call SetTitleGfx
+ ld hl, wTileMapBackup
+ ld a, $24
+ ld [hli], a
+ ld a, $00
+ ld [hli], a
+
+ ld hl, vBGMap0
+ ld bc, 128 tiles
+ ld a, " "
+ call ByteFill
+
+ ld b, $06
+ call GetSGBLayout
+ call EnableLCD
+ ld a, $01
+ ldh [hBGMapMode], a
+ call WaitBGMap
+ xor a
+ ldh [hBGMapMode], a
+ ld hl, wJumptableIndex
+ ld [hli], a ; (Possibly wJumptableIndex from Crystal)
+ ld [hli], a ; (Possibly wIntroSceneFrameCounter from Crystal)
+ ld [hli], a ; (Possibly wTitleScreenTimer from Crystal)
+ ld [hl], a ; (Possibly wTitleScreenTimer + 1 from Crystal)
+
+ call .load_position_table
+
+
+ ld a, %00011010
+ ldh [rBGP], a
+ ld a, %11100100
+ ldh [rOBP0], a
+ ret
+
+.load_position_table:
+ ld hl, FirePositionTable
+ ld c, 6 ; Load 6 flying objects on the screen.
+
+.set_fire_note_loop
+ push bc
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ inc hl
+ push hl
+ ld a, $2E ; Title fire/note object effect type?
+ call InitSpriteAnimStruct
+ pop hl
+ pop bc
+ dec c
+ jr nz, .set_fire_note_loop
+ ret
+
+FirePositionTable::
+ dw $4CE0
+ dw $58A0
+ dw $6490
+ dw $70D0
+ dw $7CB0
+ dw $8800
+
+TitleFireGFX:: INCBIN "gfx/title/fire.2bpp" ; 5EB8-5F37
+TitleNotesGFX:: INCBIN "gfx/title/notes.2bpp" ; 5F38=5FB7
+
+TitleScreenMain::
+ ld a, [wJumptableIndex]
+ bit 7, a
+ jr nz, .exit
+ call TitleScreenSequence
+ callba EffectObjectJumpNoDelay ; Bank $23
+ call DelayFrame
+ and a
+ ret
+
+.exit
+ scf
+ ret
+
+TitleScreenSequence::
+ ld e, a
+ ld d, 0
+ ld hl, TitleScreenSequenceTable
+ add hl, de
+ add hl, de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ jp hl
+
+TitleScreenSequenceTable::
+ dw TitleSeq_Start
+ dw TitleSeq_LoadPokemonLogo
+ dw TitleSeq_IncreaseJumpTableIndex
+ dw TitleSeq_IncreaseJumpTableIndex
+ dw TitleSeq_MoveTitle
+ dw TitleSeq_MoveTitleEnd
+ dw TitleSeq_InitFlashTitle
+ dw TitleSeq_FlashTitle
+
+ dw TitleSeq_PMJapaneseChara
+ dw TitleSeq_IncreaseJumpTableIndex
+ dw TitleSeq_IncreaseJumpTableIndex
+ dw TitleSeq_IncreaseJumpTableIndex
+ dw TitleSeq_WaitForNextSequence
+ dw TitleSeq_PMSubtitle
+ dw TitleSeq_IncreaseJumpTableIndex
+ dw TitleSeq_IncreaseJumpTableIndex
+
+ dw TitleSeq_IncreaseJumpTableIndex
+ dw TitleSeq_WaitForNextSequence
+ dw TitleSeq_Version
+ dw TitleSeq_IncreaseJumpTableIndex
+ dw TitleSeq_IncreaseJumpTableIndex
+ dw TitleSeq_IncreaseJumpTableIndex
+ dw TitleSeq_WaitForNextSequence
+ dw TitleSeq_CopyRight
+
+ dw TitleSeq_IncreaseJumpTableIndex
+ dw TitleSeq_IncreaseJumpTableIndex
+ dw TitleSeq_IncreaseJumpTableIndex
+ dw TitleSeq_WaitForNextSequence
+ dw TitleSeq_HoOh
+ dw TitleSeq_IncreaseJumpTableIndex
+ dw TitleSeq_IncreaseJumpTableIndex
+ dw TitleSeq_IncreaseJumpTableIndex
+
+ dw TitleSeq_WaitForNextSequence
+ dw TitleSeq_PressButtonInit
+ dw TitleSeq_TitleScreenInputAndTimeout
+ dw TitleSeq_FadeMusicOut
+
+TitleSeq_IncreaseJumpTableIndex::
+ ld hl, wJumptableIndex
+ inc [hl]
+ ret
+
+TitleSeq_WaitForNextSequence::
+ xor a
+ ldh [hBGMapMode], a
+ ld hl, wJumptableIndex + 2
+ ld a, [hl]
+ and a
+ jr z, .next_seq
+ dec [hl]
+ ret
+
+.next_seq
+ call TitleSeq_IncreaseJumpTableIndex
+ ret
+
+TitleSeq_LoadPokemonLogo::
+ call PrintPokemonLogo
+ call TitleSeq_IncreaseJumpTableIndex
+ ld a, $01
+ ldh [hBGMapMode], a
+ ret
+
+TitleSeq_Start::
+ call TitleSeq_IncreaseJumpTableIndex
+ push de
+ ld de, $002D
+ call PlaySFX ; Play "Swish" sound
+ pop de
+ ld a, $80
+ ld [wJumptableIndex + 2], a
+ call SetLYOverrides
+ ld a, $43
+ ldh [hLCDCPointer], a
+ ret
+
+TitleSeq_MoveTitle::
+ xor a
+ ldh [hBGMapMode], a
+ ld hl, wJumptableIndex + 2
+ ld a, [hl]
+ and a
+ jr z, .nextseq
+ add $04
+ ld [hl], a
+ ld e, a
+.wait
+ ldh a, [rLY]
+ cp $40
+ jr c, .wait
+ ld a, e
+ call SetLYOverrides
+ ret
+
+.nextseq
+ call TitleSeq_IncreaseJumpTableIndex
+ ret
+
+TitleSeq_MoveTitleEnd::
+ xor a
+ ldh [hLCDCPointer], a
+ call TitleSeq_IncreaseJumpTableIndex
+ ld de, MUSIC_TITLE
+ call PlayMusic ; Play "Title Theme"
+ ret
+
+TitleSeq_InitFlashTitle::
+ call TitleSeq_IncreaseJumpTableIndex
+ ld a, %00011010
+ ld [wJumptableIndex + 2], a
+ ld a, 6
+ ld [wJumptableIndex + 3], a
+ ret
+
+TitleSeq_FlashTitle::
+ ld hl, wJumptableIndex + 3
+ ld a, [hl]
+ and a
+ jr z, .exit
+ dec [hl]
+ ld a, [wJumptableIndex + 2]
+ xor %00011010
+ ld [wJumptableIndex +2 ], a
+ ldh [rBGP], a
+ call DelayFrame
+ call DelayFrame
+ ret
+
+.exit
+ call TitleSeq_IncreaseJumpTableIndex
+ ld a, %11100100
+ ldh [rBGP], a
+ ret
+
+TitleSeq_PMJapaneseChara::
+ call PrintPMJapaneseChara
+ ld a, $10
+ ld [wJumptableIndex + 2], a
+ call TitleSeq_IncreaseJumpTableIndex
+ ld a, $01
+ ldh [hBGMapMode], a
+ ret
+
+TitleSeq_PMSubtitle::
+ call PrintPMSubtitle
+ ld a, $10
+ ld [wJumptableIndex + 2], a
+ call TitleSeq_IncreaseJumpTableIndex
+ ld a, $01
+ ldh [hBGMapMode], a
+ ret
+
+TitleSeq_Version::
+ call PrintVersion
+ ld a, $10
+ ld [wJumptableIndex + 2], a
+ call TitleSeq_IncreaseJumpTableIndex
+ ld a, $01
+ ldh [hBGMapMode], a
+ ret
+
+TitleSeq_CopyRight::
+ call PrintCopyRight
+ ld a, $10
+ ld [wJumptableIndex + 2], a
+ call TitleSeq_IncreaseJumpTableIndex
+ ld a, $01
+ ldh [hBGMapMode], a
+ ret
+
+TitleSeq_HoOh::
+ call Set_HoOh
+ ld a, $10
+ ld [wJumptableIndex + 2], a
+ call TitleSeq_IncreaseJumpTableIndex
+ ld a, $01
+ ldh [hBGMapMode], a
+ ret
+
+TitleSeq_PressButtonInit::
+ ld hl, wJumptableIndex
+ inc [hl]
+ ld hl, wJumptableIndex + 2
+ ld de, DecodeNybble0Table - 3 ; DecodeNybble0Table - 3 = $0C00
+ ld [hl], e
+ inc hl
+ ld [hl], d
+ ret
+
+TitleSeq_TitleScreenInputAndTimeout::
+ ld hl, wJumptableIndex + 2
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ ld a, e
+ or d
+ jr z, .psbtn_reset
+ dec de
+ ld [hl], d
+ dec hl
+ ld [hl], e
+ call GetJoypad
+ ld hl, hJoyState
+ ld a, [hl]
+ and D_UP | B_BUTTON | SELECT ; UP + B + SELECT brings you to the SRAM clear screen.
+ cp D_UP | B_BUTTON | SELECT
+ jr z, .psbtn_sramclear
+ ld a, [hl]
+ and SELECT ; SELECT will bring you to the debug menu.
+ jr nz, .psbtn_gotodebug
+ ld a, [hl]
+ and $09
+ ret z
+
+.psbtn_play
+ ld a, $00 ; MainMenu
+ jr .psbtn_nextseq
+
+.psbtn_gotodebug
+if DEBUG
+ ld a, $01 ; DebugMenu
+ jr .psbtn_nextseq
+else
+ ret
+endc
+
+.psbtn_sramclear
+ ld a, $02
+
+.psbtn_nextseq
+ ld [wJumptableIndex + 1], a
+ ld hl, wJumptableIndex
+ set 7, [hl]
+ ret
+
+.psbtn_reset
+ ld hl, wJumptableIndex
+ inc [hl]
+ xor a
+ ld [wMusicFadeID], a
+ ld [wMusicFadeID + 1], a
+ ld hl, wMusicFade
+ ld [hl], 8
+ ret
+
+TitleSeq_FadeMusicOut::
+ ld a, [wMusicFade]
+ and a
+ ret nz
+ ld a, 3
+ ld [wJumptableIndex + 1], a
+ ld hl, wJumptableIndex
+ set 7, [hl]
+ ret
+
+SetLYOverrides::
+ ld hl, wLYOverrides
+ ld c, $30
+.setly_loop
+ ld [hli], a
+ dec c
+ jr nz, .setly_loop
+ ret
+
+PrintPMSubtitle::
+ coord hl, 2, 6
+ ld b, 15
+ ld a, $69
+ jr LoadPrintArea
+
+PrintVersion::
+ coord hl, 4, 1
+ ld b, $09
+ ld a, $60
+
+LoadPrintArea::
+ ld [hli], a
+ inc a
+ dec b
+ jr nz, LoadPrintArea
+ ret
+
+PrintPMJapaneseChara::
+ coord hl, 15, 2
+ ld a, "こ"
+ lb bc, 4, 4
+ jr PrintBoxArea
+
+PrintPokemonLogo::
+ coord hl, 15, 3
+ ld [hl], $B8
+ coord hl, 15, 4
+ ld [hl], $B9
+ coord hl, 1, 2
+ ld a, $80
+ ld bc, $0E04
+
+PrintBoxArea::
+ ld de, SCREEN_WIDTH
+ push bc
+ push hl
+
+.xloop
+ ld [hli], a
+ inc a
+ dec b
+ jr nz, .xloop
+ pop hl
+ add hl, de
+ pop bc
+ dec c
+ jr nz, PrintBoxArea
+ ret
+
+PrintCopyRight::
+ coord hl, 3, 17
+ ld a, $41
+ ld b, $0D
+
+.loop
+ ld [hli], a
+ inc a
+ dec b
+ jr nz, .loop
+ ret
+
+SRAMClearMenu::
+ call ClearTileMap
+ call GetMemSGBLayout
+ call LoadFont
+ call LoadFontExtra
+ ld hl, SRAMClear_Message
+ call PrintText
+ ld hl, SRAMClear_WinPOS
+ call CopyMenuHeader
+ call VerticalMenu
+ jp c, Init
+ ld a, [wMenuCursorY]
+ cp $01
+ jp z, Init
+
+ callab InitAllSRAMBanks ; Bank $05
+ jp Init
+
+SRAMClear_Message::
+ db "<NULL>すべての セーブデータエりアを"
+ db "<LINE>クりア しますか?<DONE>"
+
+SRAMClear_WinPOS::
+ db 0
+ db 7,14,11,19
+ dw SRAMClear_TextChoice ; menu data
+ db 1 ; default option
+
+SRAMClear_TextChoice::
+ db %11000000
+ db 2
+ db "いいえ@"
+ db "はい@"
+
+IntroCopyRightInfo::
+ call ClearTileMap
+ call LoadFontExtra
+ ld de, TitleScreenGFX
+ ld hl, $9600
+ lb bc, BANK(TitleScreenGFX), $19
+ call Request2bpp
+
+ coord hl, 5, 7
+ ld de, IntroCopyRightInfo_Text
+ jp PlaceString
+
+IntroCopyRightInfo_Text::
+ db $60, $61, $62, $63, $6D, $6E, $6F, $70, $71, $72, $4E ; "(C)1997 Nintendo\n"
+ db $60, $61, $62, $63, $73, $74, $75, $76, $77, $78, $6B, $6C, $4E ; "(C)1997 Creatures Inc.\n"
+ db $60, $61, $62, $63, $64, $65, $66, $67, $68, $69, $6A, $6B, $6C, $50 ; "(C)1997 GAME FREAK Inc.{EOL}"
+
+Set_HoOh::
+ coord hl, 7, 9
+ ld de, $000D
+ ld a, $00
+ ld b, $07
+.loop
+ ld c, $07
+.loop2
+ ld [hli], a
+ inc a
+ dec c
+ jr nz, .loop2
+ add hl, de
+ dec b
+ jr nz, .loop
+ ret
+
+; Unused code, looks like it sets the font type for the logo?
+SetTitleFont::
+ ld de, vChars1
+ ld hl, TitleScreenLogoGFX
+ ld bc, 130 tiles
+ ld a, $04
+ jp FarCopyDataDouble
+
+; Sets the type of art that will be displayed on the title screen
+; depending on wTitleSequenceOpeningType.
+SetTitleGfx::
+ ld hl, wTitleSequenceOpeningType
+ ld a, [hl]
+ xor $01
+ ld [hl], a
+ jr nz, .flame
+
+.note
+ ld hl, TitleNotesGFX
+ jr SetTitleGfxNext
+
+.flame
+ ld hl, TitleFireGFX
+SetTitleGfxNext::
+ ld de, vChars0
+ ld c, $80
+.loop
+ ld a, [hli]
+ ld [de], a
+ inc de
+ dec c
+ jr nz, .loop
+ ret
if DEBUG
SECTION "Title screen TEMPORARY", ROMX[$62A5],BANK[1] ; TODO: merge this with the main section above
else
SECTION "Title screen TEMPORARY", ROMX[$62A2],BANK[1] ; TODO: merge this with the main section above
endc
+
-GameInit:: ; 62a5
+GameInit::
call ClearWindowData
ld a, $23
ld [wce5f], a
diff --git a/gfx.asm b/gfx.asm
index fdd576b..33c37b9 100644
--- a/gfx.asm
+++ b/gfx.asm
@@ -1,11 +1,5 @@
INCLUDE "constants.asm"
-SECTION "Title Screen Sprites", ROMX[$5EB8], BANK[$01]
-TitleFireGFX::
-INCBIN "gfx/title/fire.2bpp"
-TitleNotesGFX::
-INCBIN "gfx/title/notes.2bpp"
-
SECTION "Mon Nest Icon", ROMX[$4A0F], BANK[$02]
PokedexNestIconGFX::
INCBIN "gfx/pokegear/dexmap_nest_icon.1bpp"
@@ -25,6 +19,10 @@ SECTION "Pokegear GFX", ROMX[$4F32], BANK[$02]
PokegearGFX::
INCBIN "gfx/pokegear/pokegear.2bpp"
+SECTION "Title Screen BG Decoration Border", ROMX[$51FB], BANK[$02]
+TitleBGDecorationBorder::
+INCBIN "gfx/title/titlebgdecoration.2bpp"
+
SECTION "Super Palettes", ROMX[$5B4C], BANK[$02]
INCLUDE "data/pokemon/palettes.inc"
INCLUDE "data/super_palettes.inc"
@@ -42,11 +40,18 @@ INCBIN "gfx/sgb/sgb_border_silver.2bpp"
endc
SECTION "Title Screen GFX", ROMX[$47CF], BANK[$04]
-TitleScreenGFX::
if def(GOLD)
-INCBIN "gfx/title/title_gold.2bpp"
+TitleScreenGFX:: INCBIN "gfx/title/title.2bpp"
+TitleScreenVersionGFX:: INCBIN "gfx/title/title_gold_version.2bpp"
+TitleScreenHoOhGFX:: INCBIN "gfx/title/title_hooh.2bpp"
+TitleScreenLogoGFX:: INCBIN "gfx/title/title_logo.2bpp"
+TitleScreenGoldLogoGFX:: INCBIN "gfx/title/title_goldlogo.2bpp"
else
-INCBIN "gfx/title/title_silver.2bpp"
+TitleScreenGFX:: INCBIN "gfx/title/title.2bpp"
+TitleScreenVersionGFX:: INCBIN "gfx/title/title_silver_version.2bpp"
+TitleScreenHoOhGFX:: INCBIN "gfx/title/title_hooh.2bpp"
+TitleScreenLogoGFX:: INCBIN "gfx/title/title_logo.2bpp"
+TitleScreenGoldLogoGFX:: INCBIN "gfx/title/title_silverlogo.2bpp"
endc
SECTION "Mail Icon GFX", ROMX[$5BB1], BANK[$04]
@@ -58,7 +63,7 @@ TrainerCardGFX:: INCBIN "gfx/trainer_card/trainer_card.2bpp"
TrainerCardColonGFX:: INCBIN "gfx/trainer_card/colon.2bpp" ; 0x013381--0x013391
TrainerCardIDNoGFX:: INCBIN "gfx/trainer_card/id_no.2bpp" ; 0x013391--0x0133B1
TrainerCardIDNoGFXEnd::
-TrainerCardLeadersGFX:: INCBIN "gfx/trainer_card/leaders.2bpp" ; 0x0133B1--0x013BA1
+TrainerCardLeadersGFX:: INCBIN "gfx/trainer_card/leaders.2bpp" ; 0x0133B1--0x133BA1
if DEBUG || def(GOLD)
db $18, $00 ; leftover of previous graphics
else
diff --git a/gfx/title/title.png b/gfx/title/title.png
new file mode 100644
index 0000000..58a8274
--- /dev/null
+++ b/gfx/title/title.png
Binary files differ
diff --git a/gfx/title/title_gold_version.png b/gfx/title/title_gold_version.png
new file mode 100644
index 0000000..e55f741
--- /dev/null
+++ b/gfx/title/title_gold_version.png
Binary files differ
diff --git a/gfx/title/title_goldlogo.png b/gfx/title/title_goldlogo.png
new file mode 100644
index 0000000..cb6b12d
--- /dev/null
+++ b/gfx/title/title_goldlogo.png
Binary files differ
diff --git a/gfx/title/title_hooh.png b/gfx/title/title_hooh.png
new file mode 100644
index 0000000..c24e79b
--- /dev/null
+++ b/gfx/title/title_hooh.png
Binary files differ
diff --git a/gfx/title/title_logo.png b/gfx/title/title_logo.png
new file mode 100644
index 0000000..79a7184
--- /dev/null
+++ b/gfx/title/title_logo.png
Binary files differ
diff --git a/gfx/title/title_silver_version.png b/gfx/title/title_silver_version.png
new file mode 100644
index 0000000..2d6d8d0
--- /dev/null
+++ b/gfx/title/title_silver_version.png
Binary files differ
diff --git a/gfx/title/title_silverlogo.png b/gfx/title/title_silverlogo.png
new file mode 100644
index 0000000..ffeda09
--- /dev/null
+++ b/gfx/title/title_silverlogo.png
Binary files differ
diff --git a/gfx/title/titlebgdecoration.png b/gfx/title/titlebgdecoration.png
new file mode 100644
index 0000000..c57bdd4
--- /dev/null
+++ b/gfx/title/titlebgdecoration.png
Binary files differ
diff --git a/home/init.asm b/home/init.asm
index ef4b745..d8ae530 100644
--- a/home/init.asm
+++ b/home/init.asm
@@ -40,7 +40,7 @@ Init: ; 052f
ld [rOBP1], a
ld [rTMA], a
ld [rTAC], a
- ld [wcc38], a ; Useless, since WRAM gets cleared right after
+ ld [wTitleSequenceOpeningType], a ; Useless, since WRAM gets cleared right after
ld a, 1 << rTAC_ON | rTAC_4096_HZ
ld [rTAC], a
ld a, 1 << rLCDC_ENABLE
diff --git a/wram.asm b/wram.asm
index f98b66c..da91371 100644
--- a/wram.asm
+++ b/wram.asm
@@ -205,6 +205,9 @@ SECTION "CB5B", WRAM0[$CB5B]
wCurSpecies:: db ; cb5b
wNamedObjectTypeBuffer:: db ; cb5c
+SECTION "CB5E", WRAM0[$CB5E]
+wJumptableIndex:: ds 4
+
SECTION "CB62", WRAM0[$CB62]
wVBCopySize:: ds 1 ; cb62
@@ -252,7 +255,9 @@ wVBlankOccurred: db ; cc33
ds 4
-wcc38:: ; cc38 ; TODO: wceeb in pokegold, what is this?
+;Controls what type of opening (fire/notes) you get.
+wcc38::
+wTitleSequenceOpeningType:: ; cc38
db
wDebugWarpSelection:: ; cc39