Carl Llewellyn demonstrates how he reverse-engineered and modified the PS1 kernel and N64 cartridge hardware to enable cross-console multiplayer.
patreon.com/c/CarlDoesTechThings
I also have an unfinished Discord: discord.gg/dxE8VBURYP
I made Super Mario 64 and Crash Bandicoot finally talk to each other.
The PS1 and N64 had a bunch of reverse engineering involved.
Crash Bandicoot was reverse engineered to find kernel jump calls which where then hijacked so that I could alter and read memory (Crash's position and the crab on the first level). This was done in C and assembly:
gitlab.com/UrsusArcTech/psx-kernel-module-hijack
The nice thing about that is that this can be done with a retail game as the kernel is changed at run time but no editing of the game is required.
The N64 has a Raspberry Pi Pico as a fake cartridge where I modified firmware from PicoCart64 (in C) read/write from/to the N64:
github.com/Carl-Llewellyn/PicoCart64_usb/tree/usb
This allows communication between the N64 and the USB by intercepting calls from the N64 and managing USB comms.
I then used the Super Mario 64 decomp (in C) and modified it to read and write to and from certain addresses it thinks is on the cartridge that are intercepted by the Pi Pico:
github.com/Carl-Llewellyn/sm64_n64x_usb
Then to tie it altogether I have a Go application that manages the data between the consoles that runs on either another Pi, or could be a laptop (I use a laptop in the video cos it's quicker to debug in my setup, I have it also working on a Pi model B so it doesn't require anything fast):
gitlab.com/UrsusArcTech/psx-kernel-module-hijack/-/tree/6_by…
I know it's called "send_crab_pos" just ignore that and pretend it says something more useful.
Why it's here
2 people recommend this
What people say. Recommended for its impressive use of C, assembly, and hardware hacking to connect an N64 and PS1.
m
u/massivefish_manin r/C_Programming • Recommends
C and ASM used to connect an N64 (Mario 64) and PS1 (Crash) for multiplayer
C and ASM - some JMP takeover in some kernel function - the video says it's a kernel injection:
https://gitlab.com/UrsusArcTech/psx-kernel-module-hijack/-/tree/6\_byte\_request\_header?ref\_type=heads
C - Looks like some firmware for a pi Pico to allow passthrough from the N64 and the USB:
https://github.com/Carl-Llewellyn/PicoCart64\_usb/tree/usb
C - Super Mario 64 decomp with some memory read or writes? Hard to tell:
https://github.com/Carl-Llewellyn/sm64\_n64x\_usb
N64 cart and PS1 BIOS modified for an online game between Mario and Crash Bandicoot
C and ASM kernel hijack:
https://gitlab.com/UrsusArcTech/psx-kernel-module-hijack/-/tree/6_byte_request_header?ref_type=heads
Mario 64 USB comms in C:
https://github.com/Carl-Llewellyn/sm64_n64x_usb
Pi Pico firmware in C:
https://github.com/Carl-Llewellyn/PicoCart64_usb/tree/usb