summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpikalaxalt <PikalaxALT@gmail.com>2016-06-18 23:30:28 -0400
committerpikalaxalt <PikalaxALT@gmail.com>2016-06-18 23:30:28 -0400
commitc83e2e7efe1a279367316ffaf05d060c26e022cf (patch)
tree982e5a2bf8d0624ad07c61739ee17331467bf054
parent188f35fb75f73dc3325635d74b47891a752aa767 (diff)
Main Menu and GS Title Screen
-rw-r--r--constants/music_constants.asm12
-rw-r--r--constants/trainer_constants.asm4
-rwxr-xr-xengine/main_menu.asm1074
-rwxr-xr-xengine/title.asm450
-rw-r--r--home.asm10
-rw-r--r--home/audio.asm2
-rw-r--r--home/copy.asm2
-rw-r--r--home/copy2.asm2
-rw-r--r--home/map.asm14
-rw-r--r--home/map_objects.asm2
-rw-r--r--main.asm154
-rw-r--r--wram.asm86
12 files changed, 1695 insertions, 117 deletions
diff --git a/constants/music_constants.asm b/constants/music_constants.asm
index 5c54c3dc..3a73da9b 100644
--- a/constants/music_constants.asm
+++ b/constants/music_constants.asm
@@ -93,15 +93,5 @@
const MUSIC_LAKE_OF_RAGE_ROCKET_RADIO ; 5a
const MUSIC_PRINTER ; 5b
const MUSIC_POST_CREDITS ; 5c
- const MUSIC_CLAIR ; 5d
- const MUSIC_MOBILE_ADAPTER_MENU ; 5e
- const MUSIC_MOBILE_ADAPTER ; 5f
- const MUSIC_BUENAS_PASSWORD ; 60
- const MUSIC_MYSTICALMAN_ENCOUNTER ; 61
- const MUSIC_CRYSTAL_OPENING ; 62
- const MUSIC_BATTLE_TOWER_THEME ; 63
- const MUSIC_SUICUNE_BATTLE ; 64
- const MUSIC_BATTLE_TOWER_LOBBY ; 65
- const MUSIC_MOBILE_CENTER ; 66
-MUSIC_MAHOGANY_MART EQU $64 ; leftover from gold
+MUSIC_MAHOGANY_MART EQU $64
diff --git a/constants/trainer_constants.asm b/constants/trainer_constants.asm
index 74b1e341..e6563591 100644
--- a/constants/trainer_constants.asm
+++ b/constants/trainer_constants.asm
@@ -6,7 +6,6 @@ CHRIS EQU __enum__
const PHONECONTACT_BIKESHOP
const PHONECONTACT_BILL
const PHONECONTACT_ELM
- const PHONECONTACT_BUENA
KRIS EQU __enum__
trainerclass FALKNER ; 1
@@ -612,9 +611,6 @@ KRIS EQU __enum__
trainerclass GRUNTF ; 42
- trainerclass MYSTICALMAN ; 43
- const EUSINE
-
NUM_TRAINER_CLASSES EQU __enum__
const_def
diff --git a/engine/main_menu.asm b/engine/main_menu.asm
new file mode 100755
index 00000000..dc8c7fb1
--- /dev/null
+++ b/engine/main_menu.asm
@@ -0,0 +1,1074 @@
+MainMenu_:
+ ld de, MUSIC_NONE
+ call PlayMusic
+ call DelayFrame
+ ld de, MUSIC_MAIN_MENU
+ ld a, e
+ ld [wMapMusic], a
+ call PlayMusic
+.asm_5a60
+ xor a
+ ld [wc1d6], a
+ call Function5bf7
+ ld b, $8
+ call GetSGBLayout
+ ld hl, wGameTimerPause
+ res 0, [hl]
+ call Function5ae4
+ ld [wWhichIndexSet], a
+ call Function5b27
+ ld hl, .MenuDataHeader
+ call LoadMenuDataHeader
+ call Function5b0a
+ call CloseWindow
+ jr c, .asm_5a94
+ call ClearTileMap
+ ld a, [wMenuSelection]
+ ld hl, .Jumptable ; $5acd
+ rst JumpTable
+ jr .asm_5a60
+
+.asm_5a94
+ jp StartTitleScreen
+
+.MenuDataHeader:
+ db $40
+ db 00, 00
+ db 07, 14
+ dw .MenuData2
+ db 1
+
+.MenuData2:
+ db $80
+ db 0
+ dw MainMenuItems
+ dw PlaceMenuStrings
+ dw .Strings
+
+.Strings:
+ db "CONTINUE@"
+ db "NEW GAME@"
+ db "OPTION@"
+ db "MYSTERY GIFT@"
+
+.Jumptable:
+ dw MainMenu_Continue ; 5dd9
+ dw MainMenu_NewGame ; 5c1e
+ dw MainMenu_Options ; 5c17
+ dw MainMenu_MysteryGift ; 5c07
+
+CONTINUE EQU 0
+NEW_GAME EQU 1
+OPTION EQU 2
+MYSTERY_GIFT EQU 3
+
+MainMenuItems:
+ db 2
+ db NEW_GAME
+ db OPTION
+ db -1
+
+ db 3
+ db CONTINUE
+ db NEW_GAME
+ db OPTION
+ db -1
+
+ db 4
+ db CONTINUE
+ db NEW_GAME
+ db OPTION
+ db MYSTERY_GIFT
+ db -1
+
+Function5ae4: ; 5ae4 (1:5ae4)
+ nop
+ nop
+ nop
+ ld a, [wd19a]
+ and a
+ jr nz, .asm_5af0
+ ld a, $0
+ ret
+
+.asm_5af0
+ ld a, [hCGB]
+ cp $1
+ ld a, $1
+ ret nz
+ ld a, $0
+ call OpenSRAM
+ ld a, [$abe5]
+ cp $ff
+ call CloseSRAM
+ ld a, $1
+ ret z
+ ld a, $2
+ ret
+
+Function5b0a: ; 5b0a (1:5b0a)
+ call SetUpMenu
+.asm_5b0d
+ call Function5b27
+ call GetScrollingMenuJoypad
+ ld a, [wMenuJoypad]
+ cp $2
+ jr z, .asm_5b25
+ cp $1
+ jr z, .asm_5b20
+ jr .asm_5b0d
+
+.asm_5b20
+ call PlayClickSFX
+ and a
+ ret
+
+.asm_5b25
+ scf
+ ret
+
+Function5b27: ; 5b27 (1:5b27)
+ ld a, [wd19a]
+ and a
+ ret z
+ xor a
+ ld [hBGMapMode], a
+ call Function5b45
+ ld hl, wd199
+ ld a, [hl]
+ push af
+ set 4, [hl]
+ call Function5b5b
+ pop af
+ ld [wd199], a
+ ld a, $1
+ ld [hBGMapMode], a
+ ret
+
+Function5b45: ; 5b45 (1:5b45)
+ call CheckRTCStatus
+ and $80
+ jr nz, .asm_5b57
+ hlcoord 0, 12
+ ld b, $4
+ ld c, $d
+ call TextBox
+ ret
+
+.asm_5b57
+ call SpeechTextBox
+ ret
+
+Function5b5b: ; 5b5b (1:5b5b)
+ ld a, [wd19a]
+ and a
+ ret z
+ call CheckRTCStatus
+ and $80
+ jp nz, Function5b9c
+ call UpdateTime
+ hlcoord 1, 13
+ ld bc, IncGradGBPalTable_11 + 1
+ call ClearBox
+ call GetWeekday
+ ld b, a
+ decoord 1, 14
+ call Function5bb8
+ decoord 4, 16
+ ld a, [hHours]
+ ld c, a
+ callba PrintHour
+ ld [hl], $9c
+ inc hl
+ ld de, hMinutes
+ lb bc, PRINTNUM_LEADINGZEROS | 1, 2
+ call PrintNum
+ ret
+
+.min
+ db "min.@"
+
+Function5b9c: ; 5b9c (1:5b9c)
+ hlcoord 1, 14
+ ld de, .TimeNotSet
+ call PlaceString
+ ret
+
+.TimeNotSet
+ db "TIME NOT SET@"
+
+.UnusedText
+ text_jump ClockTimeUnknownText_
+ db "@"
+
+Function5bb8: ; 5bb8 (1:5bb8)
+ push de
+ ld hl, .Days
+ ld a, b
+ call GetNthString
+ ld d, h
+ ld e, l
+ pop hl
+ call PlaceString
+ ld h, b
+ ld l, c
+ ld de, .Day
+ call PlaceString
+ ret
+
+.Days:
+ db "SUN@"
+ db "MON@"
+ db "TUES@"
+ db "WEDNES@"
+ db "THURS@"
+ db "FRI@"
+ db "SATUR@"
+.Day:
+ db "DAY@"
+
+Function5bf7: ; 5bf7 (1:5bf7)
+ xor a
+ ld [hMapAnims], a
+ call ClearTileMap
+ call LoadFontsExtra
+ call Functiond9e
+ call ClearWindowData
+ ret
+
+MainMenu_MysteryGift:
+ call UpdateTime
+ callba Function11934
+ callba Function29dff
+ ret
+
+MainMenu_Options:
+ callba OptionsMenu
+ ret
+
+MainMenu_NewGame:
+ xor a
+ ld [wMonStatusFlags], a
+ call Function5c3a
+ call Function5bf7
+ call OakSpeech
+ call InitializeWorld
+ ld a, $0
+ ld [wceec], a
+ ld a, $f1
+ ld [hMapEntryMethod], a
+ jp FinishContinueFunction
+
+Function5c3a: ; 5c3a (1:5c3a)
+ xor a
+ ld [hBGMapMode], a
+ call Function5c41
+ ret
+
+Function5c41: ; 5c41 (1:5c41)
+ ld hl, wOAMBuffer
+ ld bc, Options - wOAMBuffer
+ xor a
+ call ByteFill
+
+ ld hl, wGameData
+ ld bc, wGameDataEnd - wGameData
+ xor a
+ call ByteFill
+
+ ld a, [rLY]
+ ld [hSecondsBackup], a
+ call DelayFrame
+ ld a, [hRandomSub]
+ ld [wPlayerID], a
+
+ ld a, [rLY]
+ ld [hSecondsBackup], a
+ call DelayFrame
+ ld a, [hRandomAdd]
+ ld [wPlayerID + 1], a
+
+ ld hl, wPartyCount
+ call Function5d15
+
+ xor a
+ ld [wd8bc], a
+ ld [wSavedAtLeastOnce], a
+
+ call Function5d1a
+
+ ld a, BANK(s1_ad6c)
+ call OpenSRAM
+ ld hl, s1_ad6c
+ call Function5d15
+ call CloseSRAM
+
+ ld hl, wd5b7
+ call Function5d15
+ ld hl, wd5e1
+ call Function5d15
+ ld hl, wd5fc
+ call Function5d15
+ ld hl, wd616
+ call Function5d15
+
+ xor a
+ ld [wdd1a], a
+ ld [wdd21], a
+ ld [wdd28], a
+ ld a, $ff
+ ld [wdd1c], a
+ ld [wdd23], a
+ ld [wdd2a], a
+ ld [wdd1d], a
+ ld [wdd24], a
+ ld [wdd2b], a
+
+ ld a, BANK(s0_abe2)
+ call OpenSRAM
+ ld hl, s0_abe2
+ xor a
+ ld [hli], a
+ dec a
+ ld [hl], a
+ call CloseSRAM
+
+ call LoadOrRegenerateLuckyIDNumber
+ call InitializeMagikarpHouse
+
+ xor a
+ ld [wce5f], a
+
+ ld [wJohtoBadges], a
+ ld [wKantoBadges], a
+
+ ld [wCoins], a
+ ld [wCoins + 1], a
+
+START_MONEY EQU 3000
+
+IF START_MONEY / $10000
+ ld a, START_MONEY / $10000
+ENDC
+ ld [wMoney], a
+ ld a, START_MONEY / $100 % $100
+ ld [wMoney + 1], a
+ ld a, START_MONEY % $100
+ ld [wMoney + 2], a
+
+ xor a
+ ld [wd961], a
+
+ ld hl, wMomItemTriggerBalance
+ ld [hl], 2300 / $10000
+ inc hl
+ ld [hl], 2300 / $100 % $100
+ inc hl
+ ld [hl], 2300 % $100
+
+ call Function5d5d
+
+ callba InitDecorations
+
+ callba DeletePartyMonMail
+
+ call ResetGameTime
+ ret
+
+Function5d15: ; 5d15 (1:5d15)
+ xor a
+ ld [hli], a
+ dec a
+ ld [hl], a
+ ret
+
+Function5d1a: ; 5d1a (1:5d1a)
+ ld hl, wd8bf
+ ld c, $0
+.asm_5d1f
+ push hl
+ ld de, .Box
+ call CopyName2
+ dec hl
+ ld a, c
+ inc a
+ cp 10
+ jr c, .asm_5d32
+ sub 10
+ ld [hl], "1"
+ inc hl
+.asm_5d32
+ add "0"
+ ld [hli], a
+ ld [hl], "@"
+ pop hl
+ ld de, 9
+ add hl, de
+ inc c
+ ld a, c
+ cp NUM_BOXES
+ jr c, .asm_5d1f
+ ret
+
+.Box db "BOX@"
+
+InitializeMagikarpHouse: ; 5d47 (1:5d47)
+ ld hl, wdd33
+ ld a, 3
+ ld [hli], a
+ ld a, 6
+ ld [hli], a
+ ld de, .Ralph
+ call CopyName2
+ ret
+
+.Ralph db "RALPH@"
+
+Function5d5d: ; 5d5d (1:5d5d)
+ ld hl, .Rival
+ ld de, wRivalsName
+ call .CopyName
+ ld hl, .Mom
+ ld de, wMomsName
+ call .CopyName
+ ld hl, .Red
+ ld de, wRedsName
+ call .CopyName
+ ld hl, .Green
+ ld de, wGreensName
+.CopyName:
+ ld bc, NAME_LENGTH
+ call CopyBytes
+ ret
+
+.Rival: db "???@"
+.Red: db "RED@"
+.Green: db "GREEN@"
+.Mom: db "MOM@"
+
+InitializeWorld: ; 5d97 (1:5d97)
+ call ShrinkPlayer
+ callba SpawnPlayer
+ callba InitializeStartDay_
+ ret
+
+LoadOrRegenerateLuckyIDNumber: ; 5da7 (1:5da7)
+ ld a, $0
+ call OpenSRAM
+ ld a, [wCurDay]
+ inc a
+ ld b, a
+ ld a, [s0_ac68]
+ cp b
+ ld a, [s0_ac6a]
+ ld c, a
+ ld a, [s0_ac69]
+ jr z, .asm_5dc9
+ ld a, b
+ ld [s0_ac68], a
+ call Random
+ ld c, a
+ call Random
+.asm_5dc9
+ ld [wd9e9], a
+ ld [s0_ac69], a
+ ld a, c
+ ld [wd9ea], a
+ ld [s0_ac6a], a
+ jp CloseSRAM
+
+MainMenu_Continue:
+ callba TryLoadSaveFile
+ jr c, .asm_5e41
+ call LoadStandardMenuDataHeader
+ call DisplaySaveInfoOnContinue
+ ld a, $1
+ ld [hBGMapMode], a
+ ld c, 20
+ call DelayFrames
+ call ConfirmContinue
+ jr nc, .asm_5dfa
+ call CloseWindow
+ jr .asm_5e41
+
+.asm_5dfa
+ call Continue_CheckRTC_RestartClock
+ jr nc, .asm_5e04
+ call CloseWindow
+ jr .asm_5e41
+
+.asm_5e04
+ ld a, $8
+ ld [wMusicFade], a
+ ld a, MUSIC_NONE % $100
+ ld [wMusicFadeID], a
+ ld a, MUSIC_NONE / $100
+ ld [wMusicFadeID + 1], a
+ call ClearBGPalettes
+ call CloseWindow
+ call ClearTileMap
+ ld c, 20
+ call DelayFrames
+ callba JumpRoamMons
+ callba MysteryGift_CopyReceivedDecosToPC
+ callba ClockContinue
+ ld a, [wd1db]
+ cp $1
+ jr z, .asm_5e42
+ ld a, $f2
+ ld [hMapEntryMethod], a
+ jp FinishContinueFunction
+
+.asm_5e41
+ ret
+
+.asm_5e42
+ ld a, $e
+ ld [wceec], a
+ call PostCreditsSpawn
+ jp FinishContinueFunction
+
+SpawnAfterRed: ; 5e4d (1:5e4d)
+ ld a, $1a
+ ld [wceec], a
+PostCreditsSpawn: ; 5e52 (1:5e52)
+ xor a
+ ld [wd1db], a
+ ld a, $f1
+ ld [hMapEntryMethod], a
+ ret
+
+ConfirmContinue: ; 5e5b (1:5e5b)
+ call DelayFrame
+ call GetJoypad
+ ld hl, hJoyPressed
+ bit 0, [hl]
+ jr nz, .asm_5e6e
+ bit 1, [hl]
+ jr z, ConfirmContinue
+ scf
+ ret
+
+.asm_5e6e
+ ret
+
+Continue_CheckRTC_RestartClock: ; 5e6f (1:5e6f)
+ call CheckRTCStatus
+ and $80
+ jr z, .asm_5e82
+ ld a, $8
+ ld hl, $4021
+ rst FarCall
+ ld a, c
+ and a
+ jr z, .asm_5e82
+ scf
+ ret
+
+.asm_5e82
+ xor a
+ ret
+
+FinishContinueFunction: ; 5e84 (1:5e84)
+ xor a
+ ld [wDontPlayMapMusicOnReload], a
+ ld hl, wGameTimerPause
+ set 0, [hl]
+ callba OverworldLoop
+ ld a, [wd1db]
+ cp $2
+ jr z, .asm_5e9d
+ jp Reset
+
+.asm_5e9d
+ call SpawnAfterRed
+ jr FinishContinueFunction
+
+DisplaySaveInfoOnContinue: ; 5ea2 (1:5ea2)
+ call CheckRTCStatus
+ and $80
+ jr z, .asm_5eb0
+ lb de, 4, 8
+ call DisplayContinueDataWithRTCError
+ ret
+
+.asm_5eb0
+ lb de, 4, 8
+ call DisplayNormalContinueData
+ ret
+
+DisplayNormalContinueData: ; 5eb7 (1:5eb7)
+ call Continue_LoadMenuHeader
+ call Continue_DisplayBadgesDex
+ call Continue_PrintGameTime
+ call LoadFontsExtra
+ call UpdateSprites
+ ret
+
+DisplayContinueDataWithRTCError: ; 5ec7 (1:5ec7)
+ call Continue_LoadMenuHeader
+ call Continue_DisplayBadgesDex
+ call Continue_UnknownGameTime
+ call LoadFontsExtra
+ call UpdateSprites
+ ret
+
+Continue_LoadMenuHeader: ; 5ed7 (1:5ed7)
+ xor a
+ ld [hBGMapMode], a
+ ld hl, .MenuDataHeader_Dex ; $5ef1
+ ld a, [wStatusFlags]
+ bit 0, a
+ jr nz, .asm_5ee7
+ ld hl, .MenuDataHeader_NoDex ; $5f15
+.asm_5ee7
+ call OffsetMenuDataHeader_
+ call MenuBox
+ call PlaceVerticalMenuItems
+ ret
+
+.MenuDataHeader_Dex:
+ db $40
+ db 00, 00
+ db 09, 15
+ dw .MenuData2_Dex ; 5ef9
+ db 1
+
+.MenuData2_Dex
+ db $00
+ db 4
+ db "PLAYER <PLAYER>@"
+ db "BADGES@"
+ db "#DEX@"
+ db "TIME@"
+
+.MenuDataHeader_NoDex:
+ db $40
+ db 00, 00
+ db 09, 15
+ dw .MenuData2_NoDex ; 5f1d
+ db 1
+
+.MenuData2_NoDex
+ db $00
+ db 4
+ db "PLAYER <PLAYER>@"
+ db "BADGES@"
+ db " @"
+ db "TIME@"
+
+Continue_DisplayBadgesDex: ; 5f36 (1:5f36)
+ call MenuBoxCoord2Tile
+ push hl
+ decoord 13, 4, 0
+ add hl, de
+ call Continue_DisplayBadgeCount
+ pop hl
+ push hl
+ decoord 12, 6, 0
+ add hl, de
+ call Continue_DisplayPokedexNumCaught
+ pop hl
+ ret
+
+Continue_PrintGameTime: ; 5f4c (1:5f4c)
+ decoord 9, 8, 0
+ add hl, de
+ call Continue_DisplayGameTime
+ ret
+
+Continue_UnknownGameTime: ; 5f54 (1:5f54)
+ decoord 9, 8, 0
+ add hl, de
+ ld de, .three_question_marks
+ call PlaceString
+ ret
+
+.three_question_marks
+ db " ???@"
+
+Continue_DisplayBadgeCount: ; 5f64 (1:5f64)
+ push hl
+ ld hl, wJohtoBadges
+ ld b, $2
+ call CountSetBits
+ pop hl
+ ld de, wd151
+ lb bc, 1, 2
+ jp PrintNum
+
+Continue_DisplayPokedexNumCaught: ; 5f77 (1:5f77)
+ ld a, [wStatusFlags]
+ bit 0, a
+ ret z
+ push hl
+ ld hl, wPokedexCaught
+IF NUM_POKEMON % 8
+ ld b, NUM_POKEMON / 8 + 1
+ELSE
+ ld b, NUM_POKEMON / 8
+ENDC
+ call CountSetBits
+ pop hl
+ ld de, wd151
+ lb bc, 1, 3
+ jp PrintNum
+
+Continue_DisplayGameTime: ; 5f90 (1:5f90)
+ ld de, wGameTimeHours
+ lb bc, 2, 3
+ call PrintNum
+ ld [hl], $6d
+ inc hl
+ ld de, wGameTimeMinutes
+ lb bc, PRINTNUM_LEADINGZEROS | 1, 2
+ jp PrintNum
+
+OakSpeech: ; 5fa5 (1:5fa5)
+ callba InitClock
+ call RotateFourPalettesLeft
+ call ClearTileMap
+ ld de, MUSIC_ROUTE_30
+ call PlayMusic
+ call RotateFourPalettesRight
+ call RotateThreePalettesRight
+ xor a
+ ld [wCurPartySpecies], a
+ ld a, POKEMON_PROF
+ ld [wTrainerClass], a
+ call Intro_PrepTrainerPic
+ ld b, SCGB_TRAINER_OR_MON_FRONTPIC_PALS
+ call GetSGBLayout
+ call Intro_FadeInFrontpic
+ ld hl, OakText1
+ call PrintText
+ call RotateThreePalettesRight
+ call ClearTileMap
+ ld a, MARILL
+ ld [wce60], a
+ ld [wCurPartySpecies], a
+ call GetBaseData
+ hlcoord 6, 4
+ hlcoord 6, 4 ; TriHard
+ call PrepMonFrontpic
+ xor a
+ ld [wTempMonDVs], a
+ ld [wTempMonDVs + 1], a
+ ld b, SCGB_TRAINER_OR_MON_FRONTPIC_PALS
+ call GetSGBLayout
+ call Intro_WipeInFrontpic
+ ld hl, OakText2
+ call PrintText
+ ld hl, OakText4
+ call PrintText
+ call RotateThreePalettesRight
+ call ClearTileMap
+ xor a
+ ld [wCurPartySpecies], a
+ ld a, POKEMON_PROF
+ ld [wTrainerClass], a
+ call Intro_PrepTrainerPic
+ ld b, SCGB_TRAINER_OR_MON_FRONTPIC_PALS
+ call GetSGBLayout
+ call Intro_FadeInFrontpic
+ ld hl, OakText5
+ call PrintText
+ call RotateThreePalettesRight
+ call ClearTileMap
+ xor a
+ ld [wCurPartySpecies], a
+ ld a, CAL
+ ld [wTrainerClass], a
+ call Intro_PrepTrainerPic
+ ld b, SCGB_TRAINER_OR_MON_FRONTPIC_PALS
+ call GetSGBLayout
+ call Intro_FadeInFrontpic
+ ld hl, OakText6
+ call PrintText
+ call NamePlayer
+ ld hl, OakText7
+ call PrintText
+ ret
+
+OakText1:
+ text_jump OakText1_
+ db "@"
+
+OakText2:
+ text_jump OakText2_
+ start_asm
+ ld a, MARILL
+ call PlayCry
+ call WaitSFX
+ ld hl, OakText3 ; $606c
+ ret
+
+OakText3:
+ text_jump OakText3_
+ db "@"
+
+OakText4:
+ text_jump OakText4_
+ db "@"
+
+OakText5:
+ text_jump OakText5_
+ db "@"
+
+OakText6:
+ text_jump OakText6_
+ db "@"
+
+OakText7:
+ text_jump OakText7_
+ db "@"
+
+NamePlayer: ; 6085 (1:6085)
+ call MovePlayerPicRight
+ ld hl, .PlayerNamingChoices ; $60d9
+ call SelectPresetName
+ ld a, [wMenuCursorY]
+ dec a
+ jr z, .NewName
+ ld de, wPlayersName
+ call StorePlayerName
+ callba ApplyMonOrTrainerPals
+ call MovePlayerPicLeft
+ ret
+
+.NewName
+ ld b, $1
+ ld de, wPlayersName
+ callba NamingScreen
+ call RotateThreePalettesRight
+ call ClearTileMap
+ call LoadFontsExtra
+ call WaitBGMap
+ xor a
+ ld [wCurPartySpecies], a
+ ld a, CAL
+ ld [wTrainerClass], a
+ call Intro_PrepTrainerPic
+ ld b, SCGB_TRAINER_OR_MON_FRONTPIC_PALS
+ call GetSGBLayout
+ call RotateThreePalettesLeft
+ ld hl, wPlayersName
+ ld de, .GoldSilver
+ call InitName
+ ret
+
+.PlayerNamingChoices:
+ db $40
+ db 00, 00
+ db 11, 10
+ dw .MenuData2
+ db 1
+
+.MenuData2:
+ db $91
+ db 5
+ db "NEW NAME@"
+.GoldSilver:
+IF DEF(GOLD)
+ db "GOLD@"
+ db "HIRO@"
+ db "TAYLOR@"
+ db "KARL@"
+ENDC
+IF DEF(SILVER)
+ db "SILVER@"
+ db "KAMON@"
+ db "OSCAR@"
+ db "MAX@"
+ENDC
+ db 2, "NAME@"
+
+SelectPresetName: ; 6108 (1:6108)
+ call LoadMenuDataHeader
+ call VerticalMenu
+ ld a, [wMenuCursorY]
+ dec a
+ call CopyNameFromMenu
+ call CloseWindow
+ ret
+
+StorePlayerName: ; 6119 (1:6119)
+ ld hl, wStringBuffer2
+ ld bc, NAME_LENGTH
+ call CopyBytes
+ ret
+
+ShrinkPlayer: ; 6123 (1:6123)
+ ld a, [hROMBank]
+ push af
+
+ ld a, 0 << 7 | 32 ; fade out
+ ld [wMusicFade], a
+ ld de, MUSIC_NONE
+ ld a, e
+ ld [wMusicFadeID], a
+ ld a, d
+ ld [wMusicFadeIDHi], a
+
+ ld de, SFX_ESCAPE_ROPE
+ call PlaySFX
+ pop af
+ rst Bankswitch
+
+ ld c, 8
+ call DelayFrames
+
+ ld hl, Shrink1Pic
+ ld b, BANK(Shrink1Pic)
+ call ShrinkFrame
+
+ ld c, 8
+ call DelayFrames
+
+ ld hl, Shrink2Pic
+ ld b, BANK(Shrink2Pic)
+ call ShrinkFrame
+
+ ld c, 8
+ call DelayFrames
+
+ hlcoord 6, 5
+ ld b, 7
+ ld c, 7
+ call ClearBox
+
+ ld c, 3
+ call DelayFrames
+
+ call Intro_PlacePlayerSprite
+ call LoadFontsExtra
+
+ ld c, 50
+ call DelayFrames
+
+ call RotateThreePalettesRight
+ call ClearTileMap
+ ret
+
+MovePlayerPicRight: ; 617e (1:617e)
+ hlcoord 6, 4
+ ld de, $1
+ jr MovePlayerPic
+
+MovePlayerPicLeft: ; 6186 (1:6186)
+ hlcoord 13, 4
+ ld de, -1
+MovePlayerPic
+ ld c, $8
+.asm_618e
+ push bc
+ push hl
+ push de
+ xor a
+ ld [hBGMapMode], a
+ ld bc, $707
+ ld a, $13
+ call Predef
+ xor a
+ ld [hBGMapThird], a
+ call WaitBGMap
+ call DelayFrame
+ pop de
+ pop hl
+ add hl, de
+ pop bc
+ dec c
+ jr nz, .asm_618e
+ ret
+
+Intro_FadeInFrontpic: ; 61ad (1:61ad)
+ ld hl, IntroFadePalettes
+ ld b, $6
+.asm_61b2
+ ld a, [hli]
+ call DmgToCgbBGPals
+ ld c, $a
+ call DelayFrames
+ dec b
+ jr nz, .asm_61b2
+ ret
+
+IntroFadePalettes:
+ db %01010100
+ db %10101000
+ db %11111100
+ db %11111000
+ db %11110100
+ db %11100100
+
+Intro_WipeInFrontpic: ; 61c5 (1:61c5)
+ ld a, $77
+ ld [hWX], a
+ call DelayFrame
+ ld a, $e4
+ call DmgToCgbBGPals
+.asm_61d1
+ call DelayFrame
+ ld a, [hWX]
+ sub $8
+ cp $ff
+ ret z
+ ld [hWX], a
+ jr .asm_61d1
+
+Intro_PrepTrainerPic: ; 61df, 61e0 (1:61df, 1:61e0)
+ ld de, $9000
+ ld a, $14
+ ld hl, $58a0
+ rst FarCall
+ xor a
+ ld [hGraphicStartTile], a
+ hlcoord 6, 4
+ ld bc, $707
+ ld a, $13
+ call Predef
+ ret
+
+ShrinkFrame: ; 61f7 (1:61f7)
+ ld de, $9000
+ ld c, $31
+ predef GetTrainerPic
+ xor a
+ ld [hGraphicStartTile], a
+ hlcoord 6, 4
+ lb bc, 7, 7
+ predef PlaceGraphic
+ ret
+
+Intro_PlacePlayerSprite: ; 6210 (1:6210)
+ ld de, PlayerIcon
+ lb bc, BANK(PlayerIcon), 12
+ ld hl, $8000
+ call Request2bpp
+ ld hl, wOAMBuffer
+ ld de, .OAMData
+ ld a, [de]
+ inc de
+ ld c, a
+.asm_6225
+ ld a, [de]
+ inc de
+ ld [hli], a
+ ld a, [de]
+ inc de
+ ld [hli], a
+ ld a, [de]
+ inc de
+ ld [hli], a
+ xor a
+ ld [hli], a
+ dec c
+ jr nz, .asm_6225
+ ret
+
+.OAMData
+ db 4
+ db 9 * 8 + 4, 9 * 8, 0
+ db 9 * 8 + 4, 10 * 8, 1
+ db 10 * 8 + 4, 9 * 8, 2
+ db 10 * 8 + 4, 10 * 8, 3
diff --git a/engine/title.asm b/engine/title.asm
new file mode 100755
index 00000000..c0c5006c
--- /dev/null
+++ b/engine/title.asm
@@ -0,0 +1,450 @@
+IntroSequence: ; 6241 (1:6241)
+ callab Copyright_GFPresents
+ jr c, StartTitleScreen
+ callab GoldSilverIntro
+StartTitleScreen:
+ call InitTitleScreen
+ call DelayFrame
+.asm_6255
+ call TitleScreenFrame
+ jr nc, .asm_6255
+ call ClearSprites
+ call ClearBGPalettes
+ ld hl, rLCDC
+ res 2, [hl]
+ call ClearTileMap
+ xor a
+ ld [hLCDCPointer], a
+ ld b, $8
+ call GetSGBLayout
+ call UpdateTimePals
+ ld a, [wce64]
+ cp $5
+ jr c, .asm_627b
+ xor a
+.asm_627b
+ ld e, a
+ ld d, $0
+ ld hl, .Jumptable
+ add hl, de
+ add hl, de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ jp [hl]
+
+.Jumptable
+ dw MainMenu_
+ dw DeleteSaveData
+ dw IntroSequence
+ dw IntroSequence
+ dw ResetClock
+
+InitTitleScreen: ; 6291 (1:6291)
+ call ClearBGPalettes
+ xor a
+ ld [wTimeOfDayPal], a
+ ld de, MUSIC_NONE
+ call PlayMusic
+ call ClearTileMap
+ call DisableLCD
+ call ClearSprites
+ xor a
+ ld [hBGMapMode], a
+ ld [hMapAnims], a
+ ld [hSCY], a
+ ld [hSCX], a
+ ld hl, $8000
+ ld bc, $2000
+ xor a
+ call ByteFill
+ callba ClearAnimatedObjectBuffer
+
+ ld hl, TitleScreenGFX1
+ ld de, $9000
+ ld a, BANK(TitleScreenGFX1)
+ call FarDecompress
+
+ ld hl, TitleScreenGFX2
+ ld de, $8800
+ ld a, BANK(TitleScreenGFX2)
+ call FarDecompress
+
+ ld hl, TitleScreenGFX4
+ ld de, $8000
+ ld a, BANK(TitleScreenGFX4)
+ call FarDecompress
+
+ ld hl, TitleScreenGFX3
+ ld de, $8f80
+ ld bc, $80
+ ld a, BANK(TitleScreenGFX3)
+ call FarCopyBytes
+
+ call Function636e
+ call Function63b6
+ ld hl, wAnimatedObjectDynamicVTileOffsets
+ xor a
+ ld [hli], a
+ ld [hl], a
+ ld hl, rLCDC
+ set 2, [hl]
+ call EnableLCD
+ xor a
+ ld hl, wce63
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
+ ld [hl], a
+ ld de, $6058
+ ld a, $2c ; HO-OH
+ call InitAnimatedObjectStruct
+ ld hl, wAnimatedObjectStruct1
+ ld de, wAnimatedObjectStruct10
+ ld bc, $a
+ call CopyBytes
+ ld hl, wAnimatedObjectStruct1
+ ld [hl], $0
+ ld hl, wc700
+ ld bc, $90
+ xor a
+ call ByteFill
+ ld a, $43
+ ld [hLCDCPointer], a
+ ld b, $c
+ call GetSGBLayout
+ call Function6341
+ ld de, MUSIC_TITLE
+ call PlayMusic
+ ret
+
+Function6341: ; 6341 (1:6341)
+ ld a, [hCGB]
+ and a
+ jr nz, .asm_6365
+ ld a, [hSGB]
+ and a
+ jr nz, .asm_6358
+ ld a, $d8
+ ld [rBGP], a
+IF DEF(GOLD)
+ ld a, $ff
+ ld [rOBP0], a
+ ld a, $f8
+ENDC
+IF DEF(SILVER)
+ ld a, $f0
+ ld [rOBP0], a
+ ld a, $f0
+ENDC
+ ld [rOBP1], a
+ ret
+
+.asm_6358
+ ld a, $e4
+ ld [rBGP], a
+IF DEF(GOLD)
+ ld a, $ff
+ ld [rOBP0], a
+ ld a, $e4
+ENDC
+IF DEF(SILVER)
+ ld a, $f0
+ ld [rOBP0], a
+ ld a, $e0
+ENDC
+ ld [rOBP1], a
+ ret
+
+.asm_6365
+ ld a, $e4
+ call DmgToCgbBGPals
+IF DEF(SILVER)
+ ld a, $e0
+ENDC
+ call DmgToCgbObjPal0
+ ret
+
+Function636e: ; 636e (1:636e)
+ ld a, [hCGB]
+ and a
+ ret z
+ ld a, $1
+ ld [rVBK], a
+ ld hl, $9800
+ ld bc, $240
+ xor a
+ call ByteFill
+ ld hl, $9800
+ ld bc, $714
+ ld a, $1
+ call Function63a6
+ ld hl, $98c5
+ ld bc, $10a
+ ld a, $3
+ call Function63a6
+ ld hl, $9980
+ ld bc, $a0
+ ld a, $4
+ call ByteFill
+ ld a, $0
+ ld [rVBK], a
+ ret
+
+Function63a6: ; 63a6 (1:63a6)
+ push bc
+ push hl
+.asm_63a8
+ ld [hli], a
+ dec c
+ jr nz, .asm_63a8
+ pop hl
+ ld bc, $20
+ add hl, bc
+ pop bc
+ dec b
+ jr nz, Function63a6
+ ret
+
+Function63b6: ; 63b6 (1:63b6)
+ ld hl, GSIntroTilemap ; $4616
+ ld de, $9800
+.asm_63bc
+ ld a, BANK(GSIntroTilemap) ; $26
+ call GetFarByte
+ cp $ff
+ jr z, .asm_63ca
+ inc hl
+ ld [de], a
+ inc de
+ jr .asm_63bc
+
+.asm_63ca
+ ld a, [hCGB]
+ and a
+ ret nz
+ ld hl, $9960
+ ld bc, $20
+ ld a, $50
+ call ByteFill
+ ret
+
+TitleScreenFrame: ; 63da (1:63da)
+ call Function63fe
+ ld a, [wce63]
+ bit 7, a
+ jr nz, .asm_63fc
+ call Function640f
+ ld a, $1
+ ld [hOAMUpdate], a
+ callba AnimatedObjects_PlayFrame
+ xor a
+ ld [hOAMUpdate], a
+ call Function64b1
+ call DelayFrame
+ and a
+ ret
+
+.asm_63fc
+ scf
+ ret
+
+Function63fe: ; 63fe (1:63fe)
+IF DEF(GOLD)
+ ld a, [hVBlankCounter]
+ and $7
+ ret nz
+ENDC
+ ld hl, wc75f
+ ld a, [hl]
+ dec a
+ ld bc, $28
+ call ByteFill
+ ret
+
+Function640f: ; 640f (1:640f)
+ ld e, a
+ ld d, $0
+ ld hl, .Jumptable ; $641b
+ add hl, de
+ add hl, de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ jp [hl]
+
+.Jumptable
+ dw Function6426
+ dw Function6434
+ dw Function648b
+
+Function6421:
+ ld hl, wce63
+ inc [hl]
+ ret
+
+Function6426:
+ ld hl, wce63
+ inc [hl]
+ ld hl, wce65
+IF DEF(GOLD)
+ ld de, $13c0
+ENDC
+IF DEF(SILVER)
+ ld de, $1140
+ENDC
+ ld [hl], e
+ inc hl
+ ld [hl], d
+ ret
+
+Function6434:
+ ld hl, wce65
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ ld a, e
+ or d
+ jr z, .asm_646b
+ dec de
+ ld [hl], d
+ dec hl
+ ld [hl], e
+ call GetJoypad
+ ld hl, hJoyDown
+ ld a, [hl]
+ and D_UP + B_BUTTON + SELECT
+ cp D_UP + B_BUTTON + SELECT
+ jr z, .asm_6460
+ ld a, [hl]
+ and D_DOWN + B_BUTTON + SELECT
+ cp D_DOWN + B_BUTTON + SELECT
+ jr z, .asm_6480
+ ld a, [hl]
+ and START | A_BUTTON
+ jr nz, .asm_645c
+ ret
+
+.asm_645c
+ ld a, $0
+ jr .asm_6462
+
+.asm_6460
+ ld a, $1
+.asm_6462
+ ld [wce64], a
+ ld hl, wce63
+ set 7, [hl]
+ ret
+
+.asm_646b
+ ld hl, wce63
+ inc [hl]
+ xor a
+ ld [wMusicFadeIDLo], a
+ ld [wMusicFadeIDHi], a
+ ld hl, wMusicFade
+ ld [hl], $8
+ ld hl, wce65
+ inc [hl]
+ ret
+
+.asm_6480
+ ld a, $4
+ ld [wce64], a
+ ld hl, wce63
+ set 7, [hl]
+ ret
+
+Function648b:
+ ld hl, wce65
+ inc [hl]
+ ld a, [wMusicFade]
+ and a
+ ret nz
+ ld a, $2
+ ld [wce64], a
+ ld hl, wce63
+ set 7, [hl]
+ ret
+
+DeleteSaveData:
+ callba DeleteSaveData_
+ jp Init
+
+ResetClock:
+ callba ResetClock_
+ jp Init
+
+Function64b1: ; 64b1 (1:64b1)
+ ld a, [wce65]
+ and $3
+ ret nz
+IF DEF(GOLD)
+ ld bc, wAnimatedObjectStruct10Index
+ ld hl, $a
+ add hl, bc
+ ld l, [hl]
+ ld h, $0
+ add hl, hl
+ add hl, hl
+ ld de, .Data_64e0
+ add hl, de
+ ld a, [wce65]
+ and $4
+ srl a
+ srl a
+ ld e, a
+ ld d, $0
+ add hl, de
+ add hl, de
+ ld a, [hli]
+ and a
+ ret z
+ ld e, a
+ ld d, [hl]
+ENDC
+
+IF DEF(SILVER)
+ ld de, $7c58
+ENDC
+ ld a, $f
+ call InitAnimatedObjectStruct
+ ret
+
+IF DEF(GOLD)
+.Data_64e0:
+ db $5c, $50, $00, $00
+ db $5c, $68, $5c, $58
+ db $5c, $68, $5c, $78
+ db $5c, $88, $5c, $78
+ db $00, $00, $5c, $78
+ db $00, $00, $5c, $58
+ENDC
+
+Copyright:
+ call ClearTileMap
+ call LoadFontsExtra
+ ld de, TitleScreenGFX5
+ ld hl, $9600
+ lb bc, BANK(TitleScreenGFX5), 30
+ call Request2bpp
+ hlcoord 2, 7
+ ld de, CopyrightString
+ jp PlaceString
+
+CopyrightString:
+ db $60, $61, $62, $63, $7a, $7b, $7c, $7d
+ db $65, $66, $67, $68, $69, $6a
+ next $60, $61, $62, $63, $7a, $7b, $7c, $7d
+ db $6b, $6c, $6d, $6e, $6f, $70, $71, $72
+ next $60, $61, $62, $63, $7a, $7b, $7c, $7d
+ db $73, $74, $75, $76, $77, $78, $79, $71, $72
+ db "@"
+
+GameInit:: ; 6545 (1:6545)
+ call ClearWindowData
+ ld a, $5
+ ld hl, $4f60
+ rst FarCall
+ jp IntroSequence
diff --git a/home.asm b/home.asm
index 2db54f6e..fcac495f 100644
--- a/home.asm
+++ b/home.asm
@@ -237,12 +237,12 @@ ReloadTilesFromBuffer_::
Function317b:: ; 317b (0:317b)
ld hl, wStringBuffer2
-.asm_317e
+CopyName2::
ld a, [de]
inc de
ld [hli], a
- cp $50
- jr nz, .asm_317e
+ cp "@"
+ jr nz, CopyName2
ret
IsInArray::
@@ -704,7 +704,7 @@ Function343a::
and a
ret
-Function3449::
+ClearBGPalettes::
call ClearPalettes
WaitBGMap:: ; 344c (0:344c)
ld a, $1
@@ -1629,7 +1629,7 @@ PrepMonFrontpic_::
INCLUDE "home/cry.asm"
PrintLevel:: ; 3a50
- ld a, [wd02a]
+ ld a, [wTempMonLevel]
ld [hl], $6e
inc hl
ld c, $2
diff --git a/home/audio.asm b/home/audio.asm
index f54445f7..0d0f1114 100644
--- a/home/audio.asm
+++ b/home/audio.asm
@@ -243,7 +243,7 @@ FadeToMapMusic::
ld a, e
ld [wMusicFadeID], a
ld a, d
- ld [wc1aa], a
+ ld [wMusicFadeID + 1], a
ld a, e
ld [wChannelsEnd], a
.asm_3eb8
diff --git a/home/copy.asm b/home/copy.asm
index 879abb60..cb1e718d 100644
--- a/home/copy.asm
+++ b/home/copy.asm
@@ -36,7 +36,7 @@ Functionda5::
callba Functionf8032
ret
-Functiondac::
+LoadFontsExtra::
callba Functionf800c
ret
diff --git a/home/copy2.asm b/home/copy2.asm
index 82cb8349..3ba05db9 100644
--- a/home/copy2.asm
+++ b/home/copy2.asm
@@ -13,7 +13,7 @@ CopyBytes:: ; 311a (0:311a)
jr nz, .asm_311e
ret
-SwapBytes:: ; 3128 (0:3128)
+GetFarByte:: ; 3128 (0:3128)
ld [wBuffer], a
ld a, [hROMBank]
push af
diff --git a/home/map.asm b/home/map.asm
index 015785c0..b6a89742 100644
--- a/home/map.asm
+++ b/home/map.asm
@@ -269,7 +269,7 @@ Function2112::
xor a
ld [hTileAnimFrame], a
callba Function1416d
- call Functiondac
+ call LoadFontsExtra
ret
Function2128::
@@ -1938,7 +1938,7 @@ GetCoordTile:: ; 2b21 (0:2b21)
inc hl
.asm_2b41
ld a, [wd0c8]
- call SwapBytes
+ call GetFarByte
ret
.asm_2b48
@@ -2104,7 +2104,7 @@ FadeToMenu::
ret
CloseSubmenu::
- call Function3449
+ call ClearBGPalettes
call ReloadTilesetAndPalettes
call UpdateSprites
call Call_ExitMenu
@@ -2112,7 +2112,7 @@ CloseSubmenu::
jr FinishExitMenu
ExitAllMenus::
- call Function3449
+ call ClearBGPalettes
call Call_ExitMenu
call ReloadTilesetAndPalettes
call UpdateSprites
@@ -2129,7 +2129,7 @@ ReturnToMapWithSpeechTextbox::
push af
ld a, $1
ld [wRTCEnabled], a
- call Function3449
+ call ClearBGPalettes
call ClearSprites
call ReloadTilesetAndPalettes
hlcoord 0, 12
@@ -2153,7 +2153,7 @@ ReloadTilesetAndPalettes:: ; 2c87 (0:2c87)
call ClearSprites
callba RefreshSprites
call Functiond9e
- call Functiondac
+ call LoadFontsExtra
ld a, [hROMBank]
push af
ld a, [wMapGroup]
@@ -2277,7 +2277,7 @@ GetAnyMapBlockdataBank:: ; 2d34 (0:2d34)
ld de, $3
add hl, de
ld a, c
- call SwapBytes
+ call GetFarByte
rst Bankswitch
pop bc
pop de
diff --git a/home/map_objects.asm b/home/map_objects.asm
index 3e67a217..aef1e3d0 100644
--- a/home/map_objects.asm
+++ b/home/map_objects.asm
@@ -451,7 +451,7 @@ GetInitialFacing::
add hl, de
add hl, de
ld a, BANK(SpriteMovementData)
- call SwapBytes
+ call GetFarByte
add a
add a
and $c
diff --git a/main.asm b/main.asm
index 74a7c647..dcfb8e47 100644
--- a/main.asm
+++ b/main.asm
@@ -48,12 +48,10 @@ PushOAM:
PushOAMEnd
INCLUDE "engine/map_objects.asm"
+INCLUDE "engine/main_menu.asm"
+INCLUDE "engine/title.asm"
-MainMenu_: ; 5a4d
IF DEF(GOLD)
- dr $5a4d, $6545
-GameInit:: ; 6545
- dr $6545, $6551
ReanchorBGMap_NoOAMUpdate:: ; 6551
dr $6551, $65cb
LoadFonts_NoOAMUpdate:: ; 65cb
@@ -69,9 +67,6 @@ CheckNPCMovementPermissions: ; 6fa0
ENDC
IF DEF(SILVER)
- dr $5a4d, $650b
-GameInit:: ; 650b
- dr $650b, $6517
ReanchorBGMap_NoOAMUpdate:: ; 6517
dr $6517, $6591
LoadFonts_NoOAMUpdate:: ; 6591
@@ -90,7 +85,9 @@ SECTION "bank2", ROMX, BANK[$2]
SwapTextboxPalettes::
dr $8000, $804f
ScrollBGMapPalettes::
- dr $804f, $8653
+ dr $804f, $861a
+SpawnPlayer:
+ dr $861a, $8653
CopyDECoordsToMapObject:
dr $8653, $86d7
CopyObjectStruct_::
@@ -104,7 +101,9 @@ Sine_e::
GetPredefPointer::
dr $8b3b, $8b5b
PredefPointers::
- dr $8b5b, $9cfd
+ dr $8b5b, $91e5
+ApplyMonOrTrainerPals:
+ dr $91e5, $9cfd
InitCGBPals:: ; 9cfd
dr $9cfd, $bc3a
@@ -146,14 +145,22 @@ ENDC
SECTION "bank4", ROMX, BANK[$4]
Function10000::
- dr $10000, $13e03
+ dr $10000, $117f1
+InitializeStartDay_:
+ dr $117f1, $11934
+Function11934:
+ dr $11934, $11aad
+NamingScreen:
+ dr $11aad, $13e03
SECTION "bank5", ROMX, BANK[$5]
dr $14000, $14032
Function14032:: ; 14032
dr $14032, $14089
StartClock:: ; 14089
- dr $14089, $140ff
+ dr $14089, $140dc
+ClockContinue: ; 140dc
+ dr $140dc, $140ff
Function140ff:: ; 140ff
dr $140ff, $1413c
Function1413c:: ; 1413c
@@ -173,7 +180,9 @@ Function14a18:: ; 14a18
Function14a2d:: ; 14a2d
dr $14a2d, $14a44
Function14a44: ; 14a44
- dr $14a44, $15484
+ dr $14a44, $14ef5
+TryLoadSaveFile: ; 14ef5
+ dr $14ef5, $15484
RunMapSetupScript::
dr $15484, $15612
Function15612:: ; 15612
@@ -207,10 +216,18 @@ InitVerticalMenuCursor_::
InitScrollingMenu::
dr $244d7, $244f3
ScrollingMenu_::
- dr $244f3, $28000
+ dr $244f3, $2692d
+InitDecorations: ; 2692d
+ dr $2692d, $28000
SECTION "banka", ROMX, BANK[$a]
- dr $28000, $2c000
+ dr $28000, $29dff
+Function29dff:
+ dr $29dff, $2a4bf
+MysteryGift_CopyReceivedDecosToPC:
+ dr $2a4bf, $2a8e0
+JumpRoamMons:
+ dr $2a8e0, $2c000
SECTION "bankb", ROMX, BANK[$b]
dr $2c000, $30000
@@ -242,7 +259,9 @@ SECTION "bank10", ROMX, BANK[$10]
dr $40000, $44000
SECTION "bank11", ROMX, BANK[$11]
- dr $44000, $48000
+ dr $44000, $44870
+DeletePartyMonMail:
+ dr $44870, $48000
SECTION "bank12", ROMX, BANK[$12]
dr $48000, $4c000
@@ -303,7 +322,13 @@ SECTION "bank22", ROMX, BANK[$22]
dr $88000, $8c000
SECTION "bank23", ROMX, BANK[$23]
- dr $8c000, $8c356
+ dr $8c000, $8c17a
+
+ResetClock_:
+ dr $8c17a, $8c310
+
+DeleteSaveData_:
+ dr $8c310, $8c356
UpdateTimeOfDayPal:: ; 8c356
dr $8c356, $8c366
@@ -321,7 +346,13 @@ Function8c3ab:: ; 8c3ab
dr $8c3ab, $8c3e9
Function8c3e9:: ; 8c3e9
- dr $8c3e9, $8d1f7
+ dr $8c3e9, $8d174
+
+ClearAnimatedObjectBuffer:
+ dr $8d174, $8d18a
+
+AnimatedObjects_PlayFrame:
+ dr $8d18a, $8d1f7
InitAnimatedObjectStruct_:: ; 8d1f7
dr $8d1f7, $8d332
@@ -330,14 +361,21 @@ ReinitAnimatedObjectFrame_:: ; 8d332
dr $8d332, $90000
SECTION "bank24", ROMX, BANK[$24]
- dr $90000, $94000
+ dr $90000, $90641
+InitClock:
+ dr $90641, $90b0f
+PrintHour:
+ dr $90b0f, $94000
SECTION "bank25", ROMX, BANK[$25]
MapTriggers:: ; 94000
dr $94000, $940ed
MapGroupPointers::
- dr $940ed, $96b89
+ dr $940ed, $965f9
+
+OverworldLoop::
+ dr $965f9, $96b89
EnableScriptMode:: ; 96b89
dr $96b89, $96b91
@@ -352,7 +390,23 @@ Function97c2a:: ; 97c2a
dr $97c2a, $98000
SECTION "bank26", ROMX, BANK[$26]
- dr $98000, $9c000
+IF DEF(GOLD)
+TitleScreenGFX1:
+ dr $98000, $98476
+TitleScreenGFX2:
+ dr $98476, $98616
+GSIntroTilemap:
+ dr $98616, $9c000
+ENDC
+
+IF DEF(SILVER)
+TitleScreenGFX1:
+ dr $98000, $98498
+TitleScreenGFX2:
+ dr $98498, $9862a
+GSIntroTilemap:
+ dr $9862a, $9c000
+ENDC
SECTION "bank27", ROMX, BANK[$27]
dr $9c000, $a0000
@@ -382,6 +436,7 @@ SECTION "bank2f", ROMX, BANK[$2f]
dr $bc000, $c0000
SECTION "bank30", ROMX, BANK[$30]
+PlayerIcon:
dr $c0000, $c4000
SECTION "bank31", ROMX, BANK[$31]
@@ -411,7 +466,32 @@ SECTION "bank38", ROMX, BANK[$38]
dr $e0000, $e4000
SECTION "bank39", ROMX, BANK[$39]
- dr $e4000, $e8000
+TitleScreenGFX5:
+ dr $e4000, $e41e0
+TitleScreenGFX3:
+IF DEF(GOLD)
+ dr $e41e0, $e4260
+TitleScreenGFX4:
+ dr $e4260, $e4608
+OptionsMenu:
+ dr $e4608, $e49a8
+Copyright_GFPresents:
+ dr $e49a8, $e4cb1
+GoldSilverIntro:
+ dr $e4cb1, $e8000
+ENDC
+
+IF DEF(SILVER)
+ dr $e41e0, $e4220
+TitleScreenGFX4:
+ dr $e4220, $e4450
+OptionsMenu:
+ dr $e4450, $e47f0
+Copyright_GFPresents:
+ dr $e47f0, $e4af9
+GoldSilverIntro:
+ dr $e4af9, $e8000
+ENDC
SECTION "bank3a", ROMX, BANK[$3a]
DisableAudio_::
@@ -449,7 +529,11 @@ Functionf8032::
dr $f8032, $fb4be
TileCollisionTable::
- dr $fb4be, $fc000
+ dr $fb4be, $fb5be
+Shrink1Pic:
+ dr $fb5be, $fb64e
+Shrink2Pic:
+ dr $fb64e, $fc000
SECTION "bank3f", ROMX, BANK[$3f]
dr $fc000, $100000
@@ -567,7 +651,31 @@ SECTION "bank64", ROMX, BANK[$64]
dr $190000, $194000
SECTION "bank65", ROMX, BANK[$65]
- dr $194000, $195b84
+ dr $194000, $195610
+
+ClockTimeUnknownText_:: ; 195610
+ dr $195610, $195624
+
+OakText1_::
+ dr $195624, $195693
+
+OakText2_::
+ dr $195693, $1956d1
+
+OakText3_:: ; 1956d1
+ dr $1956d1, $1956d3
+
+OakText4_::
+ dr $1956d3, $19573f
+
+OakText5_::
+ dr $19573f, $1957b7
+
+OakText6_::
+ dr $1957b7, $1957dd
+
+OakText7_::
+ dr $1957dd, $195b84
ObjectEventText_:: ; 195b84
dr $195b84, $195b93
diff --git a/wram.asm b/wram.asm
index 5b8bf8e6..cbd19f2e 100644
--- a/wram.asm
+++ b/wram.asm
@@ -87,10 +87,8 @@ wMusicFade:: ; c1a7
wMusicFadeCount:: ; c1a8
ds 1
wMusicFadeID::
-wc1a9::
wMusicFadeIDLo:: ; c1a9
ds 1
-wc1aa::
wMusicFadeIDHi:: ; c1aa
ds 1
ds 5
@@ -2386,6 +2384,8 @@ wd000:: ds 1 ; d000
wd001:: ds 1 ; d001
wd002:: ds 1 ; d002
wd003:: ds 1 ; d003
+
+wCurPartySpecies::
wd004:: ds 1 ; d004
wd005:: ds 1 ; d005
wd006:: ds 1 ; d006
@@ -2393,54 +2393,9 @@ wd007:: ds 1 ; d007
wd008:: ds 1 ; d008
wd009:: ds 1 ; d009
wd00a:: ds 1 ; d00a
-wd00b:: ds 1 ; d00b
-wd00c:: ds 1 ; d00c
-wd00d:: ds 1 ; d00d
-wd00e:: ds 1 ; d00e
-wd00f:: ds 1 ; d00f
-wd010:: ds 1 ; d010
-wd011:: ds 1 ; d011
-wd012:: ds 1 ; d012
-wd013:: ds 1 ; d013
-wd014:: ds 1 ; d014
-wd015:: ds 1 ; d015
-wd016:: ds 1 ; d016
-wd017:: ds 1 ; d017
-wd018:: ds 1 ; d018
-wd019:: ds 1 ; d019
-wd01a:: ds 1 ; d01a
-wd01b:: ds 1 ; d01b
-wd01c:: ds 1 ; d01c
-wd01d:: ds 1 ; d01d
-wd01e:: ds 1 ; d01e
-wd01f:: ds 1 ; d01f
-wd020:: ds 1 ; d020
-wd021:: ds 1 ; d021
-wd022:: ds 1 ; d022
-wd023:: ds 1 ; d023
-wd024:: ds 1 ; d024
-wd025:: ds 1 ; d025
-wd026:: ds 1 ; d026
-wd027:: ds 1 ; d027
-wd028:: ds 1 ; d028
-wd029:: ds 1 ; d029
-wd02a:: ds 1 ; d02a
-wd02b:: ds 1 ; d02b
-wd02c:: ds 1 ; d02c
-wd02d:: ds 1 ; d02d
-wd02e:: ds 1 ; d02e
-wd02f:: ds 1 ; d02f
-wd030:: ds 1 ; d030
-wd031:: ds 1 ; d031
-wd032:: ds 1 ; d032
-wd033:: ds 1 ; d033
-wd034:: ds 1 ; d034
-wd035:: ds 1 ; d035
-wd036:: ds 1 ; d036
-wd037:: ds 1 ; d037
-wd038:: ds 1 ; d038
-wd039:: ds 1 ; d039
-wd03a:: ds 1 ; d03a
+
+wTempMon:: party_struct wTempMon ; d00b
+
wd03b:: ds 1 ; d03b
wd03c:: ds 1 ; d03c
wd03d:: ds 1 ; d03d
@@ -2739,6 +2694,8 @@ wd195:: ds 1 ; d195
wd196:: ds 1 ; d196
wd197:: ds 1 ; d197
wd198:: ds 1 ; d198
+
+Options::
wd199:: ds 1 ; d199
wd19a:: ds 1 ; d19a
wd19b:: ds 1 ; d19b
@@ -2747,8 +2704,10 @@ wd19d:: ds 1 ; d19d
wd19e:: ds 1 ; d19e
wd19f:: ds 1 ; d19f
wd1a0:: ds 1 ; d1a0
-wd1a1:: ds 1 ; d1a1
-wd1a2:: ds 1 ; d1a2
+
+SECTION "Game Data", WRAMX, BANK[1]
+wGameData::
+wPlayerID:: dw ; d1a1
wPlayersName:: ds NAME_LENGTH ; d1a3
wMomsName:: ds NAME_LENGTH ; d1ae
@@ -2756,7 +2715,7 @@ wRivalsName:: ds NAME_LENGTH ; d1b9
wRedsName:: ds NAME_LENGTH ; d1c4
wGreensName:: ds NAME_LENGTH ; d1cf
-wd1da:: ds 1 ; d1da
+wSavedAtLeastOnce:: ds 1 ; d1da
wd1db:: ds 1 ; d1db
wd1dc:: ds 1 ; d1dc
wd1dd:: ds 1 ; d1dd
@@ -2936,17 +2895,16 @@ wd56f:: ds 1 ; d56f
wd570:: ds 1 ; d570
wStatusFlags:: ds 1 ; d571
wd572:: ds 1 ; d572
-wd573:: ds 1 ; d573
-wd574:: ds 1 ; d574
-wd575:: ds 1 ; d575
+wMoney:: ds 3 ; d573
wd576:: ds 1 ; d576
wd577:: ds 1 ; d577
wd578:: ds 1 ; d578
wd579:: ds 1 ; d579
-wd57a:: ds 1 ; d57a
-wd57b:: ds 1 ; d57b
-wd57c:: ds 1 ; d57c
-wd57d:: ds 1 ; d57d
+
+wCoins:: dw ; d57a
+wJohtoBadges:: ds 1 ; d57c
+wKantoBadges:: ds 1 ; d57d
+
wd57e:: ds 1 ; d57e
wd57f:: ds 1 ; d57f
wd580:: ds 1 ; d580
@@ -3695,9 +3653,9 @@ wd95f:: ds 1 ; d95f
wd960:: ds 1 ; d960
wd961:: ds 1 ; d961
wd962:: ds 1 ; d962
-wd963:: ds 1 ; d963
-wd964:: ds 1 ; d964
-wd965:: ds 1 ; d965
+
+wMomItemTriggerBalance:: ds 3 ; d963
+
wd966:: ds 1 ; d966
wd967:: ds 1 ; d967
wd968:: ds 1 ; d968
@@ -4281,6 +4239,8 @@ wOTPartyMon4Nickname:: ds PKMN_NAME_LENGTH ; dee0
wOTPartyMon5Nickname:: ds PKMN_NAME_LENGTH ; deeb
wOTPartyMon6Nickname:: ds PKMN_NAME_LENGTH ; def6
+wGameDataEnd::
+
SECTION "Stack", WRAMX[$dfff], BANK[1]
wStackTop::