diff options
author | Rangi <remy.oukaour+rangi42@gmail.com> | 2021-05-09 12:26:28 -0400 |
---|---|---|
committer | Rangi <remy.oukaour+rangi42@gmail.com> | 2021-05-09 12:26:28 -0400 |
commit | b1dbadbdd397cb8c9e85fa48d9184949c921a8f3 (patch) | |
tree | a14477529739a4c5262cc5fbfa08a0ac4bb8122d | |
parent | efd1006917b438ff683e8f702adbe6b4d0733a0f (diff) |
Require rgbds 0.5.1
Use some new features: \<10> macro args, SECTION UNION, SIZEOF/STARTOF, and CHARLEN/CHARSUB
-rw-r--r-- | .travis.yml | 2 | ||||
-rw-r--r-- | FAQ.md | 6 | ||||
-rw-r--r-- | INSTALL.md | 24 | ||||
-rw-r--r-- | data/events/npc_trades.asm | 5 | ||||
-rw-r--r-- | data/events/unown_walls.asm | 39 | ||||
-rw-r--r-- | data/pokemon/unown_words.asm | 4 | ||||
-rw-r--r-- | engine/games/unown_puzzle.asm | 4 | ||||
-rw-r--r-- | home/text.asm | 14 | ||||
-rw-r--r-- | layout.link | 3 | ||||
-rw-r--r-- | macros/legacy.asm | 7 | ||||
-rw-r--r-- | macros/scripts/maps.asm | 19 | ||||
-rw-r--r-- | rgbdscheck.asm | 4 | ||||
-rwxr-xr-x | tools/unnamed.py | 6 | ||||
-rw-r--r-- | wram.asm | 235 |
14 files changed, 224 insertions, 148 deletions
diff --git a/.travis.yml b/.travis.yml index bfcae2226..f7def85aa 100644 --- a/.travis.yml +++ b/.travis.yml @@ -9,7 +9,7 @@ install: 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 ) @@ -41,15 +41,15 @@ You need to install `gcc`. If you're using Cygwin, re-run its setup, and at "Sel ### "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` diff --git a/INSTALL.md b/INSTALL.md index 9bfbb8fd6..01e9f4c32 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -42,9 +42,9 @@ Run setup and leave the default settings. At the "**Select Packages**" step, cho 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 @@ Install [**Homebrew**](https://brew.sh/). Follow the official instructions. 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 @@ To install the software required for **pokecrystal**: 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 @@ To install the software required for **pokecrystal**: 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 @@ To install the software required for **pokecrystal**: 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 @@ To install **rgbds**: 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 @@ If your distro is not listed here, try to find the required software in its repo - `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 @@ make crystal11 ### 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 ``` diff --git a/data/events/npc_trades.asm b/data/events/npc_trades.asm index 543a50b1e..c97e4ea4a 100644 --- 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: diff --git a/data/events/unown_walls.asm b/data/events/unown_walls.asm index 624b1e678..e19765831 100644 --- a/data/events/unown_walls.asm +++ b/data/events/unown_walls.asm @@ -1,35 +1,34 @@ 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 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 diff --git a/data/pokemon/unown_words.asm b/data/pokemon/unown_words.asm index 7c41e19a3..11ddd46b0 100644 --- 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 diff --git a/engine/games/unown_puzzle.asm b/engine/games/unown_puzzle.asm index d230c5347..41b330552 100644 --- a/engine/games/unown_puzzle.asm +++ b/engine/games/unown_puzzle.asm @@ -14,8 +14,8 @@ _UnownPuzzle: 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 diff --git a/home/text.asm b/home/text.asm index 92cecf5b3..18eb1743c 100644 --- a/home/text.asm +++ b/home/text.asm @@ -187,24 +187,22 @@ NextChar:: 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 diff --git a/layout.link b/layout.link index 315864c37..763788d5f 100644 --- a/layout.link +++ b/layout.link @@ -326,12 +326,15 @@ WRAM0 "Sprites" "Tilemap" "Miscellaneous" + "Unused Map Buffer" align 8 "Overworld Map" align 4 "Video" WRAMX 1 "WRAM 1" + "Miscellaneous WRAM 1" + "More WRAM 1" "Enemy Party" "Party" WRAMX 2 diff --git a/macros/legacy.asm b/macros/legacy.asm index 01df8e87e..68566c75e 100644 --- a/macros/legacy.asm +++ b/macros/legacy.asm @@ -224,12 +224,7 @@ signpost: MACRO 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" diff --git a/macros/scripts/maps.asm b/macros/scripts/maps.asm index fc6d201b6..0e952c764 100644 --- a/macros/scripts/maps.asm +++ b/macros/scripts/maps.asm @@ -102,21 +102,16 @@ object_event: MACRO ; * 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 diff --git a/rgbdscheck.asm b/rgbdscheck.asm index f1e348a86..d32d2de15 100644 --- 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__) diff --git a/tools/unnamed.py b/tools/unnamed.py index 33177d521..c5d032083 100755 --- a/tools/unnamed.py +++ b/tools/unnamed.py @@ -82,14 +82,14 @@ for objfile in objects: 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) 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 @@ for objfile in objects: 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: @@ -323,27 +323,32 @@ wTilemap:: 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. 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,23 +631,21 @@ wPlayerJustGotFrozen:: db 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 @@ -814,6 +817,10 @@ wMemoryGameCounter:: db wMemoryGameNumCardsMatched:: db NEXTU +; unown puzzle +wPuzzlePieces:: ds 6 * 6 + +NEXTU ; mobile data wc6d0:: ds 56 wc708:: db @@ -839,7 +846,8 @@ wc7d2:: ds 1 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. @@ -847,14 +855,15 @@ wUnusedMapBuffer:: ds 24 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 @@ wPrinterExposureTime:: db ds 16 wGameboyPrinterRAMEnd:: -NEXTU + +SECTION UNION "Overworld Map", WRAM0 + ; bill's pc data wBillsPCData:: wBillsPCPokemonList:: @@ -908,20 +919,27 @@ wBillsPC_MonHasMail:: db 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 @@ wLinkPatchList1:: ds SERIAL_PATCH_LIST_LENGTH wLinkPatchList2:: ds SERIAL_PATCH_LIST_LENGTH ENDU -NEXTU + +SECTION UNION "Overworld Map", WRAM0 + ; link data prep ds 1000 wCurLinkOTPartyMonTypePointer:: dw @@ -985,7 +1005,9 @@ for n, 1, PARTY_LENGTH + 1 wLinkOTPartyMon{d:n}Type:: dw endr -NEXTU + +SECTION UNION "Overworld Map", WRAM0 + ; link mail data ds 500 wLinkPlayerMail:: @@ -1002,13 +1024,17 @@ wOTPlayerMailPatchSet:: ds 103 + SERIAL_MAIL_PREAMBLE_LENGTH 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 @@ wMysteryGiftPlayerBackupItem:: db ds 1 wMysteryGiftPlayerDataEnd:: -NEXTU - ds $200 -UNION -; blank credits tile buffer -wCreditsBlankFrame2bpp:: ds 4 * 4 tiles -wCreditsBlankFrame2bppEnd:: +SECTION UNION "Overworld Map", WRAM0 + + ds $200 -NEXTU ; 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 @@ wccb8:: ds 1 wccb9:: ds 1 wccba:: ds 90 + if DEF(_DEBUG) -NEXTU -; debug room +SECTION UNION "Overworld Map", WRAM0 ; debug room RTC values wDebugRoomRTCSec:: db @@ -1138,8 +1170,6 @@ ENDU endc -ENDU - SECTION "Video", WRAM0 @@ -1671,7 +1701,9 @@ wBetaTitleSequenceOpeningType:: wDefaultSpawnpoint:: db -UNION + +SECTION UNION "Miscellaneous WRAM 1", WRAMX + ; mon buffer wBufferMonNickname:: ds MON_NAME_LENGTH wBufferMonOT:: ds NAME_LENGTH @@ -1680,7 +1712,9 @@ wBufferMon:: party_struct wBufferMon 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 @@ wSeerCaughtLevel:: db 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 @@ wBugContestWinnersEnd:: 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 @@ wMartItem8BCD:: ds 3 wMartItem9BCD:: ds 3 wMartItem10BCD:: ds 3 -NEXTU + +SECTION UNION "Miscellaneous WRAM 1", WRAMX + ; town map data wTownMapPlayerIconLandmark:: db UNION @@ -1733,12 +1775,16 @@ wStartFlypoint:: db 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 @@ wOaksPKMNTalkSegmentCounter:: db 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 @@ wUnusedMovementBufferBank:: db wUnusedMovementBufferPointer:: dw wMovementBuffer:: ds 55 -NEXTU + +SECTION UNION "Miscellaneous WRAM 1", WRAMX + ; box printing wWhichBoxMonToPrint:: db wFinishedPrintingBox:: db @@ -1768,46 +1820,64 @@ wAddrOfBoxToPrint:: dw 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 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 @@ wBillsPCTempListIndex:: db 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 @@ wNumOwnedDecoCategories:: db 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 @@ wLinkBattleRecordWins:: dw wLinkBattleRecordLosses:: dw wLinkBattleRecordDraws:: dw -NEXTU + +SECTION UNION "Miscellaneous WRAM 1", WRAMX + ; miscellaneous wTempDayOfWeek:: wPrevPartyLevel:: @@ -1858,13 +1938,17 @@ wApricorns:: 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 @@ wd033:: ds 1 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,7 +2104,9 @@ wPoisonStepDataEnd:: ENDU ds 23 -ENDU + + +SECTION "More WRAM 1", WRAMX wTMHMMoveNameBackup:: ds MOVE_NAME_LENGTH @@ -2928,7 +3016,6 @@ wCurBox:: db ds 2 -; 8 chars + $50 wBoxNames:: ds BOX_NAME_LENGTH * NUM_BOXES wCelebiEvent:: |