Kodlamadaki hata nerededir?

İsimyoktur

Decapat
Katılım
2 Mayıs 2022
Mesajlar
10
Daha fazla  
Cinsiyet
Erkek
Arkadaşlar bu PSX oyun yapımına merak saldım ve Windows XP üzeriden birkaç şey kodladım ama kodu CMD de derlerken hata alıyorum ve asla düzeltemiyorum. Nasıl düzelebilir?
Sırasıyla MAIN.C ve Makefile.mak dosyasını aşağıya bıraktım.
Psymake kodunu yazarak aldığım hata ise " fatal error: Don't know how to Build target C:\psyq\projects\redbox\ALL."
Kodu çalıştırdığımda neden dolayı bilmiyorum ama C:\psyq\projects\redbox\ALL. yoluna gitmeye çalışıyor ama böyle bir yol yok ve olmaması lazım.
Ve MAIN.EXE dosyasını oluştuması lazım.

C++:
/******************************************************************************
 * MAIN.C - Beyaz zemin üzerinde kırmızı kare (D-Pad kontrolü)
 * Psy-Q (SN Systems) örnek.
 ******************************************************************************/
#include <sys/types.h>
#include <libgte.h>
#include <libgpu.h>
#include <libetc.h>

// Ekran boyutu.
#define SCREEN_W 320.
#define SCREEN_H 240.

// Ordering Table boyutu.
#define OT_LENGTH 1

// Ordering Table ve GPU paket alanı.
GsOT ot[OT_LENGTH];
GsOT_TAG ot_tag[1 << OT_LENGTH];
PACKET gpu_packet[16];

// Kırmızı kutunun pozisyonu.
int boxX = 100;
int boxY = 100;
int boxSize = 30;

// Prototipler.
void initGraphics(void);
void drawRedBox(int x, int y, int size);

int main() {
 // Grafik başlat.
 initGraphics();

 // Pad'i başlat.
 InitPAD(0, 0, 0, 0);
 StartPAD();
 ChangeClearPAD(0);

 while (1) {
 // OT temizle.
 ClearOTagR((u_long*)ot[0].ot, 1 << OT_LENGTH);

 // Pad okuyalım.
 // libetc.h fonksiyonu: Poll ve pad butonlarını al.
 PADTYPE p = PadRead(0);
 if (!(p & PADLup)) { boxY -= 2; if(boxY < 0) boxY = 0; }
 if (!(p & PADLdown)) { boxY += 2; if(boxY > SCREEN_H - boxSize) boxY = SCREEN_H - boxSize; }
 if (!(p & PADLleft)) { boxX -= 2; if(boxX < 0) boxX = 0; }
 if (!(p & PADLright)){ boxX += 2; if(boxX > SCREEN_W - boxSize) boxX = SCREEN_W - boxSize; }

 // Kırmızı kutuyu çiz.
 drawRedBox(boxX, boxY, boxSize);

 // Ekrana gönder.
 DrawSync(0);
 VSync(0);
 GsSwapDispBuff();
 GsSortClear(255, 255, 255); // Arka planı beyaz.
 GsDrawOt(&ot[0]);
 }
 return 0;
}

// ----------------------------------------------------------
// Basit grafik init - 320x240 çözünürlük, double-buffer
// ----------------------------------------------------------
void initGraphics(void) {
 ResetGraph(0);
 SetDefDrawEnv(&GsDrawEnv, 0, 0, SCREEN_W, SCREEN_H);
 SetDefDispEnv(&GsDispEnv, 0, 0, SCREEN_W, SCREEN_H);

 // Double buffer.
 GsDrawEnv.isbg = 1; // Arka plan temizleme.
 GsDrawEnv.r0 = 255; // Beyaz R
 GsDrawEnv.g0 = 255; // Beyaz G
 GsDrawEnv.b0 = 255; // Beyaz B

 PutDrawEnv(&GsDrawEnv);
 PutDispEnv(&GsDispEnv);

 // OT hazırla.
 GsClearOt(0, 0, &ot[0]);
 GsSetWorkBase((PACKET*)gpu_packet);
 GsClearWorkBase();
 GsSetVideoMode(VID_MODE_PAL); // Veya VID_MODE_NTSC.
 SetDispMask(1);
}

// ----------------------------------------------------------
// drawRedBox : Kırmızı renkli POLY_F4 çizer.
// ----------------------------------------------------------
void drawRedBox(int x, int y, int size) {
 POLY_F4* poly = (POLY_F4*)GsGetWorkBase();
 GsSetWorkBase((PACKET*)((u_long)poly + sizeof(POLY_F4)));

 setPolyF4(poly);
 setXY4(poly,
 x, y,
 x+size,y,
 x, y+size,
 x+size,y+size);
 setRGB0(poly, 255,0,0); // Kırmızı.
 setShadeTex(poly, 0);
 AddPrim(&ot[0], poly);
}

C++:
all : MAIN.EXE

MAIN.EXE : MAIN.OBJ
 C:\PSYQ\BIN\CCPSX.EXE MAIN.OBJ -o MAIN.EXE \
 C:\PSYQ\LIB\LIBETC.LIB C:\PSYQ\LIB\LIBGTE.LIB \
 C:\PSYQ\LIB\LIBGPU.LIB C:\PSYQ\LIB\LIBSPU.LIB
MAIN.OBJ : MAIN.C
 C:\PSYQ\BIN\CCPSX.EXE -c -Xo2 -G0 MAIN.C
clean :
 del MAIN.OBJ
 del MAIN.EXE
 
Son düzenleme:
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için çerezleri kabul etmelisiniz. Daha Fazlasını Öğren.…