"NoPS" -- Serial/TTY suite for Unirom 8 featuring kernel-resident debugging, cart/EEPROM flasher, .exe upload, memcard tools, peeks, pokes, dumps and bugs! GDB TCP/UART bridge in progress.
Features
- Kernel-resident debugging: Debug running games on a retail console
- Cart/EEPROM flasher: Back up and reflash cheat carts
- .EXE or raw binary upload: Run homebrew utilities or upload assets for development
- Memorycard tools: Backup or rewrite whole memory cards to raw (emulator) format
- Peeks n Pokes: Peek or poke running games/homebrew (incl cheat codes)
- Mem dumps: Grab a copy of RAM, cart EEPROM, BIOS, etc
- TCP->SIO Bridge: Raw communication via TCP
- In progress: GDB TCP->SIO bridge!: Step through your code in the editor, etc
Supported configs:
Cables:
- Basic 3 wire TX/RX/GND (e.g. a 3 quid dongle off amazon and a couple of wires)
- Sharklink with handshake
- Yaroze cables
- Switchable cables
OS:
- Windows via .NET or Mono
- OSX / Linux via Mono
Basic Usage
The hello world test executable was written by Shadow of PSXDev.net. To run it:
- nops /exe psx_helloworld.exe COM8
Where COMPORT might be COM3, COM14, etc under windows and /dev/ttyWhatever under *nix with mono. win: Find it by opening devmgmt.msc from the run box. mac + linux: run ./nops for some example device names
e.g.
- nops /rom unirom_s.rom COM14
- ./nops /rom unirom_s.rom /dev/ttyUSB01
Once you've specified a com port in this directory, it will be saved to COMPORT.TXT
so next time around you just need to:
- nops /rom unirom_s.rom
Uploading Stuff
Your basic "Upload to the PSX" features are:
- nops /exe whatever.exe
- nops /rom whatever.rom
- nops /bin 0x8000ADDR somefile.whatever
Where /exe executs a file from the header information, /rom will attempt to identify the JEDEC chip and flash it, and /bin will just upload a binary file to a specific address.
Flow Control
To jump to an address
- nops /jump 0x80??????
To call an address (and return)
- nops /call 0x80??????
To poke an 8, 16 or 32 bit value
- nops /poke8 0x80100000 0x01
- nops /poke16 0x801F0012 0xFFEE
- nops /poke32 0xA000C000 0x00112233
Reading data
And to get the information back:
- nops /dump 0x80???? 0xSIZE
Or watch it oncreen:
- nops /watch 0x80030000 0xSIZE
Misc
returns PONG!
- nops /ping
Restart the machine
- nops /reset
Other operators:
/m Use in conjunction with anything else to keep the serial connection open and view printf/TTY logs: E.g.
- nops /exe whatever.exe /m
- nops /rom whatever.rom /m
or simply nops /m if you just want to listen.
/fast and /slow
Every command also supports /fast This will send a low speed ping to the PSX tell it to bump from 115200 to 518400
Note: Once in /fast mode, the next time you run nops, it has no way to tell So remember to include /fast in every command till you restart!
A big thanks:
While NoPS has been re-written from the ground up for Unirom 8, before that it was a decompiled version of Shadow's PSXSerial with the header changed to reflect that. (Or more specifically to deny that). In keeping with what I've just decided is tradition, we're going with the same motif.
by JonathanDotCel.