+72
-4
@@ -8,16 +8,22 @@ Make sure that there is an environment variable called DEVKITARM with the path o
|
|||||||
|
|
||||||
Then get the compiler from https://github.com/pret/agbcc and run the following commands.
|
Then get the compiler from https://github.com/pret/agbcc and run the following commands.
|
||||||
|
|
||||||
./build.sh
|
```
|
||||||
./install.sh PATH_OF_POKEEMERALD_DIRECTORY
|
./build.sh
|
||||||
|
./install.sh PATH_OF_POKEEMERALD_DIRECTORY
|
||||||
|
```
|
||||||
|
|
||||||
Then in the pokeemerald directory, build the tools.
|
Then in the pokeemerald directory, build the tools.
|
||||||
|
|
||||||
./build_tools.sh
|
```
|
||||||
|
./build_tools.sh
|
||||||
|
```
|
||||||
|
|
||||||
Finally, build the rom.
|
Finally, build the rom.
|
||||||
|
|
||||||
make
|
```
|
||||||
|
make
|
||||||
|
```
|
||||||
|
|
||||||
# Windows
|
# Windows
|
||||||
|
|
||||||
@@ -26,3 +32,65 @@ Install [**devkitARM**](http://devkitpro.org/wiki/Getting_Started/devkitARM).
|
|||||||
Then get the compiled tools from https://github.com/pret/pokeruby-tools. Copy the `tools/` folder over the `tools/` folder in your pokeemerald directory.
|
Then get the compiled tools from https://github.com/pret/pokeruby-tools. Copy the `tools/` folder over the `tools/` folder in your pokeemerald directory.
|
||||||
|
|
||||||
You can then build pokeemerald using `make` in the MSYS environment provided with devkitARM.
|
You can then build pokeemerald using `make` in the MSYS environment provided with devkitARM.
|
||||||
|
|
||||||
|
# Mac
|
||||||
|
|
||||||
|
Installing pokeemerald on a Mac requires macOS >= 10.12 (Sierra or higher).
|
||||||
|
|
||||||
|
Download a [devkitPRO pacman](https://github.com/devkitPro/pacman/releases/tag/v1.0.0)
|
||||||
|
|
||||||
|
Run the following commands in Terminal:
|
||||||
|
|
||||||
|
|
||||||
|
```
|
||||||
|
xcode-select --install
|
||||||
|
|
||||||
|
sudo dkp-pacman -S devkitARM
|
||||||
|
|
||||||
|
export DEVKITPRO=/opt/devkitpro
|
||||||
|
echo "export DEVKITPRO=$DEVKITPRO" >> ~/.bashrc
|
||||||
|
export DEVKITARM=$DEVKITPRO/devkitARM
|
||||||
|
echo "export DEVKITARM=$DEVKITARM" >> ~/.bashrc
|
||||||
|
echo "if [ -f ~/.bashrc ]; then . ~/.bashrc; fi" >> ~/.bash_profile
|
||||||
|
|
||||||
|
git clone https://github.com/pret/pokeemerald
|
||||||
|
git clone https://github.com/pret/agbcc
|
||||||
|
|
||||||
|
cd agbcc/
|
||||||
|
./build.sh
|
||||||
|
./install.sh ../pokeemerald
|
||||||
|
|
||||||
|
cd ../pokeemerald
|
||||||
|
./build_tools.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
And build the ROM with `make`.
|
||||||
|
|
||||||
|
# Faster builds
|
||||||
|
|
||||||
|
After the first build, subsequent builds are faster. You can further speed up the build:
|
||||||
|
|
||||||
|
## Parallel build
|
||||||
|
|
||||||
|
This significantly speeds up the build on modern machines.
|
||||||
|
|
||||||
|
By default `make` only runs a single thread. You can tell `make` to run on multiple threads with `make -j`. See the manfile for usage (`man make`).
|
||||||
|
|
||||||
|
The optimal value for `-j` is the number of logical cores on your machine. You can run `nproc` to see the exact number.
|
||||||
|
|
||||||
|
```
|
||||||
|
$ nproc
|
||||||
|
8
|
||||||
|
```
|
||||||
|
|
||||||
|
If you have 8 cores, run: `make -j8`
|
||||||
|
|
||||||
|
`-j` on its own will spawn a new thread for each job. A clean build will have thousands of jobs, which will be slower than not using -j at all.
|
||||||
|
|
||||||
|
## Disable the dependency scanning
|
||||||
|
|
||||||
|
If you've only changed `.c` or `.s` files, you can turn off the dependency scanning temporarily. Changes to any other files will be ignored, and the build will either fail or not reflect those changes.
|
||||||
|
|
||||||
|
`make NODEP=1`
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -25,14 +25,13 @@ ASFLAGS := -mcpu=arm7tdmi
|
|||||||
CC1 := tools/agbcc/bin/agbcc
|
CC1 := tools/agbcc/bin/agbcc
|
||||||
override CFLAGS += -mthumb-interwork -Wimplicit -Wparentheses -Werror -O2 -fhex-asm
|
override CFLAGS += -mthumb-interwork -Wimplicit -Wparentheses -Werror -O2 -fhex-asm
|
||||||
|
|
||||||
CPPFLAGS := -I tools/agbcc/include -iquote include -nostdinc -undef
|
CPPFLAGS := -I tools/agbcc/include -I tools/agbcc -iquote include -nostdinc -undef
|
||||||
|
|
||||||
LDFLAGS = -Map ../../$(MAP)
|
LDFLAGS = -Map ../../$(MAP)
|
||||||
|
|
||||||
LIB := -L ../../tools/agbcc/lib -lgcc -lc
|
LIB := -L ../../tools/agbcc/lib -lgcc -lc
|
||||||
|
|
||||||
SHA1 := sha1sum -c
|
SHA1 := $(shell { command -v sha1sum || command -v shasum; } 2>/dev/null) -c
|
||||||
|
|
||||||
GFX := tools/gbagfx/gbagfx
|
GFX := tools/gbagfx/gbagfx
|
||||||
AIF := tools/aif2pcm/aif2pcm
|
AIF := tools/aif2pcm/aif2pcm
|
||||||
MID := $(abspath tools/mid2agb/mid2agb)
|
MID := $(abspath tools/mid2agb/mid2agb)
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
CC = gcc
|
CC = gcc
|
||||||
|
|
||||||
CFLAGS = -Wall -Wextra -Wno-switch -Werror -std=c11 -O2 -s
|
CFLAGS = -Wall -Wextra -Wno-switch -Werror -std=c11 -O2
|
||||||
|
|
||||||
LIBS = -lm
|
LIBS = -lm
|
||||||
|
|
||||||
|
|||||||
@@ -469,12 +469,12 @@ do { \
|
|||||||
void aif2pcm(const char *aif_filename, const char *pcm_filename, bool compress)
|
void aif2pcm(const char *aif_filename, const char *pcm_filename, bool compress)
|
||||||
{
|
{
|
||||||
struct Bytes *aif = read_bytearray(aif_filename);
|
struct Bytes *aif = read_bytearray(aif_filename);
|
||||||
AifData aif_data = {0};
|
AifData aif_data = {0,0,0,0,0,0,0};
|
||||||
read_aif(aif, &aif_data);
|
read_aif(aif, &aif_data);
|
||||||
|
|
||||||
int header_size = 0x10;
|
int header_size = 0x10;
|
||||||
struct Bytes *pcm;
|
struct Bytes *pcm;
|
||||||
struct Bytes output = {0};
|
struct Bytes output = {0,0};
|
||||||
|
|
||||||
if (compress)
|
if (compress)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
CC = gcc
|
CC = gcc
|
||||||
|
|
||||||
CFLAGS = -Wall -Wextra -Werror -std=c11 -O2 -s
|
CFLAGS = -Wall -Wextra -Werror -std=c11 -O2
|
||||||
|
|
||||||
.PHONY: clean
|
.PHONY: clean
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
CC = gcc
|
CC = gcc
|
||||||
|
|
||||||
CFLAGS = -Wall -Wextra -Werror -std=c11 -O2 -s -DPNG_SKIP_SETJMP_CHECK
|
CFLAGS = -Wall -Wextra -Werror -std=c11 -O2 -DPNG_SKIP_SETJMP_CHECK
|
||||||
|
|
||||||
LIBS = -lpng -lz
|
LIBS = -lpng -lz
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
CXX := g++
|
CXX := g++
|
||||||
|
|
||||||
CXXFLAGS := -std=c++11 -O2 -s -Wall -Wno-switch -Werror
|
CXXFLAGS := -std=c++11 -O2 -Wall -Wno-switch -Werror
|
||||||
|
|
||||||
SRCS := agb.cpp error.cpp main.cpp midi.cpp tables.cpp
|
SRCS := agb.cpp error.cpp main.cpp midi.cpp tables.cpp
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
CXX := g++
|
CXX := g++
|
||||||
|
|
||||||
CXXFLAGS := -std=c++11 -O2 -s -Wall -Wno-switch -Werror
|
CXXFLAGS := -std=c++11 -O2 -Wall -Wno-switch -Werror
|
||||||
|
|
||||||
SRCS := asm_file.cpp c_file.cpp charmap.cpp preproc.cpp string_parser.cpp \
|
SRCS := asm_file.cpp c_file.cpp charmap.cpp preproc.cpp string_parser.cpp \
|
||||||
utf8.cpp
|
utf8.cpp
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
CXX := g++
|
CXX := g++
|
||||||
|
|
||||||
CXXFLAGS := -std=c++11 -O2 -s -Wall -Wno-switch -Werror
|
CXXFLAGS := -std=c++11 -O2 -Wall -Wno-switch -Werror
|
||||||
|
|
||||||
SRCS := main.cpp sym_file.cpp elf.cpp
|
SRCS := main.cpp sym_file.cpp elf.cpp
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
CC = gcc
|
CC = gcc
|
||||||
|
|
||||||
CFLAGS = -Wall -Wextra -Werror -std=c11 -O2 -s -DPNG_SKIP_SETJMP_CHECK
|
CFLAGS = -Wall -Wextra -Werror -std=c11 -O2 -DPNG_SKIP_SETJMP_CHECK
|
||||||
|
|
||||||
LIBS = -lpng -lz
|
LIBS = -lpng -lz
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
CXX = g++
|
CXX = g++
|
||||||
|
|
||||||
CXXFLAGS = -Wall -Werror -std=c++11 -O2 -s
|
CXXFLAGS = -Wall -Werror -std=c++11 -O2
|
||||||
|
|
||||||
SRCS = scaninc.cpp c_file.cpp asm_file.cpp
|
SRCS = scaninc.cpp c_file.cpp asm_file.cpp
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user