家用機 - Sony Play Station - C/C++ (PsyQ) - Make CD-ROM ISO



參考資訊:
https://psx.arthus.net/starting.html
https://github.com/ABelliqueux/nolibgs_hello_worlds#installation

main.c

#include <sys/types.h>
#include <stdio.h>
#include <libgte.h>
#include <libetc.h>
#include <libgpu.h>
 
int main(int argc, char *argv[])
{
    const int w = 320;
    const int h = 240;
    DISPENV disp = { 0 };
    DRAWENV draw = { 0 };
 
    ResetGraph(0);
 
    SetDefDispEnv(&disp, 0, 0, w, h);
    SetDefDrawEnv(&draw, 0, 0, w, h);
    SetDispMask(1);
    setRGB0(&draw, 0, 0, 0);
    draw.isbg = 1;
 
    PutDispEnv(&disp);
    PutDrawEnv(&draw);
 
    FntLoad(640, 0);
    FntOpen(100, 100, w, h, 0, 255);
 
    while (1) {
        FntPrint("Hello, world!");
 
        FntFlush(-1);
        DrawSync(0);
        VSync(0);
        PutDispEnv(&disp);
        PutDrawEnv(&draw);
    }
 
    return 0;
}

system.cnf

BOOT=cdrom:\main.exe;1
TCB=4
EVENT=10
STACK=801FFFF0

cdrom.xml

<?xml version="1.0" encoding="UTF-8"?>
<iso_project image_name="cdrom.bin" cue_sheet="cdrom.cue">
    <track type="data">
        <identifiers
            system="playstation"
            application="playstation"
            volume="main"
            volume_set="main"
            publisher="main"
            data_preparer="mkpsxiso"
        />
        <directory_tree>
            <file name="system.cnf" type="data" source="system.cnf"/>
            <file name="main.exe" type="data" source="main.exe"/>
        </directory_tree>
    </track>
</iso_project>

編譯、執行

$ make
$ mkpsxiso -y cdrom.xml
$ /opt/ps1/pcsx -cdfile cdrom.bin