ref: 32c34a36191aa4e80bbaba90463e9c07576cedd3
parent: 6cbdd245fc9332b083435476165ef86800550a08
author: Rangi <remy.oukaour+rangi42@gmail.com>
date: Fri Feb 8 10:38:31 EST 2019
Separate the 200-byte c608-to-c6d0 union and the 280-byte c6d0-to-c7e8 union
--- a/engine/rtc/timeset.asm
+++ b/engine/rtc/timeset.asm
@@ -44,7 +44,7 @@
ld hl, Text_WokeUpOak
call PrintText
ld hl, wTimeSetBuffer
- ld bc, 50
+ ld bc, wTimeSetBufferEnd - wTimeSetBuffer
xor a
call ByteFill
ld a, 10 ; default hour = 10 AM
--- a/wram.asm
+++ b/wram.asm
@@ -357,16 +357,6 @@
SECTION "Miscellaneous", WRAM0
UNION ; c608
-; unidentified uses
-wc608:: ds 53
-wc63d:: ds 5
-wc642:: ds 5
-wc647:: ds 33
-wc668:: ds 32
-wc688:: ds 2
-wc68a:: ds 4
-
-NEXTU ; c608
; surrounding tiles
; This buffer determines the size for the rest of the union;
; it uses exactly 480 bytes.
@@ -375,38 +365,15 @@
NEXTU ; c608
; box save buffer
; SaveBoxAddress uses this buffer in three steps because it
-; needs more space than is available.
+; needs more space than the buffer can hold.
wBoxPartialData:: ds 480
wBoxPartialDataEnd::
NEXTU ; c608
-; odd egg
-wOddEgg:: party_struct wOddEgg
-wOddEggName:: ds MON_NAME_LENGTH
-wOddEggOTName:: ds NAME_LENGTH
-
-NEXTU ; c608
; battle tower temp struct
wBT_OTTemp:: battle_tower_struct wBT_OTTemp
NEXTU ; c608
-; hall of fame temp struct
-wHallOfFameTemp:: hall_of_fame wHallOfFameTemp
-
-NEXTU ; c608
-; timeset temp storage
-wTimeSetBuffer::
- ds 20
-wInitHourBuffer:: db ; c61c
- ds 9
-wInitMinuteBuffer:: db ; c626
-
-NEXTU ; c608
-; link engine data
-wLink_c608:: ds 10
-wc612:: ds 10
-
-NEXTU ; c608
; battle data
wBattle::
wEnemyMoveStruct:: move_struct wEnemyMoveStruct ; c608
@@ -742,8 +709,105 @@
wBattleEnd::
NEXTU ; c608
-; trade
+; unown puzzle
+wUnownPuzzle::
ds 200
+wPuzzlePieces:: ds 6 * 6
+ ds 244
+wUnownPuzzleEnd::
+
+NEXTU ; c608
+
+; This union spans 200 bytes from c608 to c6d0.
+UNION ; c608
+; timeset temp storage
+wTimeSetBuffer::
+ ds 20
+wInitHourBuffer:: db ; c61c
+ ds 9
+wInitMinuteBuffer:: db ; c626
+ ds 19
+wTimeSetBufferEnd::
+
+NEXTU ; c608
+; hall of fame temp struct
+wHallOfFameTemp:: hall_of_fame wHallOfFameTemp
+
+NEXTU ; c608
+; link engine data
+wLink_c608:: ds 10
+wc612:: ds 10
+
+NEXTU ; c608
+; odd egg
+wOddEgg:: party_struct wOddEgg
+wOddEggName:: ds MON_NAME_LENGTH
+wOddEggOTName:: ds NAME_LENGTH
+
+NEXTU ; c608
+; mobile data
+wc608:: ds 53
+wc63d:: ds 5
+wc642:: ds 5
+wc647:: ds 33
+wc668:: ds 32
+wc688:: ds 2
+wc68a:: ds 4
+ ds 66
+
+ENDU ; c6d0
+
+; This union spans 280 bytes from c6d0 to c7e8.
+UNION ; c6d0
+; pokedex
+wPokedexDataStart:: ; c6d0
+wPokedexOrder:: ds $100 ; >= NUM_POKEMON
+wPokedexOrderEnd::
+wDexListingScrollOffset:: db ; offset of the first displayed entry from the start
+wDexListingCursor:: db ; Dex cursor
+wDexListingEnd:: db ; Last mon to display
+wDexListingHeight:: db ; number of entries displayed at once in the dex listing
+wCurDexMode:: db ; Pokedex Mode
+wDexSearchMonType1:: db ; first type to search
+wDexSearchMonType2:: db ; second type to search
+wDexSearchResultCount:: db
+wDexArrowCursorPosIndex:: db
+wDexArrowCursorDelayCounter:: db
+wDexArrowCursorBlinkCounter:: db
+wDexSearchSlowpokeFrame:: db
+wUnlockedUnownMode:: db
+wDexCurUnownIndex:: db
+wDexUnownCount:: db
+wDexConvertedMonType:: db ; mon type converted from dex search mon type
+wDexListingScrollOffsetBackup:: db
+wDexListingCursorBackup:: db
+wBackupDexListingCursor:: db
+wBackupDexListingPage:: db
+wDexCurLocation:: db
+if DEF(_CRYSTAL11)
+wPokedexStatus:: db
+wPokedexDataEnd::
+else
+wPokedexDataEnd:: ds 1
+endc
+ ds 2
+
+NEXTU ; c6d0
+; pokegear
+wPokegearPhoneLoadNameBuffer:: db ; c6d0
+wPokegearPhoneCursorPosition:: db ; c6d1
+wPokegearPhoneScrollPosition:: db ; c6d2
+wPokegearPhoneSelectedPerson:: db ; c6d3
+wPokegearPhoneSubmenuCursor:: db ; c6d4
+wPokegearMapCursorObjectPointer:: dw ; c6d5
+wPokegearMapCursorLandmark:: db ; c6d7
+wPokegearMapPlayerIconLandmark:: db ; c6d8
+wPokegearRadioChannelBank:: db ; c6d9
+wPokegearRadioChannelAddr:: dw ; c6da
+wPokegearRadioMusicPlaying:: db ; c6dc
+
+NEXTU ; c6d0
+; trade
wTrademons:: ; c6d0
wPlayerTrademon:: trademon wPlayerTrademon
wOTTrademon:: trademon wOTTrademon
@@ -754,9 +818,8 @@
wLinkTradeSendmonSpecies:: db
wLinkTradeGetmonSpecies:: db
-NEXTU ; c608
+NEXTU ; c6d0
; naming screen
- ds 200
wNamingScreenDestinationPointer:: dw ; c6d0
wNamingScreenCurNameLength:: db ; c6d2
wNamingScreenMaxNameLength:: db ; c6d3
@@ -765,24 +828,8 @@
wNamingScreenLastCharacter:: db ; c6d7
wNamingScreenStringEntryCoord:: dw ; c6d8
-NEXTU ; c608
-; pokegear
- ds 200
-wPokegearPhoneLoadNameBuffer:: db ; c6d0
-wPokegearPhoneCursorPosition:: db ; c6d1
-wPokegearPhoneScrollPosition:: db ; c6d2
-wPokegearPhoneSelectedPerson:: db ; c6d3
-wPokegearPhoneSubmenuCursor:: db ; c6d4
-wPokegearMapCursorObjectPointer:: dw ; c6d5
-wPokegearMapCursorLandmark:: db ; c6d7
-wPokegearMapPlayerIconLandmark:: db ; c6d8
-wPokegearRadioChannelBank:: db ; c6d9
-wPokegearRadioChannelAddr:: dw ; c6da
-wPokegearRadioMusicPlaying:: db ; c6dc
-
-NEXTU ; c608
+NEXTU ; c6d0
; slot machine
- ds 200
wSlots:: ; c6d0
wReel1:: slot_reel wReel1
wReel2:: slot_reel wReel2
@@ -806,9 +853,8 @@
ds 28
wSlotsEnd::
-NEXTU ; c608
+NEXTU ; c6d0
; card flip
- ds 200
wCardFlip:: ; c6d0
wDeck:: ds 24
wDeckEnd::
@@ -819,9 +865,8 @@
wDiscardPileEnd::
wCardFlipEnd::
-NEXTU ; c608
+NEXTU ; c6d0
; dummy game
- ds 200
wDummyGame:: ; c6d0
wDummyGameCards:: ds 9 * 5
wDummyGameCardsEnd::
@@ -836,52 +881,8 @@
wDummyGameNumCardsMatched:: db ; c709
wDummyGameEnd::
-NEXTU ; c608
-; unown puzzle
-wUnownPuzzle:: ; c608
- ds 200
-wPuzzlePieces:: ds 6 * 6
- ds 244
-wUnownPuzzleEnd:: ; c7e8
-
-NEXTU ; c608
-; pokedex
- ds 200
-wPokedexDataStart:: ; c6d0
-wPokedexOrder:: ds $100 ; >= NUM_POKEMON
-wPokedexOrderEnd::
-wDexListingScrollOffset:: db ; offset of the first displayed entry from the start
-wDexListingCursor:: db ; Dex cursor
-wDexListingEnd:: db ; Last mon to display
-wDexListingHeight:: db ; number of entries displayed at once in the dex listing
-wCurDexMode:: db ; Pokedex Mode
-wDexSearchMonType1:: db ; first type to search
-wDexSearchMonType2:: db ; second type to search
-wDexSearchResultCount:: db
-wDexArrowCursorPosIndex:: db
-wDexArrowCursorDelayCounter:: db
-wDexArrowCursorBlinkCounter:: db
-wDexSearchSlowpokeFrame:: db
-wUnlockedUnownMode:: db
-wDexCurUnownIndex:: db
-wDexUnownCount:: db
-wDexConvertedMonType:: db ; mon type converted from dex search mon type
-wDexListingScrollOffsetBackup:: db
-wDexListingCursorBackup:: db
-wBackupDexListingCursor:: db
-wBackupDexListingPage:: db
-wDexCurLocation:: db
-if DEF(_CRYSTAL11)
-wPokedexStatus:: db
-wPokedexDataEnd::
-else
-wPokedexDataEnd:: ds 1
-endc
- ds 2
-
-NEXTU ; c608
+NEXTU ; c6d0
; mobile data
- ds 200
wc6d0:: ds 56
wc708:: db
wc709:: db
@@ -904,6 +905,8 @@
wc7d2:: ds 1
wc7d3:: ds 1
wc7d4:: ds 1
+ENDU ; c7e8
+
ENDU ; c7e8
wUnusedC7E8:: ds 24