參考資訊:
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>
#include <libcd.h>
#include <malloc.h>
static unsigned char ramAddr[0x40000] = { 0 };
int main(int argc, char *argv[])
{
const int w = 320;
const int h = 240;
DISPENV disp = { 0 };
DRAWENV draw = { 0 };
CdlFILE pos = { 0 };
u_long *buf = 0;
u_char rt[8] = { 0 };
int r = 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);
CdInit();
InitHeap((u_long *)ramAddr, sizeof(ramAddr));
CdSearchFile(&pos, "\\TEST.TXT;1");
buf = malloc(pos.size);
memset(buf, 0, pos.size);
CdControl(CdlSetloc, (u_char *)&pos.pos, rt);
if (CdRead(pos.size, (u_long *)buf, CdlModeSpeed) > 0) {
r = CdReadSync(1, 0);
}
while (1) {
FntPrint("%s (r=%d)", buf, r);
FntFlush(-1);
DrawSync(0);
VSync(0);
PutDispEnv(&disp);
PutDrawEnv(&draw);
}
return 0;
}
P.S. "\\TEST.TXT;1"代表讀取根目錄下的TEST.TXT檔案(第1版)
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"/>
<file name="TEST.TXT" type="data" source="test.txt"/>
</directory_tree>
</track>
</iso_project>
P.S. 檔名和副檔名都大寫
編譯、執行
$ make $ echo "1234567890" > test.txt $ mkpsxiso -y cdrom.xml $ /opt/ps1/pcsx -cdfile cdrom.bin