cpu_tests | ||
docs | ||
mupen64 | ||
runner | ||
.gitignore | ||
LICENSE | ||
mockclient.cpp | ||
Nittofile | ||
proto.hpp | ||
readme.md |
n64 testsuite
This repository holds an n64 technology test-suite to verify that any given implementation behaves like it is supposed to.
Building the runner
- Download nitto
- Install a supported c++ compiler such as gcc or clang
- Run
nitto build
- ...
- Profit!
Prequisites
To be able to execute the runner successfully, it needs a way to supply needed tools (i.e. to compile mips assembly).
There are two ways to achieve this:
-
By installing libdragon and set the env-var
N64_INST
to the libdragon basedir. ($N64_INST/bin/mips64-elf-as
and$N64_INST/bin/mips64-elf-objcopy
must be present) -
Having docker installed. It then uses the latest libdragon docker image (
ghcr.io/dragonminded/libdragon:latest
) to supply needed tools. You can change the image to be used with theLIBDRAGON_IMAGE
env-variable. To specify an already created instance, one can use theLIBDRAGON_INSTANCE
env-var. Otherwise the runner create a container and stores the current instance id inside the.libdragon_instance
file for later use. If the instance isn't running it tries to start it by itself (we just rundocker start xxx
).
Usage
After you have successfully build the runner program, you can invoke it like so:
./runner [--cmd x] [<test specs...>]
--cmd x
sets the command for the n64 implementation. Alternatively, you can set theN64_RUN_CMD
environment variable. This command needs to implement the communication protocol.
Communication protocol
See docs/protocol.md
.