shithub: pokecrystal

Download patch

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