diff options
author | Rangi <remy.oukaour+rangi42@gmail.com> | 2021-04-20 21:17:09 -0400 |
---|---|---|
committer | Rangi <remy.oukaour+rangi42@gmail.com> | 2021-04-20 21:17:09 -0400 |
commit | 40dbe0df049a51bd2f0553c51579b80009072ea6 (patch) | |
tree | e029d3b7f8da22868b85dc5d349be3e7c50a6123 | |
parent | 2449cd915436fd204a4096620db99fb5f9dde8fd (diff) |
Use rgbds 0.5.0
-rw-r--r-- | .travis.yml | 6 | ||||
-rw-r--r-- | INSTALL.md | 30 | ||||
-rw-r--r-- | constants/item_constants.asm | 29 | ||||
-rw-r--r-- | constants/map_constants.asm | 2 | ||||
-rw-r--r-- | data/moves/tmhm_moves.asm | 24 | ||||
-rw-r--r-- | data/pokemon/base_stats.asm | 20 | ||||
-rw-r--r-- | data/pokemon/unown_words.asm | 6 | ||||
-rw-r--r-- | engine/events/print_unown_2.asm | 16 | ||||
-rw-r--r-- | engine/games/unown_puzzle.asm | 4 | ||||
-rw-r--r-- | engine/menus/intro_menu.asm | 3 | ||||
-rw-r--r-- | engine/overworld/player_object.asm | 1 | ||||
-rw-r--r-- | engine/pokegear/pokegear.asm | 6 | ||||
-rw-r--r-- | engine/pokemon/bills_pc.asm | 6 | ||||
-rw-r--r-- | macros/asserts.asm | 48 | ||||
-rw-r--r-- | macros/data.asm | 14 | ||||
-rw-r--r-- | macros/scripts/maps.asm | 69 | ||||
-rw-r--r-- | rgbdscheck.asm | 26 | ||||
-rwxr-xr-x | tools/unnamed.py | 6 |
18 files changed, 116 insertions, 200 deletions
diff --git a/.travis.yml b/.travis.yml index 251cd927..b26c13d0 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,7 +5,11 @@ os: install: - |- ( cd - git clone -b v0.4.2 --depth=1 https://github.com/gbdev/rgbds + if [ "$TRAVIS_OS_NAME" = osx ]; then + 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 sudo make -C rgbds install rm -rf rgbds ) @@ -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.4.2**. +Then follow the [**rgbds** instructions](https://rgbds.gbdev.io/install/windows) for Windows with Cygwin to install **rgbds 0.5.0**. -**Note:** If you already have an older rgbds, you will need to update to 0.4.2. Ignore this if you have never installed rgbds before. If a version newer than 0.4.2 does not work, try downloading 0.4.2. +**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. 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.4.2**. +Then follow the [**rgbds** instructions](https://rgbds.gbdev.io/install/macos) for macOS to install **rgbds 0.5.0**. Now you're ready to [build **pokegold**](#build-pokegold). @@ -84,7 +84,7 @@ To install the software required for **pokegold**: sudo apt-get install make gcc git ``` -Then follow the [**rgbds** instructions](https://rgbds.gbdev.io/install/source) to build **rgbds 0.4.2** from source. +Then follow the [**rgbds** instructions](https://rgbds.gbdev.io/install/source) to build **rgbds 0.5.0** from source. ### OpenSUSE @@ -94,7 +94,7 @@ To install the software required for **pokegold**: sudo zypper install make gcc git ``` -Then follow the [**rgbds** instructions](https://rgbds.gbdev.io/install/source) to build **rgbds 0.4.2** from source. +Then follow the [**rgbds** instructions](https://rgbds.gbdev.io/install/source) to build **rgbds 0.5.0** from source. ### Arch Linux @@ -104,9 +104,9 @@ To install the software required for **pokegold**: 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.4.2**. +Then follow the [**rgbds** instructions](https://rgbds.gbdev.io/install/arch) for Arch Linux to install **rgbds 0.5.0**. -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.4.2** 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.0** 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.4.2** 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.0** 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.4.2** 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.0** from source. Now you're ready to [build **pokegold**](#build-pokegold). @@ -164,3 +164,15 @@ To build both ROMs: ```bash make ``` + +### 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 pokegold, such as `pokegold/rgbds-0.5.0/`. Then specify it when you run `make`: + +```bash +make RGBDS=rgbds-0.5.0/ gold +``` + +```bash +make RGBDS=rgbds-0.5.0/ silver +``` diff --git a/constants/item_constants.asm b/constants/item_constants.asm index 519104f8..d618b96f 100644 --- a/constants/item_constants.asm +++ b/constants/item_constants.asm @@ -210,22 +210,13 @@ add_tm: MACRO ; - TM_\1: the item id, starting at $bf ; - \1_TMNUM: the learnable TM/HM flag, starting at 1 ; - TM##_MOVE: alias for the move id, equal to the value of \1 -; The first usage also defines TM01 as the first TM item id. -if !DEF(TM01) -TM01 EQU const_value -endc -if __tmhm_value__ < 10 -MOVE_FOR_TM EQUS "TM0{d:__tmhm_value__}_MOVE" -else -MOVE_FOR_TM EQUS "TM{d:__tmhm_value__}_MOVE" -endc -MOVE_FOR_TM = \1 -PURGE MOVE_FOR_TM const TM_\1 +TM{02d:__tmhm_value__}_MOVE = \1 add_tmnum \1 ENDM ; see data/moves/tmhm_moves.asm for moves +TM01 EQU const_value add_tm DYNAMICPUNCH ; bf add_tm HEADBUTT ; c0 add_tm CURSE ; c1 @@ -285,23 +276,13 @@ add_hm: MACRO ; - HM_\1: the item id, starting at $f3 ; - \1_TMNUM: the learnable TM/HM flag, starting at 51 ; - HM##_MOVE: alias for the move id, equal to the value of \1 -; The first usage also defines HM01 as the first TM item id. -if !DEF(HM01) -HM01 EQU const_value -endc -HM_VALUE EQU __tmhm_value__ - NUM_TMS -if HM_VALUE < 10 -MOVE_FOR_HM EQUS "HM0{d:HM_VALUE}_MOVE" -else -MOVE_FOR_HM EQUS "HM{d:HM_VALUE}_MOVE" -endc -MOVE_FOR_HM = \1 -PURGE MOVE_FOR_HM -PURGE HM_VALUE const HM_\1 +HM_VALUE = __tmhm_value__ - NUM_TMS +HM{02d:HM_VALUE}_MOVE = \1 add_tmnum \1 ENDM +HM01 EQU const_value add_hm CUT ; f3 add_hm FLY ; f4 add_hm SURF ; f5 diff --git a/constants/map_constants.asm b/constants/map_constants.asm index 4869b070..d5ae2fd2 100644 --- a/constants/map_constants.asm +++ b/constants/map_constants.asm @@ -18,7 +18,7 @@ __map_value__ = __map_value__ + 1 ENDM endgroup: MACRO -CURRENT_NUM_MAPGROUP_MAPS EQU __map_value__ - 1 +{CURRENT_NUM_MAPGROUP_MAPS} EQU __map_value__ - 1 PURGE CURRENT_NUM_MAPGROUP_MAPS ENDM diff --git a/data/moves/tmhm_moves.asm b/data/moves/tmhm_moves.asm index 47e92c59..43b6f255 100644 --- a/data/moves/tmhm_moves.asm +++ b/data/moves/tmhm_moves.asm @@ -6,30 +6,14 @@ TMHMMoves: table_width 1, TMHMMoves ; TMs -n = 1 -rept NUM_TMS -if n < 10 -MOVE_FOR_TM EQUS "TM0{d:n}_MOVE" -else -MOVE_FOR_TM EQUS "TM{d:n}_MOVE" -endc - db MOVE_FOR_TM -PURGE MOVE_FOR_TM -n = n + 1 +for n, 1, NUM_TMS + 1 + db TM{02d:n}_MOVE endr assert_table_length NUM_TMS ; HMs -n = 1 -rept NUM_HMS -if n < 10 -MOVE_FOR_HM EQUS "HM0{d:n}_MOVE" -else -MOVE_FOR_HM EQUS "HM{d:n}_MOVE" -endc - db MOVE_FOR_HM -PURGE MOVE_FOR_HM -n = n + 1 +for n, 1, NUM_HMS + 1 + db HM{02d:n}_MOVE endr assert_table_length NUM_TM_HM diff --git a/data/pokemon/base_stats.asm b/data/pokemon/base_stats.asm index 4b4bdfa4..358bde06 100644 --- a/data/pokemon/base_stats.asm +++ b/data/pokemon/base_stats.asm @@ -1,33 +1,23 @@ ; used in data/pokemon/base_stats/*.asm tmhm: MACRO ; initialize bytes to 0 -n = 0 -rept (NUM_TM_HM + 7) / 8 -_TM_BYTE EQUS "_tm{d:n}" -_TM_BYTE = 0 -PURGE _TM_BYTE -n = n + 1 +for n, (NUM_TM_HM + 7) / 8 +_tm{d:n} = 0 endr ; set bits of bytes rept _NARG if DEF(\1_TMNUM) n = (\1_TMNUM - 1) / 8 i = (\1_TMNUM - 1) % 8 -_TM_BYTE EQUS "_tm{d:n}" -_TM_BYTE = _TM_BYTE | (1 << i) -PURGE _TM_BYTE +_tm{d:n} = _tm{d:n} | (1 << i) else fail "\1 is not a TM or HM move" endc shift endr ; output bytes -n = 0 -rept (NUM_TM_HM + 7) / 8 -_TM_BYTE EQUS "_tm{d:n}" - db _TM_BYTE -PURGE _TM_BYTE -n = n + 1 +for n, (NUM_TM_HM + 7) / 8 + db _tm{d:n} endr ENDM diff --git a/data/pokemon/unown_words.asm b/data/pokemon/unown_words.asm index 329a6aae..7c41e19a 100644 --- a/data/pokemon/unown_words.asm +++ b/data/pokemon/unown_words.asm @@ -1,8 +1,6 @@ unownword: MACRO -x = 1 -rept STRLEN(\1) - db STRSUB(\1, x, 1) - "A" + FIRST_UNOWN_CHAR -x = x + 1 +for x, STRLEN(\1) + db STRSUB(\1, x + 1, 1) - "A" + FIRST_UNOWN_CHAR endr db -1 ENDM diff --git a/engine/events/print_unown_2.asm b/engine/events/print_unown_2.asm index 4926bf53..aae80b11 100644 --- a/engine/events/print_unown_2.asm +++ b/engine/events/print_unown_2.asm @@ -95,17 +95,9 @@ RotateUnownFrontpic: jr nz, .loop_count ret -gbprinterrect: MACRO -y = 0 -rept \1 -x = \1 * (\2 - 1) + y -rept \2 - dw wGameboyPrinter2bppSource tile x -x = x - \2 +UnownPrinter_GBPrinterRectangle: +for y, 7 +for x, 7 - 1, -1, -1 + dw wGameboyPrinter2bppSource tile (x * 7 + y) endr -y = y + 1 endr -ENDM - -UnownPrinter_GBPrinterRectangle: - gbprinterrect 7, 7 diff --git a/engine/games/unown_puzzle.asm b/engine/games/unown_puzzle.asm index daf98738..d230c534 100644 --- a/engine/games/unown_puzzle.asm +++ b/engine/games/unown_puzzle.asm @@ -721,10 +721,8 @@ ConvertLoadedPuzzlePieces: ret .EnlargedTiles: -x = 0 -rept 16 +for x, 16 db ((x & %1000) * %11000) + ((x & %0100) * %1100) + ((x & %0010) * %110) + ((x & %0001) * %11) -x = x + 1 endr UnownPuzzle_AddPuzzlePieceBorders: diff --git a/engine/menus/intro_menu.asm b/engine/menus/intro_menu.asm index 9b744f72..a791b6d3 100644 --- a/engine/menus/intro_menu.asm +++ b/engine/menus/intro_menu.asm @@ -1115,8 +1115,7 @@ if \1 == 0 && \2 == 0 _dx = 0 endc dbpixel \1, \2, _dx, 0 - shift - shift + shift 2 endr ENDM ; frame 0 y, x; frame 1 y, x diff --git a/engine/overworld/player_object.asm b/engine/overworld/player_object.asm index f5a0e0be..0005f28e 100644 --- a/engine/overworld/player_object.asm +++ b/engine/overworld/player_object.asm @@ -40,7 +40,6 @@ PlayerObjectTemplate: ; A dummy map object used to initialize the player object. ; Shorter than the actual amount copied by two bytes. ; Said bytes seem to be unused. -_NUM_OBJECT_EVENTS = 0 object_event -4, -4, SPRITE_CHRIS, SPRITEMOVEDATA_PLAYER, 15, 15, -1, -1, 0, OBJECTTYPE_SCRIPT, 0, 0, -1 CopyDECoordsToMapObject:: diff --git a/engine/pokegear/pokegear.asm b/engine/pokegear/pokegear.asm index b369aa01..08d8a3ae 100644 --- a/engine/pokegear/pokegear.asm +++ b/engine/pokegear/pokegear.asm @@ -990,11 +990,9 @@ PokegearPhone_GetDPad: PokegearPhone_UpdateCursor: ld a, " " -x = 4 -rept PHONE_DISPLAY_HEIGHT - hlcoord 1, x +for y, PHONE_DISPLAY_HEIGHT + hlcoord 1, 4 + y * 2 ld [hl], a -x = x + 2 endr hlcoord 1, 4 ld a, [wPokegearPhoneCursorPosition] diff --git a/engine/pokemon/bills_pc.asm b/engine/pokemon/bills_pc.asm index 937bac8e..05251b43 100644 --- a/engine/pokemon/bills_pc.asm +++ b/engine/pokemon/bills_pc.asm @@ -2258,10 +2258,8 @@ _ChangeBox_MenuHeader: .Boxes: db NUM_BOXES -x = 1 -rept NUM_BOXES - db x -x = x + 1 +for x, NUM_BOXES + db x + 1 endr db -1 diff --git a/macros/asserts.asm b/macros/asserts.asm index 04c039ec..f1c5cfdc 100644 --- a/macros/asserts.asm +++ b/macros/asserts.asm @@ -2,33 +2,27 @@ table_width: MACRO CURRENT_TABLE_WIDTH = \1 -if DEF(CURRENT_TABLE_START) -PURGE CURRENT_TABLE_START -endc if _NARG == 2 -CURRENT_TABLE_START EQUS "\2" +REDEF CURRENT_TABLE_START EQUS "\2" else -CURRENT_TABLE_START EQUS "._table_width\@" -CURRENT_TABLE_START: +REDEF CURRENT_TABLE_START EQUS "._table_width\@" +{CURRENT_TABLE_START}: endc ENDM assert_table_length: MACRO x = \1 - assert x * CURRENT_TABLE_WIDTH == @ - CURRENT_TABLE_START, \ + assert x * CURRENT_TABLE_WIDTH == @ - {CURRENT_TABLE_START}, \ "{CURRENT_TABLE_START}: expected {d:x} entries, each {d:CURRENT_TABLE_WIDTH} bytes" ENDM list_start: MACRO list_index = 0 -if DEF(CURRENT_LIST_START) -PURGE CURRENT_LIST_START -endc if _NARG == 1 -CURRENT_LIST_START EQUS "\1" +REDEF CURRENT_LIST_START EQUS "\1" else -CURRENT_LIST_START EQUS "._list_start\@" -CURRENT_LIST_START: +REDEF CURRENT_LIST_START EQUS "._list_start\@" +{CURRENT_LIST_START}: endc ENDM @@ -46,38 +40,26 @@ ENDM def_grass_wildmons: MACRO ;\1: map id -if DEF(CURRENT_GRASS_WILDMONS_MAP) -PURGE CURRENT_GRASS_WILDMONS_MAP -endc -if DEF(CURRENT_GRASS_WILDMONS_LABEL) -PURGE CURRENT_GRASS_WILDMONS_LABEL -endc -CURRENT_GRASS_WILDMONS_MAP EQUS "\1" -CURRENT_GRASS_WILDMONS_LABEL EQUS "._def_grass_wildmons_\1" -CURRENT_GRASS_WILDMONS_LABEL: +REDEF CURRENT_GRASS_WILDMONS_MAP EQUS "\1" +REDEF CURRENT_GRASS_WILDMONS_LABEL EQUS "._def_grass_wildmons_\1" +{CURRENT_GRASS_WILDMONS_LABEL}: map_id \1 ENDM end_grass_wildmons: MACRO - assert GRASS_WILDDATA_LENGTH == @ - CURRENT_GRASS_WILDMONS_LABEL, \ + assert GRASS_WILDDATA_LENGTH == @ - {CURRENT_GRASS_WILDMONS_LABEL}, \ "def_grass_wildmons {CURRENT_GRASS_WILDMONS_MAP}: expected {d:GRASS_WILDDATA_LENGTH} bytes" ENDM def_water_wildmons: MACRO ;\1: map id -if DEF(CURRENT_WATER_WILDMONS_MAP) -PURGE CURRENT_WATER_WILDMONS_MAP -endc -if DEF(CURRENT_WATER_WILDMONS_LABEL) -PURGE CURRENT_WATER_WILDMONS_LABEL -endc -CURRENT_WATER_WILDMONS_MAP EQUS "\1" -CURRENT_WATER_WILDMONS_LABEL EQUS "._def_water_wildmons_\1" -CURRENT_WATER_WILDMONS_LABEL: +REDEF CURRENT_WATER_WILDMONS_MAP EQUS "\1" +REDEF CURRENT_WATER_WILDMONS_LABEL EQUS "._def_water_wildmons_\1" +{CURRENT_WATER_WILDMONS_LABEL}: map_id \1 ENDM end_water_wildmons: MACRO - assert WATER_WILDDATA_LENGTH == @ - CURRENT_WATER_WILDMONS_LABEL, \ + assert WATER_WILDDATA_LENGTH == @ - {CURRENT_WATER_WILDMONS_LABEL}, \ "def_water_wildmons {CURRENT_WATER_WILDMONS_MAP}: expected {d:WATER_WILDDATA_LENGTH} bytes" ENDM diff --git a/macros/data.asm b/macros/data.asm index a2b1f23c..69c5ea5f 100644 --- a/macros/data.asm +++ b/macros/data.asm @@ -70,24 +70,16 @@ rept _NARG / 4 endr ENDM -dx: MACRO -x = 8 * ((\1) - 1) -rept \1 - db ((\2) >> x) & $ff -x = x - 8 -endr -ENDM - dt: MACRO ; three-byte (big-endian) - dx 3, \1 + db LOW((\1) >> 16), HIGH(\1), LOW(\1) ENDM dd: MACRO ; four-byte (big-endian) - dx 4, \1 + db HIGH((\1) >> 16), LOW((\1) >> 16), HIGH(\1), LOW(\1) ENDM bigdw: MACRO ; big-endian word - dx 2, \1 ; db HIGH(\1), LOW(\1) + db HIGH(\1), LOW(\1) ENDM dba: MACRO ; dbw bank, address diff --git a/macros/scripts/maps.asm b/macros/scripts/maps.asm index a30e0c06..fc6d201b 100644 --- a/macros/scripts/maps.asm +++ b/macros/scripts/maps.asm @@ -8,44 +8,35 @@ ENDM object_const_def EQUS "const_def 2" def_scene_scripts: MACRO -if DEF(_NUM_SCENE_SCRIPTS) - PURGE _NUM_SCENE_SCRIPTS -endc -_NUM_SCENE_SCRIPTS EQUS "_NUM_SCENE_SCRIPTS_\@" - db _NUM_SCENE_SCRIPTS -_NUM_SCENE_SCRIPTS = 0 +REDEF _NUM_SCENE_SCRIPTS EQUS "_NUM_SCENE_SCRIPTS_\@" + db {_NUM_SCENE_SCRIPTS} +{_NUM_SCENE_SCRIPTS} = 0 ENDM scene_script: MACRO ;\1: script pointer dw \1 dw 0 ; filler -_NUM_SCENE_SCRIPTS = _NUM_SCENE_SCRIPTS + 1 +{_NUM_SCENE_SCRIPTS} = {_NUM_SCENE_SCRIPTS} + 1 ENDM def_callbacks: MACRO -if DEF(_NUM_CALLBACKS) - PURGE _NUM_CALLBACKS -endc -_NUM_CALLBACKS EQUS "_NUM_CALLBACKS_\@" - db _NUM_CALLBACKS -_NUM_CALLBACKS = 0 +REDEF _NUM_CALLBACKS EQUS "_NUM_CALLBACKS_\@" + db {_NUM_CALLBACKS} +{_NUM_CALLBACKS} = 0 ENDM callback: MACRO ;\1: type: a MAPCALLBACK_* constant ;\2: script pointer dbw \1, \2 -_NUM_CALLBACKS = _NUM_CALLBACKS + 1 +{_NUM_CALLBACKS} = {_NUM_CALLBACKS} + 1 ENDM def_warp_events: MACRO -if DEF(_NUM_WARP_EVENTS) - PURGE _NUM_WARP_EVENTS -endc -_NUM_WARP_EVENTS EQUS "_NUM_WARP_EVENTS_\@" - db _NUM_WARP_EVENTS -_NUM_WARP_EVENTS = 0 +REDEF _NUM_WARP_EVENTS EQUS "_NUM_WARP_EVENTS_\@" + db {_NUM_WARP_EVENTS} +{_NUM_WARP_EVENTS} = 0 ENDM warp_event: MACRO @@ -55,16 +46,13 @@ warp_event: MACRO ;\4: warp destination: starts at 1 db \2, \1, \4 map_id \3 -_NUM_WARP_EVENTS = _NUM_WARP_EVENTS + 1 +{_NUM_WARP_EVENTS} = {_NUM_WARP_EVENTS} + 1 ENDM def_coord_events: MACRO -if DEF(_NUM_COORD_EVENTS) - PURGE _NUM_COORD_EVENTS -endc -_NUM_COORD_EVENTS EQUS "_NUM_COORD_EVENTS_\@" - db _NUM_COORD_EVENTS -_NUM_COORD_EVENTS = 0 +REDEF _NUM_COORD_EVENTS EQUS "_NUM_COORD_EVENTS_\@" + db {_NUM_COORD_EVENTS} +{_NUM_COORD_EVENTS} = 0 ENDM coord_event: MACRO @@ -76,16 +64,13 @@ coord_event: MACRO db 0 ; filler dw \4 dw 0 ; filler -_NUM_COORD_EVENTS = _NUM_COORD_EVENTS + 1 +{_NUM_COORD_EVENTS} = {_NUM_COORD_EVENTS} + 1 ENDM def_bg_events: MACRO -if DEF(_NUM_BG_EVENTS) - PURGE _NUM_BG_EVENTS -endc -_NUM_BG_EVENTS EQUS "_NUM_BG_EVENTS_\@" - db _NUM_BG_EVENTS -_NUM_BG_EVENTS = 0 +REDEF _NUM_BG_EVENTS EQUS "_NUM_BG_EVENTS_\@" + db {_NUM_BG_EVENTS} +{_NUM_BG_EVENTS} = 0 ENDM bg_event: MACRO @@ -95,16 +80,13 @@ bg_event: MACRO ;\4: script pointer db \2, \1, \3 dw \4 -_NUM_BG_EVENTS = _NUM_BG_EVENTS + 1 +{_NUM_BG_EVENTS} = {_NUM_BG_EVENTS} + 1 ENDM def_object_events: MACRO -if DEF(_NUM_OBJECT_EVENTS) - PURGE _NUM_OBJECT_EVENTS -endc -_NUM_OBJECT_EVENTS EQUS "_NUM_OBJECT_EVENTS_\@" - db _NUM_OBJECT_EVENTS -_NUM_OBJECT_EVENTS = 0 +REDEF _NUM_OBJECT_EVENTS EQUS "_NUM_OBJECT_EVENTS_\@" + db {_NUM_OBJECT_EVENTS} +{_NUM_OBJECT_EVENTS} = 0 ENDM object_event: MACRO @@ -135,7 +117,10 @@ object_event: MACRO dw \9 shift dw \9 -_NUM_OBJECT_EVENTS = _NUM_OBJECT_EVENTS + 1 +; the dummy PlayerObjectTemplate object_event has no def_object_events +if DEF(_NUM_OBJECT_EVENTS) +{_NUM_OBJECT_EVENTS} = {_NUM_OBJECT_EVENTS} + 1 +endc ENDM trainer: MACRO diff --git a/rgbdscheck.asm b/rgbdscheck.asm index 2ee324bd..f86bfd0b 100644 --- a/rgbdscheck.asm +++ b/rgbdscheck.asm @@ -1,14 +1,18 @@ -; pokegold requires rgbds 0.4.2 or newer. MAJOR EQU 0 -MINOR EQU 4 -PATCH EQU 2 +MINOR EQU 5 +PATCH EQU 0 -if !DEF(__RGBDS_MAJOR__) || !DEF(__RGBDS_MINOR__) || !DEF(__RGBDS_PATCH__) - fail "pokegold requires rgbds 0.4.2 or newer." -else -if (__RGBDS_MAJOR__ < MAJOR) || \ +wrong_rgbds: MACRO + fail "pokegold requires rgbds v0.5.0 or newer." +ENDM + +IF !DEF(__RGBDS_MAJOR__) || !DEF(__RGBDS_MINOR__) || !DEF(__RGBDS_PATCH__) + wrong_rgbds +ELSE +IF (__RGBDS_MAJOR__ < MAJOR) || \ (__RGBDS_MAJOR__ == MAJOR && __RGBDS_MINOR__ < MINOR) || \ - (__RGBDS_MAJOR__ == MAJOR && __RGBDS_MINOR__ == MINOR && __RGBDS_PATCH__ < PATCH) - fail "pokegold requires rgbds 0.4.2 or newer." -endc -endc + (__RGBDS_MAJOR__ == MAJOR && __RGBDS_MINOR__ == MINOR && __RGBDS_PATCH__ < PATCH) || \ + (__RGBDS_MAJOR__ == MAJOR && __RGBDS_MINOR__ == MINOR && __RGBDS_PATCH__ == PATCH && DEF(__RGBDS_RC__)) + wrong_rgbds +ENDC +ENDC diff --git a/tools/unnamed.py b/tools/unnamed.py index aa8f904b..70424ab1 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]: + if obj_ver not in [6, 10, 11, 12, 13, 15, 16, 17]: 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]: + if obj_ver in [16, 17]: 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]: + if obj_ver in [16, 17]: sym_fileno = unpack_file("<I", f)[0] sym_filename = node_filenames[sym_fileno] else: |