Testsuite for n64 implementations, both in hardware and software.
Find a file
2025-10-06 18:44:01 +02:00
cpu_tests Add cpu_tests for BLTZALL and BGEZALL regimm instructions 2025-01-02 02:35:13 +01:00
docs Add special registers HI and LO to protocol; change handler for PC to a generic special register handler for both set and dump 2025-01-01 01:42:36 +01:00
mupen64 Add mupen64 client 2025-10-06 18:42:57 +02:00
runner runner: Start container if not running 2025-10-06 11:29:28 +02:00
.gitignore Update .gitignore 2025-10-06 18:43:29 +02:00
LICENSE First commit: Add Protocol implementation & mockclient 2024-12-21 18:07:48 +01:00
mockclient.cpp Update mockclient 2025-01-01 01:47:08 +01:00
Nittofile Include mupen64 nitto file 2025-10-06 18:44:01 +02:00
proto.hpp runner proto: fix typo 2025-10-06 17:00:08 +02:00
readme.md runner: document tool requirements 2025-10-06 11:36:35 +02:00

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

  1. Download nitto
  2. Install a supported c++ compiler such as gcc or clang
  3. Run nitto build
  4. ...
  5. 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 the LIBDRAGON_IMAGE env-variable. To specify an already created instance, one can use the LIBDRAGON_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 run docker 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 the N64_RUN_CMD environment variable. This command needs to implement the communication protocol.

Communication protocol

See docs/protocol.md.