Skip to the content
PCBKitNew board
2 layers44.1 × 82.7 mmRemote64-controller, the printed circuit board in 3D

Remote64-controller

bigbass1997/remote644

Provides a method for N64 homebrew developers to test their roms on remote hardware

Size
44.1 × 82.7 mm
Copper layers
2
Thickness
1.6 mm
Parts
20
Nets
57
Pads
109
Tracks, vias
113, 2
Pours
1
Routed
Yes
KiCad
KiCad 6 (file 20211014)
Created
7 Mar 2022
Updated
24 Apr 2022

Overview

Remote64-controller is an open-source printed circuit board by bigbass1997, from the bigbass1997/remote64 repository on GitHub. It is a 2-layer board of 44.1 × 82.7 mm with 20 parts on 57 nets, routed with 113 tracks and 2 vias.

It is built around the PIC18F47K42-E/P, MCP2221A-I/P and PN2222A, with the SB1100E-G among its other parts. Its parts include 5 connectors, 3 capacitors, 3 resistors, 3 switches and 2 ICs. It belongs with the PIC boards of this library.

Main components

4

README

README.md

License: BSD 2-Clause CERN License

Description

This project enables N64 homebrew developers to test their roms on real hardware, without actually owning said hardware.

Project is split in two parts: the server which handles all incoming requests, performs them on hardware, and sends back what happened; and the client which is what developers use to test their roms.

The server side can be run by anyone that has a compatible hardware setup. It manages incomming requests for testing, captures the console's output, and relays that information back to the client. Servers may have a varying set of capabilities. If the client requests a feature the server doesn't support, the user will be notified.

If a client connects while another test is in progress, the new client will be placed in a queue and automatically serviced once the current test has finished. The maximum length of a test is defined by the server, but will likely be quite generous.

Why does this exist?

Ultimately, this is an attempt to reduce the cost of entry into N64 homebrew and research. Especially given the chip shortage and other circumstances that have severely limited flashcart production.

While it is possible to ask others to test a rom build, it's also possible that no one will be available when needed. This is not intended to completely replace developers purchasing their own flashcarts/consoles, nor to replace community testers; rather it is here to supplement those testing methods.

Which server should I connect to?

TODO

Server Capabilities

The bare minimum a server setup requires is some method to automatically upload and start the provided ROM image, and a capture device to record the video output with. The server software will not work without a valid video stream, even if live playback isn't enabled.

Optional capabilities include:

  • Live playback (requires decent upload speed)
  • Audio recording (for final recording, and live playback if enabled)
  • Controller input (requires live playback and input passthrough)

Repo Structure

/client/, /common/, and /server/ make up the software side, while /controller/ contains the hardware used by the server for powering the system on/off, and passing in controller inputs.

/docker/ contains container build script(s) that can be used for cross-compiling.

Compiling/Building

If you wish to build from source, for your own system, Rust is integrated with the cargo build system. To install Rust and cargo, just follow these instructions. Once installed, while in the project's root directory, run cargo build --bin remote64-client --release to build (use --bin remote64-server for server builds), or use cargo run --bin remote64-client --release to run directly. The built binary will be available in ./target/release/

To cross-compile builds for other operating systems, you can use rust-embedded/cross.

The Cross.toml file is configured to expect a local docker container for linux and windows builds.

Linux

Docker: docker build -t remote64-image-linux:tag docker/linux/
Rust: cross build --target x86_64-unknown-linux-gnu --bin remote64-client --release

Windows

Docker: docker build -t remote64-image-windows:tag docker/windows/
Rust: cross build --target x86_64-pc-windows-gnu --bin remote64-client --release
Note: Cross-compiling for windows is currently broken. I cannot get the container to recognize the portaudio library.

Parts

20
QtyValueFootprintReferences
30.1uFCapacitor_THT:C_Disc_D3.4mm_W2.1mm_P2.50mmC1, C2, C3
21KResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR1, R3
2Conn_01x02TerminalBlock_Phoenix:TerminalBlock_Phoenix_PT-1,5-2-5.0-H_1x02_P5.00mm_HorizontalJ2, J4
2OJE-xx-1xxLMxremote64-controller:OJE-SS-105LMHK1, K2
2PN2222APackage_TO_SOT_THT:TO-92_InlineQ1, Q2
2SB1100EDiode_THT:D_DO-41_SOD81_P10.16mm_HorizontalD1, D2
110KResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR2
1ControllerPortConnector_PinHeader_2.54mm:PinHeader_1x05_P2.54mm_VerticalJ5
1ICSPConnector_PinHeader_2.54mm:PinHeader_1x06_P2.54mm_VerticalJ3
1MCP2221APackage_DIP:DIP-14_W7.62mmU1
1MCU_RESETButton_Switch_THT:SW_PUSH_6mm_H7.3mmSW1
1PIC18F47K42Package_DIP:DIP-40_W15.24mmU2
1USB PortConnector_USB:USB_B_OST_USB-B1HSxx_HorizontalJ1

Questions

How big is the Remote64-controller PCB?

It measures 44.1 × 82.7 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Remote64-controller use?

20 parts, built around the PIC18F47K42-E/P, MCP2221A-I/P, PN2222A and SB1100E-G. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the Remote64-controller KiCad files?

From the bigbass1997/remote64 repository on GitHub, at the commit this page was made from: the board is controller/hardware/remote64-controller.kicad_pcb and its schematic controller/hardware/remote64-controller.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Remote64-controller design in my own project?

Its repository states no licence, so its author keeps all rights: ask bigbass1997 before reusing the design.

Similar boards

  • 2 layers49.5 × 49.5 mmAtmega gpib, the printed circuit board in 3D

    Atmega gpib

    cellularmitosis/atmega-gpib

    An ATmega-based GPIB-to-USB adapter board.

    24 parts16MIT
  • 2 layers74.9 × 89.2 mmPictas, the printed circuit board in 3D

    Pictas

    bigbass1997/PICTAS

    Low-cost replay device for playing back Tool Assisted Speedruns on real hardware

    37 parts9
  • 2 layers63.5 × 45.5 mmF ramune avr, the printed circuit board in 3D

    F ramune avr

    obskyr/f-ramune

    A device for testing and programming FRAM chips! Finally you can be sure that FRAM you bought from China works.

    27 parts6
  • 2 layers39.4 × 20.3 mmPsense, the printed circuit board in 3D

    Psense

    noahp/psense

    🔌 Basic USB interfaced power sensor

    25 parts3
  • 4 layers100 × 100 mmSimple010-16, the printed circuit board in 3D

    Simple010-16

    harrowm/Simple010

    68010 SBC using a ATF1608 CPLD based on teh rosco_m68k SBC

    75 parts1MIT
  • 4 layers99.1 × 75.7 mmCircuit tap, the printed circuit board in 3D

    Circuit tap

    gcoonrod/circuit-tap

    Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

    65 partsApache-2.0