summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorehw <Knuckles500@gmail.com>2018-06-04 00:51:46 -0400
committerGitHub <noreply@github.com>2018-06-04 00:51:46 -0400
commit77d75a00c5df0bac4cdc7e63cd157d734a6ce79b (patch)
tree9c83fdd91d2e38f68e9aaca1f39bb99e08f699f1
parent427d4a8436fd9f7ba69525d6c154b26af6ebc36e (diff)
Title screen disassembled (new pr)
-rw-r--r--Makefile2
-rw-r--r--engine/title.asm637
-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--shim.sym94
-rw-r--r--wram.asm57
14 files changed, 731 insertions, 86 deletions
diff --git a/Makefile b/Makefile
index bf7cf66..1bb744d 100644
--- a/Makefile
+++ b/Makefile
@@ -84,8 +84,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..e141096 100644
--- a/engine/title.asm
+++ b/engine/title.asm
@@ -1,19 +1,648 @@
INCLUDE "constants.asm"
+INCLUDE "vram.asm"
SECTION "Title screen", ROMX[$5D8C], BANK[$01]
-IntroSequence:: ; 5d8c
- ; TODO
+IntroSequence:: ; 5D8C
+ callfar GameFreakIntro, $39
+ jr c, TitleSequenceStart ; 5DAE
+ ld a, [wTitleSequenceOpeningType] ; CC38
+ and a
+ jr z, .opening_sequence
+
+.pikachu_minigame
+ callfar PikachuMiniGame, $38
+ jr TitleSequenceStart ; 5DAE
+.opening_sequence
+ callfar OpeningCutscene, $39
+
+TitleSequenceStart::
+ call TitleSequenceInit
+ callfar SetTitleBGDecorationBorder, $02
+
+.loop
+ call TitleScreenMain ; 5FB8
+ jr nc, .loop
+
+ call ClearPalettesAndWait ; 361E
+ call ClearSprites
+ ld a, $01
+ ldh [hBGMapMode], a
+ call ClearTileMap
+ call ResetPalette ;33a
+
+ ld a, [wJumptableIndex + 1] ; CB5F
+ 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 ; 4031
+ dw SRAMClearMenu ; 61C6
+ 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
+
+ ld a, $23
+ ld hl, InitEffectObject ; 8CCFD - create another object?
+ call FarCall_hl
+ 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 ; 107CF
+ ld de, $9410
+ ld bc, 13 tiles
+ ld a, BANK(TitleScreenGFX)
+ call FarCopyData
+
+ ld hl, TitleScreenVersionGFX ; 1095F
+ ld de, $9600
+ ld bc, 24 tiles
+ ld a, BANK(TitleScreenVersionGFX)
+ call FarCopyData
+
+ ld hl, TitleScreenHoOhGFX ; 10ADF
+ ld de, $9000
+ ld bc, 49 tiles
+ ld a, BANK(TitleScreenHoOhGFX)
+ call FarCopyData
+
+ ld hl, TitleScreenLogoGFX ; 10DEF
+ ld de, $8800
+ ld bc, 58 tiles
+ ld a, BANK(TitleScreenLogoGFX)
+ call FarCopyData
+
+ ld hl, TitleScreenGoldLogoGFX ; 1118F
+ ld de, $8BA0
+ ld bc, 20 tiles
+ ld a, BANK(TitleScreenGoldLogoGFX)
+ call FarCopyData
+
+ call SetTitleGfx ; 6288
+ ld hl, wTileMapBackup ; C408
+ ld a, $24
+ ld [hli], a
+ ld a, $00
+ ld [hli], a
+
+ ld hl, vBGMap0
+ ld bc, $0800
+ 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 ; CB5E
+ 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 ; 3CA8
+ pop hl
+ pop bc
+ dec c
+ jr nz, .set_fire_note_loop
+ ret
+
+FirePositionTable:: ; 5EAC-5EB7
+ 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:: ; 5FB8
+ ld a, [wJumptableIndex] ; CB5E
+ bit 7, a
+ jr nz, .exit
+ call TitleScreenSequence
+ ld a, $23
+ ld hl, EffectObjectJumpNoDelay ; 8CD13
+ call FarCall_hl
+ 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:: ; 6025
+ ld hl, wJumptableIndex ; CB5E
+ inc [hl]
+ ret
+
+TitleSeq_WaitForNextSequence:: ; 602A
+ 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:: ; 603a
+ call PrintPokemonLogo ; 6196
+ call TitleSeq_IncreaseJumpTableIndex ; 6025
+ ld a, $01
+ ldh [hBGMapMode], a
+ ret
+
+TitleSeq_Start:: ; 6045
+ 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:: ; 605d
+ 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:: ; 607A
+ xor a
+ ldh [hLCDCPointer], a
+ call TitleSeq_IncreaseJumpTableIndex
+ ld de, MUSIC_TITLE
+ call PlayMusic ; Play "Title Theme"
+ ret
+
+TitleSeq_InitFlashTitle:: ; 6087
+ call TitleSeq_IncreaseJumpTableIndex
+ ld a, %00011010
+ ld [wJumptableIndex + 2], a
+ ld a, 6
+ ld [wJumptableIndex + 3], a
+ ret
+
+TitleSeq_FlashTitle:: ; 6095
+ 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:: ; 60B6
+ call PrintPMJapaneseChara
+ ld a, $10
+ ld [wJumptableIndex + 2], a
+ call TitleSeq_IncreaseJumpTableIndex
+ ld a, $01
+ ldh [hBGMapMode], a
+ ret
+
+TitleSeq_PMSubtitle:: ; 60C6
+ call PrintPMSubtitle
+ ld a, $10
+ ld [wJumptableIndex + 2], a
+ call TitleSeq_IncreaseJumpTableIndex
+ ld a, $01
+ ldh [hBGMapMode], a
+ ret
+
+TitleSeq_Version:: ; 60D6
+ call PrintVersion
+ ld a, $10
+ ld [wJumptableIndex + 2], a
+ call TitleSeq_IncreaseJumpTableIndex
+ ld a, $01
+ ldh [hBGMapMode], a
+ ret
+
+TitleSeq_CopyRight:: ; 60e6
+ call PrintCopyRight
+ ld a, $10
+ ld [wJumptableIndex + 2], a
+ call TitleSeq_IncreaseJumpTableIndex
+ ld a, $01
+ ldh [hBGMapMode], a
+ ret
+
+TitleSeq_HoOh:: ; 60f6
+ call Set_HoOh
+ ld a, $10
+ ld [wJumptableIndex + 2], a
+ call TitleSeq_IncreaseJumpTableIndex
+ ld a, $01
+ ldh [hBGMapMode], a
+ ret
+
+TitleSeq_PressButtonInit:: ; 6106
+ 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:: ; 6114
+ 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 ; hJoyState = $FFA3
+ 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 ; SRAMClearMenu
+
+.psbtn_nextseq
+ ld [wJumptableIndex + 1], a
+ ld hl, wJumptableIndex
+ set 7, [hl]
+ ret
+
+.psbtn_reset
+ ld hl, wJumptableIndex
+ inc [hl]
+ xor a
+ ld [wNextBGM], a ; C1A7
+ ld [wNextBGM + 1], a
+ ld hl, wSoundFade ; C1A5
+ ld [hl], 8
+ ret
+
+TitleSeq_FadeMusicOut:: ; 615C
+ ld a, [wSoundFade]
+ and a
+ ret nz
+ ld a, 3
+ ld [wJumptableIndex + 1], a
+ ld hl, wJumptableIndex
+ set 7, [hl]
+ ret
+
+SetLYOverrides:: ; 616C
+ ld hl, wLYOverrides
+ ld c, $30
+.setly_loop
+ ld [hli], a
+ dec c
+ jr nz, .setly_loop
+ ret
+
+PrintPMSubtitle:: ; 6176
+ coord hl, 2, 6
+ ld b, 15
+ ld a, $69
+ jr LoadPrintArea ; 6186
+
+PrintVersion:: ; 617f
+ coord hl, 4, 1
+ ld b, $09
+ ld a, $60
+
+LoadPrintArea:: ; 6186
+ ld [hli], a
+ inc a
+ dec b
+ jr nz, LoadPrintArea
+ ret
+
+PrintPMJapaneseChara:: ; 618C
+ coord hl, 15, 2
+ ld a, "こ"
+ lb bc, 4, 4
+ jr PrintBoxArea
+
+PrintPokemonLogo:: ; 6196
+ 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:: ; 61C6
+ call ClearTileMap
+ call GetMemSGBLayout
+ call LoadFont
+ call LoadFontExtra
+ ld hl, SRAMClear_TextMsg1
+ call PrintText ; E70
+ ld hl, SRAMClear_WinPOS
+ call CopyMenuHeader ; 1D50
+ call VerticalMenu ; 1D87
+ jp c, Init
+ ld a, [wMenuCursorY] ; CC2A
+ cp $01
+ jp z, Init
+
+ callfar InitAllSRAMBanks, $05
+ jp Init
+
+SRAMClear_TextMsg1::
+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:: ; 6223
+ call ClearTileMap
+ call LoadFontExtra
+ ld de, TitleScreenGFX
+ ld hl, $9600
+ lb bc, BANK(TitleScreenGFX), $19
+ call CopyVideoData
+
+ coord hl, 5, 7
+ ld de, IntroCopyRightInfo_Text
+ jp PlaceString
+
+IntroCopyRightInfo_Text:: ; 623E
+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:: ; 6264
+ 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:: ; 627A
+ ld de, $8800
+ ld hl, TitleScreenLogoGFX
+ ld bc, 130 tiles
+ ld a, $04
+ jp FarCopyDataDouble ; 0D3E
+
+; Sets the type of art that will be displayed on the title screen
+; depending on wTitleSequenceOpeningType.
+SetTitleGfx:: ;6288
+ ld hl, wTitleSequenceOpeningType ; CC38
+ ld a, [hl]
+ xor $01
+ ld [hl], a
+ jr nz, .flame
+
+.note
+ ld hl, TitleNotesGFX
+ jr SetTitleGfxNext
+
+.flame
+ ld hl, TitleFireGFX
+SetTitleGfxNext::
+ ld de, $8000
+ 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:: ; 62A5
call ClearWindowData
ld a, $23
ld [wce5f], a
- jp IntroSequence
+ jp IntroSequence \ No newline at end of file
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/shim.sym b/shim.sym
index f05010d..91ff32e 100644
--- a/shim.sym
+++ b/shim.sym
@@ -1,22 +1,27 @@
-00:032B UpdateTimeOfDayPalettes
+00:032b UpdateTimeOfDayPalettes
+00:033a ResetPalette
00:0436 RTC
00:051C Reset
-00:0D0A LoadFont
00:0D1A LoadFontExtra
+00:0d0a LoadFont
00:0E2A ClearTileMap
-00:0E3D DrawTextBox
+00:0e3d DrawTextBox
+00:0e70 PrintText
00:0E93 PlaceString
00:0E94 PlaceNextChar
00:0E9D CheckDict
-00:1D49 LoadMenuHeader
-00:1E58 OpenMenu
+00:1d49 LoadMenuHeader
+00:1d50 CopyMenuHeader
+00:1d87 VerticalMenu
+00:1e58 OpenMenu
00:1F9E ClearWindowData
00:1FCC ClearWindowData.bytefill
-00:20FF RunMapScript
-00:232C LoadMapWarp
-00:23E5 OverworldFadeIn
+00:20ff RunMapScript
+00:232c LoadMapWarp
+00:23e5 OverworldFadeIn
00:2C05 StartMenuCheck
00:3270 Random
+00:361E ClearPalettesAndWait
00:3621 WaitBGMap
00:362B SetPalettes
00:3634 ClearPalettes
@@ -27,6 +32,7 @@
00:36C8 NamesPointers
00:36E0 GetName
00:39BA PlayCry
+00:3CA8 InitSpriteAnimStruct
00:3D86 WaitSFX
00:3D87 WaitSFX.wait
00:3DA5 MaxVolume
@@ -38,29 +44,30 @@
00:3DE1 PlayMapMusic
00:3E00 PlayMapMusic.dontplay
00:3E05 SpecialMapMusic
-00:3E14 SpecialMapMusic.state2
+00:3E14 SpecialMapMusic.state2 ; ?
00:3E19 SpecialMapMusic.normal
00:3E1B GetMapMusic
00:3E2E GetMapMusic.unk_3E2E
00:3E32 Unk_3E32
01:4031 Function_4031
-01:53CC MainMenu
+01:4031 DebugMenu
+01:53cc MainMenu
01:5D27 Function_5d27
-01:6114 TitleScreenInputAndTimeout
01:6445 Function_6445
01:66B1 Function_66b1
01:6713 Function_6713
02:4786 Function_8786
02:4856 DecompTownMapTilemap
-02:48DA DecompTownMapTilemap.tilemap
-02:4C7C DrawMap
-02:4DC2 TownMapGfx
+02:48da DecompTownMapTilemap.tilemap ; compressed
+02:4c7c DrawMap
+02:4dc2 TownMapGfx
02:4F32 PokegearRadioGfx
+02:51D2 SetTitleBGDecorationBorder
02:528B Function_928b
02:5695 CheckSGB
02:5695 Function_9695
03:4791 DebugWarp
-03:479F DebugWarp.Destinations
+03:479f DebugWarp.Destinations
03:4AA1 AddItemToInventory_
03:4D33 Function_cd33
03:4D6F Function_cd6f
@@ -85,9 +92,10 @@
04:528F Function_1128f
04:52C1 Function_112c1
04:5677 DoPlayerMovement
-04:5DBE DisplayStartMenu
+04:5dbe DisplayStartMenu
04:640B Function_1240b
-04:6C58 CheckRegisteredItem
+04:6c58 CheckRegisteredItem
+05:43B6 InitAllSRAMBanks
05:43E0 Function_143e0
05:457A Function_1457a
05:45B8 Function_145b8
@@ -97,9 +105,9 @@
0A:4D6E Function_28d6e
0A:4DA4 Function_28da4
0B:5663 Function_2d663
-0E:4B78 LoadTrainerClassName
-0E:4BA0 LoadTrainerClassName.got_name
-0E:4BA9 LoadTrainerClass
+0E:4b78 LoadTrainerClassName
+0E:4ba0 LoadTrainerClassName.got_name
+0E:4ba9 LoadTrainerClass
0F:508C Function_3d08c
0F:55CE Function_3d5ce
0F:567C Function_3d67c
@@ -140,7 +148,9 @@
23:44BE Function_8c4be
23:4940 Function_8c940
23:49C6 Function_8c9c6
-23:60CC MenuMonIconGfx
+23:4CFD InitEffectObject
+23:4d13 EffectObjectJumpNoDelay
+23:60cc MenuMonIconGfx
24:4000 SetClockDialog
24:4239 SlotMachineGame
32:4000 Function_c8000
@@ -150,13 +160,9 @@
33:4000 Function_cc000
33:4000 Function_cc000_2
33:4001 Function_cc001
-3A:4307 Function_e8307
-3A:4352 Function_e8352
-3A:441D Function_e841d
-3A:45D8 Function_e85d8
-3A:47F9 Function_e87f9
-3A:4839 Function_e8839
-3A:484F Function_e884f
+38:4000 PikachuMiniGame
+39:4000 GameFreakIntro
+39:432F OpeningCutscene
3A:4D9D _PlayCryHeader
3A:4E22 _PlaySFX
3A:4F11 LoadChannel
@@ -164,27 +170,27 @@
3A:52C7 Music
3F:40E9 InGameDebugMenu
3F:5B66 Function_fdb66
-3F:64CE MonsterTest
-3F:654E PicTest
-3F:6750 PicTestMenu
-3F:6755 PicTestMenu.loop
-00:C5E8 wMapScriptNumber
-00:CA22 wTrainerClass
+3f:64ce MonsterTest
+3f:654e PicTest
+3f:6750 PicTestMenu
+3f:6755 PicTestMenu.loop
+00:c5e8 wMapScriptNumber
+00:ca22 wTrainerClass
00:CBF2 wWindowData
00:CBF2 wWindowStackPointer
00:CC02 wMenuDataHeader
00:CC12 wMenuData2
00:CC22 wMenuData3
-00:CDBE wTargetMapUnk
-00:CDBF wTargetMapGroup
-00:CDC0 wTargetMapId
-00:CE67 wPlayerName
-01:D165 wTMCounts
-01:D19E wItems
-01:D258 wRivalName
+00:cdbe wTargetMapUnk
+00:cdbf wTargetMapGroup
+00:cdc0 wTargetMapId
+00:ce67 wPlayerName
+01:d165 wTMCounts
+01:d19e wItems
+01:d258 wRivalName
01:D264 wPlayerBikeSurfState
-01:D656 wMapGroup
-01:D657 wMapId
-01:D66A wMapScriptPtr
+01:d656 wMapGroup
+01:d657 wMapId
+01:d66a wMapScriptPtr
01:D7D2 wPartyMonOT
01:DA3B wUnk_DA3B
diff --git a/wram.asm b/wram.asm
index 5d09b77..78a74df 100644
--- a/wram.asm
+++ b/wram.asm
@@ -17,43 +17,46 @@ wChannel6:: channel_struct wChannel6 ; c0fa
wChannel7:: channel_struct wChannel7 ; c12c
wChannel8:: channel_struct wChannel8 ; c15e
- ds 1 ; c190
+ ds 8 ; TODO
-wCurTrackDuty:: db ; c191
-wCurTrackIntensity:: db ; c192
-wCurTrackFrequency:: dw ; c193
-wc195:: db ; c195
-
- ds 2 ; TODO
+wCurChannel:: ; c198
+ db
-wCurChannel:: db ; c198
-wVolume:: db ; c199
-wSoundOutput:: db ; c19a
+wVolume:: ; c199
+ db
- ds 1 ; TODO
+ ds 2 ; TODO
-wMusicID:: dw ; c19c
-wMusicBank:: db ; c19e
+wMusicID:: ; c19c
+ dw
+wMusicBank:: ; c19e
+ db
+
ds 6 ; TODO
+
+wSoundFade:: ; c1a5
+ db
+
+ ds 1
-wMusicFade:: ; c1a5
-; fades volume over x frames
-; bit 7: fade in/out
-; bit 0-6: number of frames for each volume level
-; $00 = none (default)
+wNextBGM:: ; c1a7
db
-wMusicFadeCount:: db ; c1a6
-wMusicFadeID:: dw ; c1a7
+
+ ds 5
+
+wMapMusic:: ; c1ad
+ db
- ds 4 ; TODO
+wCryPitch:: ; c1ae
+ dw
-wMapMusic:: db ; c1ad
-wCryPitch:: dw ; c1ae
-wCryLength:: dw ; c1b0
+wCryLength:: ; c1b0
+ dw
ds 10 ; TODO
+
; either wChannelsEnd or wMusicEnd, unsure
wMusicInitEnd:: ; c1bc
@@ -110,6 +113,9 @@ SECTION "CB56", WRAM0[$CB5B]
wcb5b:: ds 1 ; multipurpose, also wName, wMonDexIndex2
wNameCategory:: ds 1
+SECTION "CB5E", WRAM0[$CB5E]
+wJumptableIndex:: ds 4
+
SECTION "CB62", WRAM0[$CB62]
wVBCopySize:: ds 1 ; cb62
@@ -149,7 +155,8 @@ wVBlankOccurred: db ; cc33
ds 4
-wcc38:: ; cc38 ; TODO: wceeb in pokegold, what is this?
+;Controls what type of opening (fire/notes) you get.
+wTitleSequenceOpeningType:: ; cc38
db
wDebugWarpSelection:: ; cc39