ref: b1dbadbdd397cb8c9e85fa48d9184949c921a8f3
parent: efd1006917b438ff683e8f702adbe6b4d0733a0f
author: Rangi <[email protected]>
date: Sun May 9 08:26:28 EDT 2021
Require rgbds 0.5.1 Use some new features: \<10> macro args, SECTION UNION, SIZEOF/STARTOF, and CHARLEN/CHARSUB
--- a/.travis.yml
+++ b/.travis.yml
@@ -9,7 +9,7 @@
HOMEBREW_NO_AUTO_UPDATE=1 brew install bison
export PATH="/usr/local/opt/bison/bin:$PATH"
fi
- git clone -b v0.5.0 --depth=1 https://github.com/gbdev/rgbds
+ git clone -b v0.5.1 --depth=1 https://github.com/gbdev/rgbds
sudo make -C rgbds install
rm -rf rgbds
)
--- a/FAQ.md
+++ b/FAQ.md
@@ -41,15 +41,15 @@
### "ERROR: `UNION` already defined"
-Download [**rgbds 0.5.0**][rgbds] or newer. Older versions will not work.
+Download [**rgbds 0.5.1**][rgbds] or newer. Older versions will not work.
### "ERROR: Macro not defined"
-Download [**rgbds 0.5.0**][rgbds] or newer. Older versions will not work.
+Download [**rgbds 0.5.1**][rgbds] or newer. Older versions will not work.
### "Expression must be 8-bit"
-Download [**rgbds 0.5.0**][rgbds] or newer. Older versions will not work.
+Download [**rgbds 0.5.1**][rgbds] or newer. Older versions will not work.
### "Segmentation fault" from `rgbgfx`
--- a/INSTALL.md
+++ b/INSTALL.md
@@ -42,9 +42,9 @@
Double click on the text that says "**Skip**" next to each package to select the most recent version to install.
-Then follow the [**rgbds** instructions](https://rgbds.gbdev.io/install/windows) for Windows with Cygwin to install **rgbds 0.5.0**.
+Then follow the [**rgbds** instructions](https://rgbds.gbdev.io/install/windows) for Windows with Cygwin to install **rgbds 0.5.1**.
-**Note:** If you already have an older rgbds, you will need to update to 0.5.0. Ignore this if you have never installed rgbds before. If a version newer than 0.5.0 does not work, try downloading 0.5.0.
+**Note:** If you already have an older rgbds, you will need to update to 0.5.1. Ignore this if you have never installed rgbds before. If a version newer than 0.5.1 does not work, try downloading 0.5.1.
Now open the **Cygwin terminal** and enter the following commands.
@@ -67,7 +67,7 @@
Open **Terminal** and prepare to enter commands.
-Then follow the [**rgbds** instructions](https://rgbds.gbdev.io/install/macos) for macOS to install **rgbds 0.5.0**.
+Then follow the [**rgbds** instructions](https://rgbds.gbdev.io/install/macos) for macOS to install **rgbds 0.5.1**.
Now you're ready to [build **pokecrystal**](#build-pokecrystal).
@@ -84,7 +84,7 @@
sudo apt-get install make gcc git
```
-Then follow the [**rgbds** instructions](https://rgbds.gbdev.io/install/source) to build **rgbds 0.5.0** from source.
+Then follow the [**rgbds** instructions](https://rgbds.gbdev.io/install/source) to build **rgbds 0.5.1** from source.
### OpenSUSE
@@ -94,7 +94,7 @@
sudo zypper install make gcc git
```
-Then follow the [**rgbds** instructions](https://rgbds.gbdev.io/install/source) to build **rgbds 0.5.0** from source.
+Then follow the [**rgbds** instructions](https://rgbds.gbdev.io/install/source) to build **rgbds 0.5.1** from source.
### Arch Linux
@@ -104,9 +104,9 @@
sudo pacman -S make gcc git rgbds
```
-Then follow the [**rgbds** instructions](https://rgbds.gbdev.io/install/arch) for Arch Linux to install **rgbds 0.5.0**.
+Then follow the [**rgbds** instructions](https://rgbds.gbdev.io/install/arch) for Arch Linux to install **rgbds 0.5.1**.
-If you want to compile and install **rgbds** yourself instead, then follow the [**rgbds** instructions](https://rgbds.gbdev.io/install/source) to build **rgbds 0.5.0** from source.
+If you want to compile and install **rgbds** yourself instead, then follow the [**rgbds** instructions](https://rgbds.gbdev.io/install/source) to build **rgbds 0.5.1** from source.
### Termux
@@ -122,7 +122,7 @@
sudo apt install rgbds
```
-If you want to compile and install **rgbds** yourself instead, then follow the [**rgbds** instructions](https://rgbds.gbdev.io/install/source) to build **rgbds 0.5.0** from source.
+If you want to compile and install **rgbds** yourself instead, then follow the [**rgbds** instructions](https://rgbds.gbdev.io/install/source) to build **rgbds 0.5.1** from source.
### Other distros
@@ -133,7 +133,7 @@
- `git`
- `rgbds`
-If `rgbds` is not available, you'll need to follow the [**rgbds** instructions](https://rgbds.gbdev.io/install/source) to build **rgbds 0.5.0** from source.
+If `rgbds` is not available, you'll need to follow the [**rgbds** instructions](https://rgbds.gbdev.io/install/source) to build **rgbds 0.5.1** from source.
Now you're ready to [build **pokecrystal**](#build-pokecrystal).
@@ -161,12 +161,12 @@
### Build with a local rgbds version
-If you have different projects that require different versions of `rgbds`, it might not be convenient to install rgbds 0.5.0 globally. Instead, you can put its files in a directory within pokecrystal, such as `pokecrystal/rgbds-0.5.0/`. Then specify it when you run `make`:
+If you have different projects that require different versions of `rgbds`, it might not be convenient to install rgbds 0.5.1 globally. Instead, you can put its files in a directory within pokecrystal, such as `pokecrystal/rgbds-0.5.1/`. Then specify it when you run `make`:
```bash
-make RGBDS=rgbds-0.5.0/
+make RGBDS=rgbds-0.5.1/
```
```bash
-make RGBDS=rgbds-0.5.0/ crystal11
+make RGBDS=rgbds-0.5.1/ crystal11
```
--- a/data/events/npc_trades.asm
+++ b/data/events/npc_trades.asm
@@ -1,9 +1,8 @@
npctrade: MACRO
; dialog set, requested mon, offered mon, nickname, dvs, item, OT ID, OT name, gender requested
db \1, \2, \3, \4, \5, \6, \7
- shift
- dw \7
- db \8, \9, 0
+ dw \8
+ db \9, \<10>, 0
ENDM
NPCTrades:
--- a/data/events/unown_walls.asm
+++ b/data/events/unown_walls.asm
@@ -1,18 +1,17 @@
unownwall: MACRO
-rept _NARG
-if \1 == "-"
-x = $64
-elif \1 >= "Y"
-x = 2 * (\1 - "Y") + $60
-elif \1 >= "Q"
-x = 2 * (\1 - "Q") + $40
-elif \1 >= "I"
-x = 2 * (\1 - "I") + $20
+for n, CHARLEN(\1)
+x = CHARSUB(\1, n + 1)
+if x == "-"
+ db $64
+elif x >= "Y"
+ db 2 * (x - "Y") + $60
+elif x >= "Q"
+ db 2 * (x - "Q") + $40
+elif x >= "I"
+ db 2 * (x - "I") + $20
else
-x = 2 * (\1 - "A")
+ db 2 * (x - "A")
endc
- db x
- shift
endr
db -1 ; end
ENDM
@@ -19,17 +18,17 @@
UnownWalls:
; UNOWNWORDS_ESCAPE
- ; db $08, $44, $04, $00, $2e, $08, -1
- unownwall "E", "S", "C", "A", "P", "E"
+ ; db $08, $44, $04, $00, $2e, $08, -1
+ unownwall "ESCAPE"
; UNOWNWORDS_LIGHT
- ; db $26, $20, $0c, $0e, $46, -1
- unownwall "L", "I", "G", "H", "T"
+ ; db $26, $20, $0c, $0e, $46, -1
+ unownwall "LIGHT"
; UNOWNWORDS_WATER
- ; db $4c, $00, $46, $08, $42, -1
- unownwall "W", "A", "T", "E", "R"
+ ; db $4c, $00, $46, $08, $42, -1
+ unownwall "WATER"
; UNOWNWORDS_HO_OH
- ; db $0e, $2c, $64, $2c, $0e, -1
- unownwall "H", "O", "-", "O", "H"
+ ; db $0e, $2c, $64, $2c, $0e, -1
+ unownwall "HO-OH"
MenuHeaders_UnownWalls:
; UNOWNWORDS_ESCAPE
--- a/data/pokemon/unown_words.asm
+++ b/data/pokemon/unown_words.asm
@@ -1,6 +1,6 @@
unownword: MACRO
-for x, STRLEN(\1)
- db STRSUB(\1, x + 1, 1) - "A" + FIRST_UNOWN_CHAR
+for n, CHARLEN(\1)
+ db CHARSUB(\1, n + 1) - "A" + FIRST_UNOWN_CHAR
endr
db -1
ENDM
--- a/engine/games/unown_puzzle.asm
+++ b/engine/games/unown_puzzle.asm
@@ -14,8 +14,8 @@
xor a
ldh [hBGMapMode], a
call DisableLCD
- ld hl, wUnownPuzzle ; includes wPuzzlePieces
- ld bc, wUnownPuzzleEnd - wUnownPuzzle
+ ld hl, STARTOF("Miscellaneous") ; includes wPuzzlePieces
+ ld bc, SIZEOF("Miscellaneous")
xor a
call ByteFill
ld hl, UnownPuzzleCursorGFX
--- a/home/text.asm
+++ b/home/text.asm
@@ -187,24 +187,22 @@
CheckDict::
dict: MACRO
+assert CHARLEN(\1) == 1
if \1 == 0
and a
else
cp \1
endc
-
if ISCONST(\2)
-; Replace a character with another one
- jr nz, ._\@
+ ; Replace a character with another one
+ jr nz, .not\@
ld a, \2
-._\@:
-else
- if STRSUB("\2", 1, 1) == "."
+.not\@:
+elif STRSUB("\2", 1, 1) == "."
; Locals can use a short jump
jr z, \2
- else
+else
jp z, \2
- endc
endc
ENDM
--- a/layout.link
+++ b/layout.link
@@ -326,6 +326,7 @@
"Sprites"
"Tilemap"
"Miscellaneous"
+ "Unused Map Buffer"
align 8
"Overworld Map"
align 4
@@ -332,6 +333,8 @@
"Video"
WRAMX 1
"WRAM 1"
+ "Miscellaneous WRAM 1"
+ "More WRAM 1"
"Enemy Party"
"Party"
WRAMX 2
--- a/macros/legacy.asm
+++ b/macros/legacy.asm
@@ -224,12 +224,7 @@
ENDM
person_event: MACRO
-_s = \1
-_y = \2
-_x = \3
-_m = \4
- shift 4
- object_event _x, _y, _s, _m, \1, \2, \3, \4, \5, \6, \7, \8, \9
+ object_event \3, \2, \1, \4, \5, \6, \7, \8, \9, \<10>, \<11>, \<12>, \<13>
ENDM
PERSONTYPE_SCRIPT EQUS "OBJECTTYPE_SCRIPT"
--- a/macros/scripts/maps.asm
+++ b/macros/scripts/maps.asm
@@ -102,21 +102,16 @@
; * if h1 == -1, h2 is treated as a time-of-day value:
; a combo of MORN, DAY, and/or NITE, or -1 to always appear
;\9: color: a PAL_NPC_* constant, or 0 for sprite default
-;\10: function: a OBJECTTYPE_* constant
-;\11: sight range: applies to OBJECTTYPE_TRAINER
-;\12: script pointer
-;\13: event flag: an EVENT_* constant, or -1 to always appear
+;\<10>: function: a OBJECTTYPE_* constant
+;\<11>: sight range: applies to OBJECTTYPE_TRAINER
+;\<12>: script pointer
+;\<13>: event flag: an EVENT_* constant, or -1 to always appear
db \3, \2 + 4, \1 + 4, \4
dn \6, \5
db \7, \8
- shift
- dn \8, \9
- shift
- db \9
- shift
- dw \9
- shift
- dw \9
+ dn \9, \<10>
+ db \<11>
+ dw \<12>, \<13>
; the dummy PlayerObjectTemplate object_event has no def_object_events
if DEF(_NUM_OBJECT_EVENTS)
{_NUM_OBJECT_EVENTS} = {_NUM_OBJECT_EVENTS} + 1
--- a/rgbdscheck.asm
+++ b/rgbdscheck.asm
@@ -1,9 +1,9 @@
MAJOR EQU 0
MINOR EQU 5
-PATCH EQU 0
+PATCH EQU 1
wrong_rgbds: MACRO
- fail "pokecrystal requires rgbds v0.5.0 or newer."
+ fail "pokecrystal requires rgbds v0.5.1 or newer."
ENDM
IF !DEF(__RGBDS_MAJOR__) || !DEF(__RGBDS_MINOR__) || !DEF(__RGBDS_PATCH__)
--- a/tools/unnamed.py
+++ b/tools/unnamed.py
@@ -82,7 +82,7 @@
elif magic == b'RGB9':
obj_ver = 10 + unpack_file("<I", f)[0]
- if obj_ver not in [6, 10, 11, 12, 13, 15, 16, 17]:
+ if obj_ver not in [6, 10, 11, 12, 13, 15, 16, 17, 18]:
print("Error: File '%s' is of an unknown format." % objfile, file=stderr)
exit(1)
@@ -89,7 +89,7 @@
num_symbols = unpack_file("<I", f)[0]
unpack_file("<I", f) # skip num sections
- if obj_ver in [16, 17]:
+ if obj_ver in [16, 17, 18]:
node_filenames = []
num_nodes = unpack_file("<I", f)[0]
for x in range(num_nodes):
@@ -109,7 +109,7 @@
sym_type = symtype(unpack_file("<B", f)[0] & 0x7f)
if sym_type == symtype.IMPORT:
continue
- if obj_ver in [16, 17]:
+ if obj_ver in [16, 17, 18]:
sym_fileno = unpack_file("<I", f)[0]
sym_filename = node_filenames[sym_fileno]
else:
--- a/wram.asm
+++ b/wram.asm
@@ -323,16 +323,17 @@
wTilemapEnd::
-SECTION "Miscellaneous", WRAM0
-
; This union spans 480 bytes.
-UNION
+SECTION UNION "Miscellaneous", WRAM0
+
; surrounding tiles
; This buffer determines the size for the rest of the union;
; it uses exactly 480 bytes.
wSurroundingTiles:: ds SURROUNDING_WIDTH * SURROUNDING_HEIGHT
-NEXTU
+
+SECTION UNION "Miscellaneous", WRAM0
+
; box save buffer
; SaveBoxAddress uses this buffer in three steps because it
; needs more space than the buffer can hold.
@@ -339,11 +340,15 @@
wBoxPartialData:: ds 480
wBoxPartialDataEnd::
-NEXTU
+
+SECTION UNION "Miscellaneous", WRAM0
+
; battle tower temp struct
wBT_OTTemp:: battle_tower_struct wBT_OTTemp
-NEXTU
+
+SECTION UNION "Miscellaneous", WRAM0
+
; battle data
wBattle::
wEnemyMoveStruct:: move_struct wEnemyMoveStruct
@@ -626,24 +631,22 @@
wEnemyJustGotFrozen:: db
wBattleEnd::
-NEXTU
-; unown puzzle
-wUnownPuzzle::
- ds 200
-wPuzzlePieces:: ds 6 * 6
- ds 244
-wUnownPuzzleEnd::
-NEXTU
+SECTION UNION "Miscellaneous", WRAM0
+
; link patch lists
wPlayerPatchLists:: ds 200
wOTPatchLists:: ds 200
-NEXTU
+
+SECTION UNION "Miscellaneous", WRAM0
+
+; mobile
wMobileTransferData:: ds 480
-NEXTU
+SECTION UNION "Miscellaneous", WRAM0
+
; This union spans 200 bytes.
UNION
; timeset temp storage
@@ -814,6 +817,10 @@
wMemoryGameNumCardsMatched:: db
NEXTU
+; unown puzzle
+wPuzzlePieces:: ds 6 * 6
+
+NEXTU
; mobile data
wc6d0:: ds 56
wc708:: db
@@ -839,8 +846,9 @@
wc7d3:: ds 2
ENDU
-ENDU
+SECTION "Unused Map Buffer", WRAM0
+
; This was a buffer for map-related pointers in the 1997 G/S prototype.
; See wMapBuffer in pokegold-spaceworld's wram.asm.
wUnusedMapBuffer:: ds 24
@@ -847,14 +855,15 @@
wUnusedMapBufferEnd::
-SECTION "Overworld Map", WRAM0
+SECTION UNION "Overworld Map", WRAM0
-UNION
; overworld map blocks
wOverworldMapBlocks:: ds 1300
wOverworldMapBlocksEnd::
-NEXTU
+
+SECTION UNION "Overworld Map", WRAM0
+
; GB Printer data
wGameboyPrinterRAM::
wGameboyPrinter2bppSource:: ds 40 tiles
@@ -888,7 +897,9 @@
ds 16
wGameboyPrinterRAMEnd::
-NEXTU
+
+SECTION UNION "Overworld Map", WRAM0
+
; bill's pc data
wBillsPCData::
wBillsPCPokemonList::
@@ -908,20 +919,27 @@
wBillsPCDataEnd::
-NEXTU
+SECTION UNION "Overworld Map", WRAM0
+
; Hall of Fame data
wHallOfFamePokemonList:: hall_of_fame wHallOfFamePokemonList
-NEXTU
+
+SECTION UNION "Overworld Map", WRAM0
+
; debug color picker
wDebugOriginalColors:: ds 256 * 4
-NEXTU
+
+SECTION UNION "Overworld Map", WRAM0
+
; raw link data
wLinkData:: ds 1300
wLinkDataEnd::
-NEXTU
+
+SECTION UNION "Overworld Map", WRAM0
+
; link data members
wLinkPlayerName:: ds NAME_LENGTH
wLinkPartyCount:: db
@@ -974,7 +992,9 @@
wLinkPatchList2:: ds SERIAL_PATCH_LIST_LENGTH
ENDU
-NEXTU
+
+SECTION UNION "Overworld Map", WRAM0
+
; link data prep
ds 1000
wCurLinkOTPartyMonTypePointer:: dw
@@ -985,7 +1005,9 @@
wLinkOTPartyMon{d:n}Type:: dw
endr
-NEXTU
+
+SECTION UNION "Overworld Map", WRAM0
+
; link mail data
ds 500
wLinkPlayerMail::
@@ -1002,13 +1024,17 @@
wLinkOTMailEnd::
ds 10
-NEXTU
+
+SECTION UNION "Overworld Map", WRAM0
+
; received link mail data
ds 500
wLinkReceivedMail:: ds MAIL_STRUCT_LENGTH * PARTY_LENGTH
wLinkReceivedMailEnd:: db
-NEXTU
+
+SECTION UNION "Overworld Map", WRAM0
+
; mystery gift data
wMysteryGiftStaging:: ds 80
@@ -1052,22 +1078,28 @@
ds 1
wMysteryGiftPlayerDataEnd::
-NEXTU
- ds $200
-UNION
-; blank credits tile buffer
-wCreditsBlankFrame2bpp:: ds 4 * 4 tiles
-wCreditsBlankFrame2bppEnd::
+SECTION UNION "Overworld Map", WRAM0
-NEXTU
+ ds $200
+
; mystery gift data
wUnusedMysteryGiftStagedDataLength:: db
wMysteryGiftMessageCount:: db
wMysteryGiftStagedDataLength:: db
-ENDU
-NEXTU
+
+SECTION UNION "Overworld Map", WRAM0
+
+ ds $200
+
+; blank credits tile buffer
+wCreditsBlankFrame2bpp:: ds 4 * 4 tiles
+wCreditsBlankFrame2bppEnd::
+
+
+SECTION UNION "Overworld Map", WRAM0
+
; mobile
ds 7
wc807:: ds 1
@@ -1096,9 +1128,9 @@
wccb9:: ds 1
wccba:: ds 90
+
if DEF(_DEBUG)
-NEXTU
-; debug room
+SECTION UNION "Overworld Map", WRAM0
; debug room RTC values
wDebugRoomRTCSec:: db
@@ -1138,9 +1170,7 @@
endc
-ENDU
-
SECTION "Video", WRAM0
UNION
@@ -1671,7 +1701,9 @@
wDefaultSpawnpoint:: db
-UNION
+
+SECTION UNION "Miscellaneous WRAM 1", WRAMX
+
; mon buffer
wBufferMonNickname:: ds MON_NAME_LENGTH
wBufferMonOT:: ds NAME_LENGTH
@@ -1680,7 +1712,9 @@
wMonOrItemNameBuffer:: ds NAME_LENGTH
ds NAME_LENGTH
-NEXTU
+
+SECTION UNION "Miscellaneous WRAM 1", WRAMX
+
; poke seer
wSeerAction:: db
wSeerNickname:: ds MON_NAME_LENGTH
@@ -1693,11 +1727,15 @@
wSeerCaughtData:: db
wSeerCaughtGender:: db
-NEXTU
+
+SECTION UNION "Miscellaneous WRAM 1", WRAMX
+
; mail temp storage
wTempMail:: mailmsg wTempMail
-NEXTU
+
+SECTION UNION "Miscellaneous WRAM 1", WRAMX
+
; bug-catching contest
wBugContestResults::
bugcontestwinner wBugContestFirstPlace
@@ -1708,7 +1746,9 @@
ds 4
wBugContestWinnerName:: ds NAME_LENGTH
-NEXTU
+
+SECTION UNION "Miscellaneous WRAM 1", WRAMX
+
; mart items
wMartItem1BCD:: ds 3
wMartItem2BCD:: ds 3
@@ -1721,7 +1761,9 @@
wMartItem9BCD:: ds 3
wMartItem10BCD:: ds 3
-NEXTU
+
+SECTION UNION "Miscellaneous WRAM 1", WRAMX
+
; town map data
wTownMapPlayerIconLandmark:: db
UNION
@@ -1733,12 +1775,16 @@
wEndFlypoint:: db
ENDU
-NEXTU
+
+SECTION UNION "Miscellaneous WRAM 1", WRAMX
+
; phone call data
wPhoneScriptBank:: db
wPhoneCaller:: dw
-NEXTU
+
+SECTION UNION "Miscellaneous WRAM 1", WRAMX
+
; radio data
wCurRadioLine:: db
wNextRadioLine:: db
@@ -1748,11 +1794,15 @@
ds 5
wRadioText:: ds 2 * SCREEN_WIDTH
-NEXTU
+
+SECTION UNION "Miscellaneous WRAM 1", WRAMX
+
; lucky number show
wLuckyNumberDigitsBuffer:: ds 5
-NEXTU
+
+SECTION UNION "Miscellaneous WRAM 1", WRAMX
+
; movement buffer data
wMovementBufferCount:: db
wMovementBufferObject:: db
@@ -1760,7 +1810,9 @@
wUnusedMovementBufferPointer:: dw
wMovementBuffer:: ds 55
-NEXTU
+
+SECTION UNION "Miscellaneous WRAM 1", WRAMX
+
; box printing
wWhichBoxMonToPrint:: db
wFinishedPrintingBox:: db
@@ -1768,18 +1820,24 @@
wBankOfBoxToPrint:: db
wWhichBoxToPrint:: db
-NEXTU
+
+SECTION UNION "Miscellaneous WRAM 1", WRAMX
+
; Unown printing
wPrintedUnownTileSource:: ds 1 tiles
wPrintedUnownTileDest:: ds 1 tiles
-NEXTU
+
+SECTION UNION "Miscellaneous WRAM 1", WRAMX
+
; trainer HUD data
ds 1
wPlaceBallsDirection:: db
wTrainerHUDTiles:: ds 4
-NEXTU
+
+SECTION UNION "Miscellaneous WRAM 1", WRAMX
+
; mobile participant nicknames
ds 4
wMobileParticipant1Nickname:: ds NAME_LENGTH_JAPANESE
@@ -1786,28 +1844,40 @@
wMobileParticipant2Nickname:: ds NAME_LENGTH_JAPANESE
wMobileParticipant3Nickname:: ds NAME_LENGTH_JAPANESE
-NEXTU
+
+SECTION UNION "Miscellaneous WRAM 1", WRAMX
+
; battle exp gain
wExperienceGained:: ds 3
-NEXTU
+
+SECTION UNION "Miscellaneous WRAM 1", WRAMX
+
; earthquake data buffer
wEarthquakeMovementDataBuffer:: ds 5
-NEXTU
+
+SECTION UNION "Miscellaneous WRAM 1", WRAMX
+
; switching items in pack
wSwitchItemBuffer:: ds 2 ; may store 1 or 2 bytes
-NEXTU
+
+SECTION UNION "Miscellaneous WRAM 1", WRAMX
+
; switching pokemon in party
; may store NAME_LENGTH, PARTYMON_STRUCT_LENGTH, or MAIL_STRUCT_LENGTH bytes
wSwitchMonBuffer:: ds 48
-NEXTU
+
+SECTION UNION "Miscellaneous WRAM 1", WRAMX
+
; giving pokemon mail
wMonMailMessageBuffer:: ds MAIL_MSG_LENGTH + 1
-NEXTU
+
+SECTION UNION "Miscellaneous WRAM 1", WRAMX
+
; bill's pc
UNION
wBoxNameBuffer:: ds BOX_NAME_LENGTH
@@ -1817,12 +1887,16 @@
wBillsPCTempBoxCount:: db
ENDU
-NEXTU
+
+SECTION UNION "Miscellaneous WRAM 1", WRAMX
+
; prof. oak's pc
wTempPokedexSeenCount:: db
wTempPokedexCaughtCount:: db
-NEXTU
+
+SECTION UNION "Miscellaneous WRAM 1", WRAMX
+
; player's room pc
UNION
wDecoNameBuffer:: ds ITEM_NAME_LENGTH
@@ -1831,13 +1905,17 @@
wOwnedDecoCategories:: ds 16
ENDU
-NEXTU
+
+SECTION UNION "Miscellaneous WRAM 1", WRAMX
+
; trade
wCurTradePartyMon:: db
wCurOTTradePartyMon:: db
wBufferTrademonNickname:: ds MON_NAME_LENGTH
-NEXTU
+
+SECTION UNION "Miscellaneous WRAM 1", WRAMX
+
; link battle record data
wLinkBattleRecordBuffer::
wLinkBattleRecordName:: ds NAME_LENGTH
@@ -1845,7 +1923,9 @@
wLinkBattleRecordLosses:: dw
wLinkBattleRecordDraws:: dw
-NEXTU
+
+SECTION UNION "Miscellaneous WRAM 1", WRAMX
+
; miscellaneous
wTempDayOfWeek::
wPrevPartyLevel::
@@ -1858,13 +1938,17 @@
wSuicuneFrame::
db
-NEXTU
+
+SECTION UNION "Miscellaneous WRAM 1", WRAMX
+
; debug color picker
wDebugColorIsTrainer:: db
wDebugColorIsShiny:: db
wDebugColorCurTMHM:: db
-NEXTU
+
+SECTION UNION "Miscellaneous WRAM 1", WRAMX
+
; mobile?
wd002:: ds 1
wd003:: ds 1
@@ -1892,9 +1976,11 @@
wd034:: ds 2
wd036:: ds 2
-NEXTU
-; Every previous NEXTU takes up 60 or fewer bytes,
-; except the initial "mon buffer" UNION.
+
+SECTION UNION "Miscellaneous WRAM 1", WRAMX
+
+; Every previous SECTION UNION takes up 60 or fewer bytes,
+; except the initial "mon buffer" one.
ds 60
UNION
@@ -2018,8 +2104,10 @@
ENDU
ds 23
-ENDU
+
+SECTION "More WRAM 1", WRAMX
+
wTMHMMoveNameBackup:: ds MOVE_NAME_LENGTH
wStringBuffer1:: ds STRING_BUFFER_LENGTH
@@ -2928,7 +3016,6 @@
ds 2
-; 8 chars + $50
wBoxNames:: ds BOX_NAME_LENGTH * NUM_BOXES
wCelebiEvent::