Ещё в начале 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