mirror of
https://gitlab.com/xCrystal/pokecrystal-board.git
synced 2025-04-09 05:44:44 -07:00
Require rgbds 0.5.1
Use some new features: \<10> macro args, SECTION UNION, SIZEOF/STARTOF, and CHARLEN/CHARSUB
This commit is contained in:
parent
efd1006917
commit
b1dbadbdd3
@ -9,7 +9,7 @@ install:
|
|||||||
HOMEBREW_NO_AUTO_UPDATE=1 brew install bison
|
HOMEBREW_NO_AUTO_UPDATE=1 brew install bison
|
||||||
export PATH="/usr/local/opt/bison/bin:$PATH"
|
export PATH="/usr/local/opt/bison/bin:$PATH"
|
||||||
fi
|
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
|
sudo make -C rgbds install
|
||||||
rm -rf rgbds
|
rm -rf rgbds
|
||||||
)
|
)
|
||||||
|
6
FAQ.md
6
FAQ.md
@ -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"
|
### "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"
|
### "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"
|
### "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`
|
### "Segmentation fault" from `rgbgfx`
|
||||||
|
|
||||||
|
24
INSTALL.md
24
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.
|
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.
|
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.
|
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).
|
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
|
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
|
### OpenSUSE
|
||||||
|
|
||||||
@ -94,7 +94,7 @@ To install the software required for **pokecrystal**:
|
|||||||
sudo zypper install make gcc git
|
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
|
### Arch Linux
|
||||||
|
|
||||||
@ -104,9 +104,9 @@ To install the software required for **pokecrystal**:
|
|||||||
sudo pacman -S make gcc git rgbds
|
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
|
### Termux
|
||||||
|
|
||||||
@ -122,7 +122,7 @@ To install **rgbds**:
|
|||||||
sudo apt 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
|
### Other distros
|
||||||
|
|
||||||
@ -133,7 +133,7 @@ If your distro is not listed here, try to find the required software in its repo
|
|||||||
- `git`
|
- `git`
|
||||||
- `rgbds`
|
- `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).
|
Now you're ready to [build **pokecrystal**](#build-pokecrystal).
|
||||||
|
|
||||||
@ -161,12 +161,12 @@ make crystal11
|
|||||||
|
|
||||||
### Build with a local rgbds version
|
### 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
|
```bash
|
||||||
make RGBDS=rgbds-0.5.0/
|
make RGBDS=rgbds-0.5.1/
|
||||||
```
|
```
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
make RGBDS=rgbds-0.5.0/ crystal11
|
make RGBDS=rgbds-0.5.1/ crystal11
|
||||||
```
|
```
|
||||||
|
@ -1,9 +1,8 @@
|
|||||||
npctrade: MACRO
|
npctrade: MACRO
|
||||||
; dialog set, requested mon, offered mon, nickname, dvs, item, OT ID, OT name, gender requested
|
; dialog set, requested mon, offered mon, nickname, dvs, item, OT ID, OT name, gender requested
|
||||||
db \1, \2, \3, \4, \5, \6, \7
|
db \1, \2, \3, \4, \5, \6, \7
|
||||||
shift
|
dw \8
|
||||||
dw \7
|
db \9, \<10>, 0
|
||||||
db \8, \9, 0
|
|
||||||
ENDM
|
ENDM
|
||||||
|
|
||||||
NPCTrades:
|
NPCTrades:
|
||||||
|
@ -1,35 +1,34 @@
|
|||||||
unownwall: MACRO
|
unownwall: MACRO
|
||||||
rept _NARG
|
for n, CHARLEN(\1)
|
||||||
if \1 == "-"
|
x = CHARSUB(\1, n + 1)
|
||||||
x = $64
|
if x == "-"
|
||||||
elif \1 >= "Y"
|
db $64
|
||||||
x = 2 * (\1 - "Y") + $60
|
elif x >= "Y"
|
||||||
elif \1 >= "Q"
|
db 2 * (x - "Y") + $60
|
||||||
x = 2 * (\1 - "Q") + $40
|
elif x >= "Q"
|
||||||
elif \1 >= "I"
|
db 2 * (x - "Q") + $40
|
||||||
x = 2 * (\1 - "I") + $20
|
elif x >= "I"
|
||||||
|
db 2 * (x - "I") + $20
|
||||||
else
|
else
|
||||||
x = 2 * (\1 - "A")
|
db 2 * (x - "A")
|
||||||
endc
|
endc
|
||||||
db x
|
|
||||||
shift
|
|
||||||
endr
|
endr
|
||||||
db -1 ; end
|
db -1 ; end
|
||||||
ENDM
|
ENDM
|
||||||
|
|
||||||
UnownWalls:
|
UnownWalls:
|
||||||
; UNOWNWORDS_ESCAPE
|
; UNOWNWORDS_ESCAPE
|
||||||
; db $08, $44, $04, $00, $2e, $08, -1
|
; db $08, $44, $04, $00, $2e, $08, -1
|
||||||
unownwall "E", "S", "C", "A", "P", "E"
|
unownwall "ESCAPE"
|
||||||
; UNOWNWORDS_LIGHT
|
; UNOWNWORDS_LIGHT
|
||||||
; db $26, $20, $0c, $0e, $46, -1
|
; db $26, $20, $0c, $0e, $46, -1
|
||||||
unownwall "L", "I", "G", "H", "T"
|
unownwall "LIGHT"
|
||||||
; UNOWNWORDS_WATER
|
; UNOWNWORDS_WATER
|
||||||
; db $4c, $00, $46, $08, $42, -1
|
; db $4c, $00, $46, $08, $42, -1
|
||||||
unownwall "W", "A", "T", "E", "R"
|
unownwall "WATER"
|
||||||
; UNOWNWORDS_HO_OH
|
; UNOWNWORDS_HO_OH
|
||||||
; db $0e, $2c, $64, $2c, $0e, -1
|
; db $0e, $2c, $64, $2c, $0e, -1
|
||||||
unownwall "H", "O", "-", "O", "H"
|
unownwall "HO-OH"
|
||||||
|
|
||||||
MenuHeaders_UnownWalls:
|
MenuHeaders_UnownWalls:
|
||||||
; UNOWNWORDS_ESCAPE
|
; UNOWNWORDS_ESCAPE
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
unownword: MACRO
|
unownword: MACRO
|
||||||
for x, STRLEN(\1)
|
for n, CHARLEN(\1)
|
||||||
db STRSUB(\1, x + 1, 1) - "A" + FIRST_UNOWN_CHAR
|
db CHARSUB(\1, n + 1) - "A" + FIRST_UNOWN_CHAR
|
||||||
endr
|
endr
|
||||||
db -1
|
db -1
|
||||||
ENDM
|
ENDM
|
||||||
|
@ -14,8 +14,8 @@ _UnownPuzzle:
|
|||||||
xor a
|
xor a
|
||||||
ldh [hBGMapMode], a
|
ldh [hBGMapMode], a
|
||||||
call DisableLCD
|
call DisableLCD
|
||||||
ld hl, wUnownPuzzle ; includes wPuzzlePieces
|
ld hl, STARTOF("Miscellaneous") ; includes wPuzzlePieces
|
||||||
ld bc, wUnownPuzzleEnd - wUnownPuzzle
|
ld bc, SIZEOF("Miscellaneous")
|
||||||
xor a
|
xor a
|
||||||
call ByteFill
|
call ByteFill
|
||||||
ld hl, UnownPuzzleCursorGFX
|
ld hl, UnownPuzzleCursorGFX
|
||||||
|
@ -187,24 +187,22 @@ NextChar::
|
|||||||
|
|
||||||
CheckDict::
|
CheckDict::
|
||||||
dict: MACRO
|
dict: MACRO
|
||||||
|
assert CHARLEN(\1) == 1
|
||||||
if \1 == 0
|
if \1 == 0
|
||||||
and a
|
and a
|
||||||
else
|
else
|
||||||
cp \1
|
cp \1
|
||||||
endc
|
endc
|
||||||
|
|
||||||
if ISCONST(\2)
|
if ISCONST(\2)
|
||||||
; Replace a character with another one
|
; Replace a character with another one
|
||||||
jr nz, ._\@
|
jr nz, .not\@
|
||||||
ld a, \2
|
ld a, \2
|
||||||
._\@:
|
.not\@:
|
||||||
else
|
elif STRSUB("\2", 1, 1) == "."
|
||||||
if STRSUB("\2", 1, 1) == "."
|
|
||||||
; Locals can use a short jump
|
; Locals can use a short jump
|
||||||
jr z, \2
|
jr z, \2
|
||||||
else
|
else
|
||||||
jp z, \2
|
jp z, \2
|
||||||
endc
|
|
||||||
endc
|
endc
|
||||||
ENDM
|
ENDM
|
||||||
|
|
||||||
|
@ -326,12 +326,15 @@ WRAM0
|
|||||||
"Sprites"
|
"Sprites"
|
||||||
"Tilemap"
|
"Tilemap"
|
||||||
"Miscellaneous"
|
"Miscellaneous"
|
||||||
|
"Unused Map Buffer"
|
||||||
align 8
|
align 8
|
||||||
"Overworld Map"
|
"Overworld Map"
|
||||||
align 4
|
align 4
|
||||||
"Video"
|
"Video"
|
||||||
WRAMX 1
|
WRAMX 1
|
||||||
"WRAM 1"
|
"WRAM 1"
|
||||||
|
"Miscellaneous WRAM 1"
|
||||||
|
"More WRAM 1"
|
||||||
"Enemy Party"
|
"Enemy Party"
|
||||||
"Party"
|
"Party"
|
||||||
WRAMX 2
|
WRAMX 2
|
||||||
|
@ -224,12 +224,7 @@ signpost: MACRO
|
|||||||
ENDM
|
ENDM
|
||||||
|
|
||||||
person_event: MACRO
|
person_event: MACRO
|
||||||
_s = \1
|
object_event \3, \2, \1, \4, \5, \6, \7, \8, \9, \<10>, \<11>, \<12>, \<13>
|
||||||
_y = \2
|
|
||||||
_x = \3
|
|
||||||
_m = \4
|
|
||||||
shift 4
|
|
||||||
object_event _x, _y, _s, _m, \1, \2, \3, \4, \5, \6, \7, \8, \9
|
|
||||||
ENDM
|
ENDM
|
||||||
|
|
||||||
PERSONTYPE_SCRIPT EQUS "OBJECTTYPE_SCRIPT"
|
PERSONTYPE_SCRIPT EQUS "OBJECTTYPE_SCRIPT"
|
||||||
|
@ -102,21 +102,16 @@ object_event: MACRO
|
|||||||
; * if h1 == -1, h2 is treated as a time-of-day value:
|
; * 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
|
; a combo of MORN, DAY, and/or NITE, or -1 to always appear
|
||||||
;\9: color: a PAL_NPC_* constant, or 0 for sprite default
|
;\9: color: a PAL_NPC_* constant, or 0 for sprite default
|
||||||
;\10: function: a OBJECTTYPE_* constant
|
;\<10>: function: a OBJECTTYPE_* constant
|
||||||
;\11: sight range: applies to OBJECTTYPE_TRAINER
|
;\<11>: sight range: applies to OBJECTTYPE_TRAINER
|
||||||
;\12: script pointer
|
;\<12>: script pointer
|
||||||
;\13: event flag: an EVENT_* constant, or -1 to always appear
|
;\<13>: event flag: an EVENT_* constant, or -1 to always appear
|
||||||
db \3, \2 + 4, \1 + 4, \4
|
db \3, \2 + 4, \1 + 4, \4
|
||||||
dn \6, \5
|
dn \6, \5
|
||||||
db \7, \8
|
db \7, \8
|
||||||
shift
|
dn \9, \<10>
|
||||||
dn \8, \9
|
db \<11>
|
||||||
shift
|
dw \<12>, \<13>
|
||||||
db \9
|
|
||||||
shift
|
|
||||||
dw \9
|
|
||||||
shift
|
|
||||||
dw \9
|
|
||||||
; the dummy PlayerObjectTemplate object_event has no def_object_events
|
; the dummy PlayerObjectTemplate object_event has no def_object_events
|
||||||
if DEF(_NUM_OBJECT_EVENTS)
|
if DEF(_NUM_OBJECT_EVENTS)
|
||||||
{_NUM_OBJECT_EVENTS} = {_NUM_OBJECT_EVENTS} + 1
|
{_NUM_OBJECT_EVENTS} = {_NUM_OBJECT_EVENTS} + 1
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
MAJOR EQU 0
|
MAJOR EQU 0
|
||||||
MINOR EQU 5
|
MINOR EQU 5
|
||||||
PATCH EQU 0
|
PATCH EQU 1
|
||||||
|
|
||||||
wrong_rgbds: MACRO
|
wrong_rgbds: MACRO
|
||||||
fail "pokecrystal requires rgbds v0.5.0 or newer."
|
fail "pokecrystal requires rgbds v0.5.1 or newer."
|
||||||
ENDM
|
ENDM
|
||||||
|
|
||||||
IF !DEF(__RGBDS_MAJOR__) || !DEF(__RGBDS_MINOR__) || !DEF(__RGBDS_PATCH__)
|
IF !DEF(__RGBDS_MAJOR__) || !DEF(__RGBDS_MINOR__) || !DEF(__RGBDS_PATCH__)
|
||||||
|
@ -82,14 +82,14 @@ for objfile in objects:
|
|||||||
elif magic == b'RGB9':
|
elif magic == b'RGB9':
|
||||||
obj_ver = 10 + unpack_file("<I", f)[0]
|
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)
|
print("Error: File '%s' is of an unknown format." % objfile, file=stderr)
|
||||||
exit(1)
|
exit(1)
|
||||||
|
|
||||||
num_symbols = unpack_file("<I", f)[0]
|
num_symbols = unpack_file("<I", f)[0]
|
||||||
unpack_file("<I", f) # skip num sections
|
unpack_file("<I", f) # skip num sections
|
||||||
|
|
||||||
if obj_ver in [16, 17]:
|
if obj_ver in [16, 17, 18]:
|
||||||
node_filenames = []
|
node_filenames = []
|
||||||
num_nodes = unpack_file("<I", f)[0]
|
num_nodes = unpack_file("<I", f)[0]
|
||||||
for x in range(num_nodes):
|
for x in range(num_nodes):
|
||||||
@ -109,7 +109,7 @@ for objfile in objects:
|
|||||||
sym_type = symtype(unpack_file("<B", f)[0] & 0x7f)
|
sym_type = symtype(unpack_file("<B", f)[0] & 0x7f)
|
||||||
if sym_type == symtype.IMPORT:
|
if sym_type == symtype.IMPORT:
|
||||||
continue
|
continue
|
||||||
if obj_ver in [16, 17]:
|
if obj_ver in [16, 17, 18]:
|
||||||
sym_fileno = unpack_file("<I", f)[0]
|
sym_fileno = unpack_file("<I", f)[0]
|
||||||
sym_filename = node_filenames[sym_fileno]
|
sym_filename = node_filenames[sym_fileno]
|
||||||
else:
|
else:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user