Nintendo 64 Development
The N64 Development Tools is a collection of tools deisgned to compile and test code for the Nintendo 64.
Building N64 Development Tools for macOS
Getting these tools working is fairly simple, at least when
following the README in the repository. However, macOS is weird.
The install-deps
script does actually work on macOS! Uses
brew, and downloads all the dependencies
without issue. The comment about replacing sed
with gsed
is needed, just symlink gsed
to sed
in the brew bin folder.
Configuring the package also works fine, although the recommended
path of /opt/n64
gave me a permission denied error late into
the process, even as root. When debugging I ultimately decided to
test in my home folder (~/n64
). Installing the toolchain also
worked fine, when going through the process initially it wasn’t
happy because I can’t follow directions and forgot to symlink
gsed
. Oops.
Compiling and installing the programs was the hardest part.
During make
, it would stop every second to say it
couldn’t find a particular function, or it couldn’t find a
specific include. Find the Makefile complaining, then specify
the includes and libraries in the appropiate places.
-I
for header folders, -L
for library folders, and
-i
for specific files (although if I remember correctly
this isn’t needed to fix any of the problems). These files
were downloaded with brew
, so it’s time to go exploring
through the Cellar. It’s mostly self-explanatory, make sure
the header paths line up with what’s given, and if make defines
are messed up manually specify the definition (it’s fine, I
promise). Also, libusb
’s library name is usb-1.0
.
GCC Cross Compiling
The important tools, that being the MIPS cross compilers, oddly
enough weren’t put in the installation folder? Like, they were
thrown about in the repository and the specific build folders,
like gcc-cross
was found in n64/build-gcc/gcc
, and this
executable is mips64-gcc
. To add it to my path, I just
copied all the executable binaries in this folder into
/opt/n64/bin
. Was there a cleaner way of doing it?
Probably.
macOS headers (the one’s obtained through Xcode) are,
in fact, not universal. The headers only allow the CPUs
macOS has ever been officially released on, so PowerPC,
Intel, and ARM. To fix this, I downloaded
universal headers
(yes mips64-linux
works on macOS) and add it to
the include path when compiling C code for anything using
MIPS. Probably a better way of doing this, but it works.