diff options
Diffstat (limited to 'engine')
-rw-r--r-- | engine/Intro.asm | 2 | ||||
-rw-r--r-- | engine/menu/main_menu.asm | 89 |
2 files changed, 88 insertions, 3 deletions
diff --git a/engine/Intro.asm b/engine/Intro.asm index 3a60696..04497e4 100644 --- a/engine/Intro.asm +++ b/engine/Intro.asm @@ -1,6 +1,6 @@ include "constants.asm" -SECTION "engine/Intro.asm", ROMX +SECTION "engine/intro.asm", ROMX DemoStart:: ; 558D ld de, OakPic diff --git a/engine/menu/main_menu.asm b/engine/menu/main_menu.asm index 75fd00a..e32aa3d 100644 --- a/engine/menu/main_menu.asm +++ b/engine/menu/main_menu.asm @@ -1,6 +1,91 @@ INCLUDE "constants.asm" -SECTION "engine/menu/main_menu.asm", ROMX +SECTION "engine/menu/main_menu.asm@Initialize new game WRAM", ROMX +; TODO: Move this to another file when surrounding +; functions have been disassembled. +InitializeNewGameWRAM: + ld a, [wSGB] + push af + + ; Clear a lot of in-game WRAM. + + ld hl, wVirtualOAM + ld bc, (wcd3f + 1) - wVirtualOAM + xor a + call ByteFill + + ld hl, wPlayerName + ld bc, $1164 + xor a + call ByteFill + + ; Lots of other setup. + + pop af + ld [wSGB], a + + ldh a, [rLY] + ldh [hRTCRandom], a + call DelayFrame + + ldh a, [hRandomSub] + ld [wce73], a + ldh a, [rLY] + ldh [hRTCRandom], a + call DelayFrame + + ldh a, [hRandomAdd] + ld [wce74], a + + ld hl, wPartyCount + call InitializeByteList + ld hl, wUnknownListLengthda83 + call InitializeByteList + ld hl, wNumBagItems + call InitializeByteList + ld hl, wNumKeyItems + call InitializeByteList + ld hl, wUnknownListLengthd1ea + call InitializeByteList + + xor a + ld [wMonType], a + ld [wd163], a + ld [wd164], a + ld [wd15b], a + ld [wd15c], a + ld [wd15d], a + + ld a, $0B + ld [wd15e], a + + ld a, $B8 + ld [wd15f], a + + ld hl, wUnknownListLengthd1ea + ld a, ITEM_REPEL + ld [wCurItem], a + ld a, 1 + ld [wItemQuantity], a + call ReceiveItem + + ld a, MAP_SILENT_HILL + ld [wMapId], a + ld a, GROUP_SILENT_HILL + ld [wMapGroup], a + + ret + +; Initializes a 0xFF-terminated list preceded by a length to +; length 0, with an immediate terminator. +InitializeByteList: + xor a + ld [hli], a + dec a + ld [hl], a + ret + +SECTION "engine/menu/main_menu.asm@MainMenu", ROMX MainMenu:: ; 01:53CC ld hl, wd4a9 @@ -197,7 +282,7 @@ StartNewGame:: ; 555C call LoadFontExtra xor a ldh [hBGMapMode], a - callba Function52f9 + callba InitializeNewGameWRAM call ClearTileMap call ClearWindowData xor a |