ed e04bcb91b4 got gp_screen_init working on the assembler side!
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.
2025-09-13 21:49:10 -04:00
2025-08-04 21:45:50 -04:00
2025-08-03 10:58:24 -04:00

Pikuma PS1

A rest from the usual.

img

Dependencies

I will be programming from a Windows 11 machine: system_info

# not really used yet for scripts (may never)
scoop install lua

armips

  • Supports doing bare-metal assembly for the ps1
  • scoop install armips or 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

nugget

  • Readonly mirror of pcsx-redux's src/mips directory.
  • 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

psyq_include_what_you_use

  • 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)

clear!
traingles!
polys!
hello_psyq!

S
Description
No description provided
Readme Unlicense 18 MiB
Languages
C 83.3%
Assembly 12.7%
PowerShell 2.9%
Lua 0.8%
Python 0.3%