hello_2pads | ||
hello_bs | ||
hello_cd | ||
hello_cdda | ||
hello_cube | ||
hello_cubetex | ||
hello_cubetex_stp | ||
hello_font | ||
hello_gte_opti | ||
hello_light | ||
hello_mod | ||
hello_multi_vag | ||
hello_multi_xa | ||
hello_ovl_exec | ||
hello_pad | ||
hello_poly | ||
hello_poly_ft | ||
hello_poly_fun | ||
hello_poly_gt | ||
hello_poly_gt_tw | ||
hello_poly_inline | ||
hello_poly_stp | ||
hello_sio | ||
hello_sprt | ||
hello_str | ||
hello_strplay | ||
hello_tile | ||
hello_vag | ||
hello_world | ||
hello_xa | ||
includes | ||
thirdparty | ||
TIM | ||
VAG | ||
.gitmodules | ||
common.mk | ||
LICENSE | ||
Makefile | ||
README.md |
Nolibgs Hello Worlds !
So you want to begin developping on the original PSX but don't know where to start ?
This repo is destined to host a bunch of simple examples, each describing how to do one thing.
The code here will be using Nugget + PsyQ, the "Official" Sony SDK but with a modern MIPS toolchain.
We will not be using libGS, the Extended Graphics Library for the graphic stuff...
Instead we'll try to devise methods to reproduce libgs functions. This will not necessarly be more efficient, but we'll learn a lot more stuff !
Installation
We'll keep things simple for now. If you want to read about more methods to get things up and running, see the wiki's Installation methods section.
Windows
MIPS toolchain setup
- Download the MIPS toolchain here : https://static.grumpycoder.net/pixel/mips/g++-mipsel-none-elf-10.3.0.zip
- Extract the archive's content in
C:\g++-mipsel-none-elf-10.3.0
and add theC:\g++-mipsel-none-elf-10.3.0\bin
folder to your $PATH. - Test everything is fine by launching a command prompt and typing
mipsel-none-elf-gcc.exe --version
. If you get a message likemipsel-none-gnu-gcc (GCC) 10.3.0
, then it's working !
Nugget + PsyQ setup
- Download the PsyQ converted libraries here : http://psx.arthus.net/sdk/Psy-Q/psyq-4.7-converted-full.7z
- Clone the 'nolibgs_hello_worlds' repo with
git clone https://github.com/ABelliqueux/nolibgs_hello_worlds.git --recursive
or download this repository's release and extractnolibgs_hello_worlds.zip
's content toC:\no_libgs_hello_worlds\
. - Extract the content of
psyq-4.7-converted-full.7z
inC:\no_libgs_hello_worlds\psyq
. You should now haveC:\no_libgs_hello_worlds\psyq\include
andC:\no_libgs_hello_worlds\psyq\lib
;
no_libgs_hello_worlds
├── common.mk
├── hello_world
| ├── hello_world.c
| ├── Makefile
├── hello_...
└── psyq
├── lib
| └── *.a
└── include
└── *.h
- Test everything is working by launching a command prompt, change to the
C:\no_libgs_hello_worlds\
directory with the following command:cd C:\no_libgs_hello_worlds\
, then typemake
and hit enter.
By default, this should build thehello_world
example, and you should now have ahello_world.ps-exe
file inC:\no_libgs_hello_worlds\hello_world
. This a PSX executable that can be run in an emulator like pcsx-redux.
Linux
Install your distribution's MIPS toolchain
In a terminal :
On Debian derivatives (Ubuntu, Mint...) :
sudo apt-get install gcc-mipsel-linux-gnu g++-mipsel-linux-gnu binutils-mipsel-linux-gnu
On Arch derivatives (Manjaro), the mipsel environment can be installed from AUR : cross-mipsel-linux-gnu-binutils and cross-mipsel-linux-gnu-gcc using your AURhelper of choice:
trizen -S cross-mipsel-linux-gnu-binutils cross-mipsel-linux-gnu-gcc
Nugget + PsyQ setup
Let's do it all on the CLI !
- Install the git client :
sudo apt-get install git
- Clone this repository :
git clone https://github.com/ABelliqueux/nolibgs_hello_worlds.git --recursive
- Change to the repo's directory and get the PsyQ converted libraries:
cd nolibgs_hello_worlds
wget http://psx.arthus.net/sdk/Psy-Q/psyq-4.7-converted-full.7z
7z x psyq-4.7-converted-full.7z -o./psyq
- Try your setup :
make
By default, this should build the hello_world
example, and you should now have a hello_world.ps-exe
file in ./hello_world/
. This a PSX executable that can be run in an emulator like pcsx-redux.
MacOS
A brew installation script can be found here..
Compilation
In a terminal, cd
to your psxdev setup directory and type make all
to build all examples in their respective directories.
Alternatively, you can use make example_name
to only build that example, i.e : make hello_poly
.
If you want to remove all the files generated by the compilation process, type make clean
.
Upcoming examples
- hello_poly_subdiv (polygon subdivision)
- hello_rsd (rsd format)
Links and Doc
Credits, thanks, hugs
Everything here was learnt from some more talented persons, mainly but not excluding others that hang around on the psxdev discord Nicolas Noble, Lameguy64, NDR008, Jaby smoll seamonstah, danhans42, rama, sickle, paul, squaresoft74, and lot mores !