Ещё в начале 2000х, а точнее где-то в 2001г. или в 2002г. у нас открыли в Алматы не далеко от моего дома клуб там были приставки Playstation 1. Я сделал 2 компьютерные игры на Visual Basic 6.0 "Угадай мелодию" и "Кто возьмёт миллион", и хотел их портировать на Playstation 1. Поехав на курсы в Германию я нашёл в интернет PSX SDK и PSX Chipmunk Basic. Тогда в Алматы интернет был слабый, а в Германии был примерно 1 мбит/сек.
У меня есть дома старенькая Playstation 1 и PSX SDK (PSY-Q), есть так-же SDK (Yarozo) для Playstation синей версии, это были такие приставки для хобби программистов, которые хотел-бы делать игры. Почитав специальные ресурсы научился писать Hello World для PSX. Спасибо некому LameGuy64, который в этих делах спец. Здесь опишу поэтапно как сделать простенькое App для PSX и запустить её, я буду использовать PSY-Q, PSX CD-GEN, PSX Disc Patcher, ImgBurn. В будущем нам понадобиться bin2h, bmp2tim, Tim2Tool, jpsxdec, Blender 2.7x, и для Blender понадобиться RSD Export Plug-In.
Системные требования для компиляции Windows 2000, NT 4.0, на современные и 64 битные PSY-Q не будет работать т.к. там есть 16 битные приложения и DOS приложения. У меня установлен PSY-Q на Windows 2000 SP4 на VirtualBox. Для 3D нужно от Windows XP и Blender 2.7x. Для тестирования нужно чтобы запустился эмулятор.
Сразу говорю код не мой, код я взял его на другом сайте.
1. Распакуйте или установите PSY-Q.
2. Если нет пути PSY-Q в PATH, то установите в PATH путь к PSY-Q, у меня путь такой N:\psyq\bin, где N это сетевая папка.
3. Создайте папку PS1GAME
4. Перекопируйте этот код, и сохраните как MAIN.C:
#include <stdlib.h>
#include <libgte.h>
#include <libgpu.h>
#include <libgs.h>
#define OT_LENGTH 1
#define PACKETMAX 18
#define SCREEN_WIDTH 320
#define SCREEN_HEIGHT 240
GsOT myOT[2];
GsOT_TAG myOT_TAG[2][1<<OT_LENGTH];
PACKET GPUPacketArea[2][PACKETMAX];
u_long __ramsize = 0x00200000;
u_long __stacksize = 0x00004000;
short CurrentBuffer = 0;
void graphics();
void display();
int main()
{
graphics();
FntLoad(960, 256);
SetDumpFnt(FntOpen(5, 20, 320, 240, 0, 512));
while(1)
{
FntPrint("My First PS1 Application");
display();
}
return 0;
}
void graphics()
{
if(*(char *)0xbfc7ff52=='E')
SetVideoMode(1);
else
SetVideoMode(0);
GsInitGraph(SCREEN_WIDTH, SCREEN_HEIGHT, GsINTER|GsOFSGPU, 1, 0);
GsDefDispBuff(0, 0, 0, SCREEN_HEIGHT);
myOT[0].length = OT_LENGTH;
myOT[1].length = OT_LENGTH;
myOT[0].org = myOT_TAG[0];
myOT[1].org = myOT_TAG[1];
GsClearOt(0,0,&myOT[0]);
GsClearOt(0,0,&myOT[1]);
}
void display()
{
FntFlush(-1);
CurrentBuffer = GsGetActiveBuff();
GsSetWorkBase((PACKET*)GPUPacketArea[CurrentBuffer]);
GsClearOt(0,0,&myOT[CurrentBuffer]);
DrawSync(0);
VSync(0);
GsSwapDispBuff();
GsSortClear(50,50,50,&myOT[CurrentBuffer]);
GsDrawOt(&myOT[CurrentBuffer]);
}2. Создайте makefile.mak
all: ccpsx -O3 -Xo$80010000 main.c -omain.cpe,main.sym,mem.map cpe2x /ce main.cpe
cpe2x /c и регион, у меня стоит /ce это значит для европы см.:
CPE2X Ver1.5
Copyright (C) 1994,1995 by Sony Computer Entertainment Inc.
/C[area code]
J : for Japan area (default)
A : for North America area
E : for Europe area
5. Дальше в сеансе MS-DOS дайте команду psymake должно что-то типа такого получиться:
C:\PS1GAME>psymake PsyMake version 1.14 copyright SN Systems Software Ltd 1993 N:\psyq\bin\ccpsx.EXE -O3 -Xo$80010000 main.c -omain.cpe,main.sym,mem.map N:\psyq\bin\cpe2x.EXE /ce main.cpe CPE2X Ver1.5 Copyright (C) 1994,1995 by Sony Computer Entertainment Inc. convert from main.cpe to main.EXE for Europe area pc0:8001612c t_addr:80010000 t_size:00008800
6. Создайте файл system.cnf, это будет загрузчик.
BOOT=cdrom:\main.exe;1 TCB=4 EVENT=10 STACK=801FFFF0
7. Запускаем PSX CD-GEN, и добавляем файлы main.exe и system.cnf, а так-же меняем лейбл диска, я назвал диск MYGAME, и выбераем в меню COMPILE PS/PS2 CD Image.

8. Если всё успешно, т.е. если вы увидели надпись CD Image Created Sucessfully, то запускаем PSX/PS2 Disc Patcher 3.0, я выбераю приставка PSX, тип образ CD, регион Europe.
9. Если успешно пропатчился диск, т.е. должна надпись CD Image Created Successfully, то можно запускать образ. Я буду тестировать на ePSXe