mirror of
https://github.com/Ed94/pikuma_ps1.git
synced 2026-06-01 18:41:13 -07:00
e04bcb91b4769b8c8005dfa37bb47a53029900d3
Will not be doing most of the course in assembly for now. Assemblers are missing a bunch of ergonomics not related to to instruction abstraction. Mostly related to offset and data typw width calulations and how to ergonomically utilize those symbols within the assembly syntax. The GNU gas macros are terrible and struct member resolution must be done manually. There is no utilities for doing stack allocations with alignment in mind either, no way to get info on the system's calling convention for foreign symbols (not even as a diagnostic, etc). C is a terrible for inline assembly, and gas doesn't support grabbing C struct info from header files (even though they are part of the same toolchain collection). There is no utilities for doing stack allocations with alignment in mind either, no way to get info on the system's calling convention for foreign symbols (not even as a diagnostic, etc). Low-level dev really is in a catch 22 of bad tooling.
Pikuma PS1
A rest from the usual.
Dependencies
I will be programming from a Windows 11 machine:

# not really used yet for scripts (may never)
scoop install lua
- Supports doing bare-metal assembly for the ps1
scoop install armipsor just clone and build..
pscx-redux: A collection of tools, research, hardware design, and libraries aiming at development and reverse engineering on the PlayStation 1.
- Used as the runtime sandbox emulated the ps1
- Has hookups to behaving as a gdb server which can be utilized with the gdb client in vscode.
- Supports symbolic info emitted by armips
- pysq library has been sucessfully adjusted for modern compiler usage (see:
src/)
MIPS Toolchain (from pscx-redux)
- Used for building ps1 programs for the C runtime provided by the psyq/o SDK
- Readonly mirror of pcsx-redux's
src/mipsdirectory. - Not necessary if the pcsx-redux repo is cloned
PSX Psy-Q SDK (supplied by psx.arthus.net)
- Original official SDK
- Modernized using obj parser to extract info for GNU toolchain usage.
- Can either grab from arthus psyq-4.7-converted-full.7z or psyq-4_7-converted-light.zip
- The light version omits the link modules (object files), just keeps the static archives.
- Can be utilized effectively with the includes below
- Fixes psyq headers to include what they use, so changing the include order in your project doesn't break compiling.
- Needed if you want to link and utilize the psyq C SDK
Other toolchains (not used here)
Gallery
Languages
C
83.3%
Assembly
12.7%
PowerShell
2.9%
Lua
0.8%
Python
0.3%




