Use overlay to load level

This commit is contained in:
ABelliqueux 2021-04-14 15:56:14 +02:00
parent b84fab7d45
commit d722a7ebdb
11 changed files with 6865 additions and 508 deletions

View File

@ -9,6 +9,7 @@ graphics.c \
psx.c \ psx.c \
space.c \ space.c \
levels/level.c \ levels/level.c \
levels/level1.c \
../common/crt0/crt0.s \ ../common/crt0/crt0.s \
TIM/home.tim \ TIM/home.tim \
TIM/cat.tim \ TIM/cat.tim \
@ -20,8 +21,8 @@ TIM/bg_camPath_003.tim \
TIM/bg_camPath_004.tim \ TIM/bg_camPath_004.tim \
TIM/bg_camPath_005.tim \ TIM/bg_camPath_005.tim \
#~ OVERLAYSCRIPT ?= overlay.ld OVERLAYSCRIPT ?= overlay.ld
#~ OVERLAYSECTION ?= .ovly0 .ovly1 OVERLAYSECTION ?= .ovly0 .ovly1
# img2tim -t -bpp 8 -org 320 0 -plt 0 481 -o bg.tim bg.png # img2tim -t -bpp 8 -org 320 0 -plt 0 481 -o bg.tim bg.png
@ -49,6 +50,7 @@ LDFLAGS += -lsio
LDFLAGS += -lsnd LDFLAGS += -lsnd
LDFLAGS += -lspu LDFLAGS += -lspu
LDFLAGS += -ltap LDFLAGS += -ltap
LDFLAGS += -lcd
LDFLAGS += -Wl,--end-group LDFLAGS += -Wl,--end-group
include ../common.mk \ include ../common.mk \

View File

@ -0,0 +1,4 @@
BOOT=cdrom:\SCES_003.90;1
TCB=4
EVENT=10
STACK=801FFFF0

22
config/OverlayExample.xml Normal file
View File

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<iso_project image_name="OverlayExample.bin" cue_sheet="OverlayExample.cue" no_xa="0">
<track type="data">
<identifiers
system = "PLAYSTATION"
application = "PLAYSTATION"
volume = "MYDISC"
volume_set = "MYDISC"
publisher = "JABY"
data_preparer = "MKPSXISO"
copyright = "COPYLEFT"
/>
<license file="LICENSEE.DAT"/>
<directory_tree>
<file name="system.cnf" type="data" source="config/OverlayExample.cnf"/>
<file name="SCES_003.90" type="data" source="main.ps-exe"/>
<file name="LEVEL.bin" type="data" source="Overlay.ovly0" />
<file name="LEVEL1.bin" type="data" source="Overlay.ovly1" />
<dummy sectors="1024"/>
</directory_tree>
</track>
</iso_project>

View File

@ -1,5 +1,3 @@
#define LEVEL 1
#define VMODE 0 #define VMODE 0
#define SCREENXRES 320 #define SCREENXRES 320

File diff suppressed because it is too large Load Diff

5548
levels/level1.c Normal file

File diff suppressed because it is too large Load Diff

685
levels/level1.h Normal file
View File

@ -0,0 +1,685 @@
#pragma once
#include "../custom_types.h"
extern CAMPOS level1_camPos_camPath;
extern CAMPOS level1_camPos_camPath_001;
extern CAMPOS level1_camPos_camPath_002;
extern CAMPOS level1_camPos_camPath_003;
extern CAMPOS level1_camPos_camPath_004;
extern CAMPOS level1_camPos_camPath_005;
extern CAMPATH level1_camPath;
extern MATRIX level1_lgtmat;
extern MATRIX level1_cmat;
extern SVECTOR modelCube_mesh[];
extern SVECTOR level1_modelCube_normal[];
extern SVECTOR level1_modelCube_uv[];
extern CVECTOR level1_modelCube_color[];
extern PRIM level1_modelCube_index[];
extern MATRIX level1_modelCube_matrix;
extern VECTOR level1_modelCube_pos;
extern SVECTOR level1_modelCube_rot;
extern short level1_modelCube_isRigidBody;
extern short level1_modelCube_isStaticBody;
extern short level1_modelCube_isPrism;
extern short level1_modelCube_isAnim;
extern short level1_modelCube_isActor;
extern short level1_modelCube_isLevel;
extern short level1_modelCube_isBG;
extern short level1_modelCube_isSprite;
extern long level1_modelCube_p;
extern long level1_modelCube_OTz;
extern BODY level1_modelCube_body;
extern TMESH level1_modelCube;
extern unsigned long _binary_TIM_cat_tim_start[];
extern unsigned long _binary_TIM_cat_tim_end[];
extern unsigned long _binary_TIM_cat_tim_length;
extern TIM_IMAGE level1_tim_cat;
extern MESH level1_meshCube;
extern SVECTOR modelCylindre_mesh[];
extern SVECTOR level1_modelCylindre_normal[];
extern SVECTOR level1_modelCylindre_uv[];
extern CVECTOR level1_modelCylindre_color[];
extern PRIM level1_modelCylindre_index[];
extern VANIM level1_modelCylindre_anim;
extern MATRIX level1_modelCylindre_matrix;
extern VECTOR level1_modelCylindre_pos;
extern SVECTOR level1_modelCylindre_rot;
extern short level1_modelCylindre_isRigidBody;
extern short level1_modelCylindre_isStaticBody;
extern short level1_modelCylindre_isPrism;
extern short level1_modelCylindre_isAnim;
extern short level1_modelCylindre_isActor;
extern short level1_modelCylindre_isLevel;
extern short level1_modelCylindre_isBG;
extern short level1_modelCylindre_isSprite;
extern long level1_modelCylindre_p;
extern long level1_modelCylindre_OTz;
extern BODY level1_modelCylindre_body;
extern TMESH level1_modelCylindre;
extern unsigned long _binary_TIM_home_tim_start[];
extern unsigned long _binary_TIM_home_tim_end[];
extern unsigned long _binary_TIM_home_tim_length;
extern TIM_IMAGE level1_tim_home;
extern MESH level1_meshCylindre;
extern SVECTOR modelgnd_mesh[];
extern SVECTOR level1_modelgnd_normal[];
extern SVECTOR level1_modelgnd_uv[];
extern CVECTOR level1_modelgnd_color[];
extern PRIM level1_modelgnd_index[];
extern MATRIX level1_modelgnd_matrix;
extern VECTOR level1_modelgnd_pos;
extern SVECTOR level1_modelgnd_rot;
extern short level1_modelgnd_isRigidBody;
extern short level1_modelgnd_isStaticBody;
extern short level1_modelgnd_isPrism;
extern short level1_modelgnd_isAnim;
extern short level1_modelgnd_isActor;
extern short level1_modelgnd_isLevel;
extern short level1_modelgnd_isBG;
extern short level1_modelgnd_isSprite;
extern long level1_modelgnd_p;
extern long level1_modelgnd_OTz;
extern BODY level1_modelgnd_body;
extern TMESH level1_modelgnd;
extern MESH level1_meshgnd;
extern SVECTOR modelgnd_001_mesh[];
extern SVECTOR level1_modelgnd_001_normal[];
extern SVECTOR level1_modelgnd_001_uv[];
extern CVECTOR level1_modelgnd_001_color[];
extern PRIM level1_modelgnd_001_index[];
extern MATRIX level1_modelgnd_001_matrix;
extern VECTOR level1_modelgnd_001_pos;
extern SVECTOR level1_modelgnd_001_rot;
extern short level1_modelgnd_001_isRigidBody;
extern short level1_modelgnd_001_isStaticBody;
extern short level1_modelgnd_001_isPrism;
extern short level1_modelgnd_001_isAnim;
extern short level1_modelgnd_001_isActor;
extern short level1_modelgnd_001_isLevel;
extern short level1_modelgnd_001_isBG;
extern short level1_modelgnd_001_isSprite;
extern long level1_modelgnd_001_p;
extern long level1_modelgnd_001_OTz;
extern BODY level1_modelgnd_001_body;
extern TMESH level1_modelgnd_001;
extern MESH level1_meshgnd_001;
extern SVECTOR modelgnd_003_mesh[];
extern SVECTOR level1_modelgnd_003_normal[];
extern SVECTOR level1_modelgnd_003_uv[];
extern CVECTOR level1_modelgnd_003_color[];
extern PRIM level1_modelgnd_003_index[];
extern MATRIX level1_modelgnd_003_matrix;
extern VECTOR level1_modelgnd_003_pos;
extern SVECTOR level1_modelgnd_003_rot;
extern short level1_modelgnd_003_isRigidBody;
extern short level1_modelgnd_003_isStaticBody;
extern short level1_modelgnd_003_isPrism;
extern short level1_modelgnd_003_isAnim;
extern short level1_modelgnd_003_isActor;
extern short level1_modelgnd_003_isLevel;
extern short level1_modelgnd_003_isBG;
extern short level1_modelgnd_003_isSprite;
extern long level1_modelgnd_003_p;
extern long level1_modelgnd_003_OTz;
extern BODY level1_modelgnd_003_body;
extern TMESH level1_modelgnd_003;
extern MESH level1_meshgnd_003;
extern SVECTOR modelgnd_002_mesh[];
extern SVECTOR level1_modelgnd_002_normal[];
extern SVECTOR level1_modelgnd_002_uv[];
extern CVECTOR level1_modelgnd_002_color[];
extern PRIM level1_modelgnd_002_index[];
extern MATRIX level1_modelgnd_002_matrix;
extern VECTOR level1_modelgnd_002_pos;
extern SVECTOR level1_modelgnd_002_rot;
extern short level1_modelgnd_002_isRigidBody;
extern short level1_modelgnd_002_isStaticBody;
extern short level1_modelgnd_002_isPrism;
extern short level1_modelgnd_002_isAnim;
extern short level1_modelgnd_002_isActor;
extern short level1_modelgnd_002_isLevel;
extern short level1_modelgnd_002_isBG;
extern short level1_modelgnd_002_isSprite;
extern long level1_modelgnd_002_p;
extern long level1_modelgnd_002_OTz;
extern BODY level1_modelgnd_002_body;
extern TMESH level1_modelgnd_002;
extern MESH level1_meshgnd_002;
extern SVECTOR modelobject_mesh[];
extern SVECTOR level1_modelobject_normal[];
extern SVECTOR level1_modelobject_uv[];
extern CVECTOR level1_modelobject_color[];
extern PRIM level1_modelobject_index[];
extern MATRIX level1_modelobject_matrix;
extern VECTOR level1_modelobject_pos;
extern SVECTOR level1_modelobject_rot;
extern short level1_modelobject_isRigidBody;
extern short level1_modelobject_isStaticBody;
extern short level1_modelobject_isPrism;
extern short level1_modelobject_isAnim;
extern short level1_modelobject_isActor;
extern short level1_modelobject_isLevel;
extern short level1_modelobject_isBG;
extern short level1_modelobject_isSprite;
extern long level1_modelobject_p;
extern long level1_modelobject_OTz;
extern BODY level1_modelobject_body;
extern TMESH level1_modelobject;
extern MESH level1_meshobject;
extern SVECTOR modelPlan_mesh[];
extern SVECTOR level1_modelPlan_normal[];
extern SVECTOR level1_modelPlan_uv[];
extern CVECTOR level1_modelPlan_color[];
extern PRIM level1_modelPlan_index[];
extern MATRIX level1_modelPlan_matrix;
extern VECTOR level1_modelPlan_pos;
extern SVECTOR level1_modelPlan_rot;
extern short level1_modelPlan_isRigidBody;
extern short level1_modelPlan_isStaticBody;
extern short level1_modelPlan_isPrism;
extern short level1_modelPlan_isAnim;
extern short level1_modelPlan_isActor;
extern short level1_modelPlan_isLevel;
extern short level1_modelPlan_isBG;
extern short level1_modelPlan_isSprite;
extern long level1_modelPlan_p;
extern long level1_modelPlan_OTz;
extern BODY level1_modelPlan_body;
extern TMESH level1_modelPlan;
extern MESH level1_meshPlan;
extern SVECTOR modelSphere_mesh[];
extern SVECTOR level1_modelSphere_normal[];
extern SVECTOR level1_modelSphere_uv[];
extern CVECTOR level1_modelSphere_color[];
extern PRIM level1_modelSphere_index[];
extern MATRIX level1_modelSphere_matrix;
extern VECTOR level1_modelSphere_pos;
extern SVECTOR level1_modelSphere_rot;
extern short level1_modelSphere_isRigidBody;
extern short level1_modelSphere_isStaticBody;
extern short level1_modelSphere_isPrism;
extern short level1_modelSphere_isAnim;
extern short level1_modelSphere_isActor;
extern short level1_modelSphere_isLevel;
extern short level1_modelSphere_isBG;
extern short level1_modelSphere_isSprite;
extern long level1_modelSphere_p;
extern long level1_modelSphere_OTz;
extern BODY level1_modelSphere_body;
extern TMESH level1_modelSphere;
extern MESH level1_meshSphere;
extern SVECTOR modelSphere_001_mesh[];
extern SVECTOR level1_modelSphere_001_normal[];
extern SVECTOR level1_modelSphere_001_uv[];
extern CVECTOR level1_modelSphere_001_color[];
extern PRIM level1_modelSphere_001_index[];
extern MATRIX level1_modelSphere_001_matrix;
extern VECTOR level1_modelSphere_001_pos;
extern SVECTOR level1_modelSphere_001_rot;
extern short level1_modelSphere_001_isRigidBody;
extern short level1_modelSphere_001_isStaticBody;
extern short level1_modelSphere_001_isPrism;
extern short level1_modelSphere_001_isAnim;
extern short level1_modelSphere_001_isActor;
extern short level1_modelSphere_001_isLevel;
extern short level1_modelSphere_001_isBG;
extern short level1_modelSphere_001_isSprite;
extern long level1_modelSphere_001_p;
extern long level1_modelSphere_001_OTz;
extern BODY level1_modelSphere_001_body;
extern TMESH level1_modelSphere_001;
extern MESH level1_meshSphere_001;
extern SVECTOR modelwall_mesh[];
extern SVECTOR level1_modelwall_normal[];
extern SVECTOR level1_modelwall_uv[];
extern CVECTOR level1_modelwall_color[];
extern PRIM level1_modelwall_index[];
extern MATRIX level1_modelwall_matrix;
extern VECTOR level1_modelwall_pos;
extern SVECTOR level1_modelwall_rot;
extern short level1_modelwall_isRigidBody;
extern short level1_modelwall_isStaticBody;
extern short level1_modelwall_isPrism;
extern short level1_modelwall_isAnim;
extern short level1_modelwall_isActor;
extern short level1_modelwall_isLevel;
extern short level1_modelwall_isBG;
extern short level1_modelwall_isSprite;
extern long level1_modelwall_p;
extern long level1_modelwall_OTz;
extern BODY level1_modelwall_body;
extern TMESH level1_modelwall;
extern MESH level1_meshwall;
extern SVECTOR modelwall_001_mesh[];
extern SVECTOR level1_modelwall_001_normal[];
extern SVECTOR level1_modelwall_001_uv[];
extern CVECTOR level1_modelwall_001_color[];
extern PRIM level1_modelwall_001_index[];
extern MATRIX level1_modelwall_001_matrix;
extern VECTOR level1_modelwall_001_pos;
extern SVECTOR level1_modelwall_001_rot;
extern short level1_modelwall_001_isRigidBody;
extern short level1_modelwall_001_isStaticBody;
extern short level1_modelwall_001_isPrism;
extern short level1_modelwall_001_isAnim;
extern short level1_modelwall_001_isActor;
extern short level1_modelwall_001_isLevel;
extern short level1_modelwall_001_isBG;
extern short level1_modelwall_001_isSprite;
extern long level1_modelwall_001_p;
extern long level1_modelwall_001_OTz;
extern BODY level1_modelwall_001_body;
extern TMESH level1_modelwall_001;
extern MESH level1_meshwall_001;
extern SVECTOR modelwall_002_mesh[];
extern SVECTOR level1_modelwall_002_normal[];
extern SVECTOR level1_modelwall_002_uv[];
extern CVECTOR level1_modelwall_002_color[];
extern PRIM level1_modelwall_002_index[];
extern MATRIX level1_modelwall_002_matrix;
extern VECTOR level1_modelwall_002_pos;
extern SVECTOR level1_modelwall_002_rot;
extern short level1_modelwall_002_isRigidBody;
extern short level1_modelwall_002_isStaticBody;
extern short level1_modelwall_002_isPrism;
extern short level1_modelwall_002_isAnim;
extern short level1_modelwall_002_isActor;
extern short level1_modelwall_002_isLevel;
extern short level1_modelwall_002_isBG;
extern short level1_modelwall_002_isSprite;
extern long level1_modelwall_002_p;
extern long level1_modelwall_002_OTz;
extern BODY level1_modelwall_002_body;
extern TMESH level1_modelwall_002;
extern MESH level1_meshwall_002;
extern SVECTOR modelwall_003_mesh[];
extern SVECTOR level1_modelwall_003_normal[];
extern SVECTOR level1_modelwall_003_uv[];
extern CVECTOR level1_modelwall_003_color[];
extern PRIM level1_modelwall_003_index[];
extern MATRIX level1_modelwall_003_matrix;
extern VECTOR level1_modelwall_003_pos;
extern SVECTOR level1_modelwall_003_rot;
extern short level1_modelwall_003_isRigidBody;
extern short level1_modelwall_003_isStaticBody;
extern short level1_modelwall_003_isPrism;
extern short level1_modelwall_003_isAnim;
extern short level1_modelwall_003_isActor;
extern short level1_modelwall_003_isLevel;
extern short level1_modelwall_003_isBG;
extern short level1_modelwall_003_isSprite;
extern long level1_modelwall_003_p;
extern long level1_modelwall_003_OTz;
extern BODY level1_modelwall_003_body;
extern TMESH level1_modelwall_003;
extern MESH level1_meshwall_003;
extern MESH * level1_meshes[14];
extern int level1_meshes_length;
extern CAMANGLE level1_camAngle_camPath_001;
extern CAMANGLE * level1_camAngles[0];
extern SIBLINGS level1_nodegnd_003_siblings;
extern CHILDREN level1_nodegnd_003_objects;
extern CHILDREN level1_nodegnd_003_rigidbodies;
extern NODE level1_nodegnd_003;
extern SIBLINGS level1_nodegnd_001_siblings;
extern CHILDREN level1_nodegnd_001_objects;
extern CHILDREN level1_nodegnd_001_rigidbodies;
extern NODE level1_nodegnd_001;
extern SIBLINGS level1_nodegnd_002_siblings;
extern CHILDREN level1_nodegnd_002_objects;
extern CHILDREN level1_nodegnd_002_rigidbodies;
extern NODE level1_nodegnd_002;
extern SIBLINGS level1_nodegnd_siblings;
extern CHILDREN level1_nodegnd_objects;
extern CHILDREN level1_nodegnd_rigidbodies;
extern NODE level1_nodegnd;
extern MESH * level1_actorPtr;
extern MESH * level1_levelPtr;
extern MESH * level1_propPtr;
extern CAMANGLE * level1_camPtr;
extern NODE * level1_curNode;
extern NODE level1_nodegnd_003;
extern NODE level1_nodegnd_001;
extern NODE level1_nodegnd_002;
extern NODE level1_nodegnd;

159
main.c
View File

@ -29,41 +29,47 @@
#include "graphics.h" #include "graphics.h"
#include "space.h" #include "space.h"
#include "defines.h" #include <libcd.h>
//~ #include "defines.h"
// START OVERLAY // START OVERLAY
//~ extern u_long __load_start_ovly0; extern u_long __load_start_ovly0;
//~ #define RUN_OVERLAY1 //~ #define LEVEL 0
//~ #define USE_POINTER //#define USE_POINTER
//~ #ifdef RUN_OVERLAY1 //~ #if LEVEL == 0
//~ static const char*const overlayFile = "\\LEVEL.bin;1"; //~ static const char*const overlayFile = "\\level.bin;1";
//~ #else //~ #else
//~ static const char*const overlayFile = "\\LEVEL1.bin;1"; //~ static const char*const overlayFile = "\\level1.bin;1";
//~ #endif //~ #endif
//~ #ifdef USE_POINTER //~ #ifdef USE_POINTER
//~ #ifdef RUN_OVERLAY1 //~ #if LEVEL == 0
//~ #include "levels/level.h" //~ #include "levels/level.h"
//~ #else //~ #else
//~ #include "levels/level1.h" //~ #include "levels/level1.h"
//~ #endif //~ #endif
//~ #else //~ #else
//~ #define str (char*)(&__load_start_ovly0) //~ #define str (char*)(&__load_start_ovly0)
//~ #endif //~ #endif
// START OVERLAY // END OVERLAY
//~ #if LEVEL == 0 //~ #if LEVEL == 0
#include "levels/level.h" #include "levels/level.h"
//~ #elif LEVEL == 1 //~ #elif LEVEL == 1
//~ #include "levels/level1.h" #include "levels/level1.h"
//~ #endif //~ #endif
static char* overlayFile;
char level = 1;
// Display and draw environments, double buffered // Display and draw environments, double buffered
DISPENV disp[2]; DISPENV disp[2];
@ -129,31 +135,28 @@ VECTOR fVecActor = {0,0,0,0};
u_long triCount = 0; u_long triCount = 0;
// TODO : Add switch case to get the correct pointers
// Get needed pointers from level file // Get needed pointers from level file
MATRIX * cmat = &level_cmat; MATRIX * cmat, *lgtmat;
MATRIX * lgtmat = &level_lgtmat; MESH * actorPtr, * levelPtr, * propPtr, ** meshes;
MESH * actorPtr, * levelPtr, * propPtr; int * meshes_length;
NODE * curNode; NODE * curNode;
MESH ** meshes = level_meshes;
int * meshes_length = &level_meshes_length;
CAMPATH * camPath; CAMPATH * camPath;
CAMANGLE * camPtr; CAMANGLE * camPtr, ** camAngles;
CAMANGLE ** camAngles = level_camAngles;
// Get rid of those // Get rid of those
MESH * meshPlan = &level_meshPlan; MESH * meshPlan;
VECTOR * modelPlan_pos = &level_modelPlan_pos; VECTOR * modelPlan_pos;
// Pad // Pad
@ -161,28 +164,86 @@ void callback();
int main() { int main() {
actorPtr = level_actorPtr; CdInit();
levelPtr = level_levelPtr; int cdread = 0, cdsync = 1;
if ( level == 0) {
overlayFile = "\\level.bin;1";
} else {
overlayFile = "\\level1.bin;1";
}
cdread = CdReadFile( (char *)(overlayFile), &__load_start_ovly0, 0);
cdsync = CdReadSync(0, NULL);
propPtr = level_propPtr; if ( level == 0) {
camPtr = level_camPtr; cmat = &level_cmat;
curNode = level_curNode; lgtmat = &level_lgtmat;
camPath = &level_camPath; meshes = level_meshes;
meshes_length = &level_meshes_length;
actorPtr = level_actorPtr;
levelPtr = level_levelPtr;
propPtr = level_propPtr;
camPtr = level_camPtr;
camPath = &level_camPath;
camAngles = level_camAngles;
curNode = level_curNode;
// Move these to drawPoly()
meshPlan = &level_meshPlan;
modelPlan_pos = &level_modelPlan_pos;
} else if ( level == 1) {
cmat = &level1_cmat;
lgtmat = &level1_lgtmat;
meshes = level1_meshes;
meshes_length = &level1_meshes_length;
actorPtr = level1_actorPtr;
levelPtr = level1_levelPtr;
propPtr = level1_propPtr;
camPtr = level1_camPtr;
camPath = &level1_camPath;
camAngles = level1_camAngles;
curNode = level1_curNode;
// Move these to drawPoly()
meshPlan = &level1_meshPlan;
modelPlan_pos = &level1_modelPlan_pos;
}
// Overlay // Overlay
//~ CdInit();
//~ CdReadFile( (char *)(overlayFile), &__load_start_ovly0, 0);
//~ CdReadSync(0, NULL);
//~ cmatP = &cmat;
VECTOR sp = {CENTERX,CENTERY,0}; VECTOR sp = {CENTERX,CENTERY,0};
VECTOR wp = {0,0,0}; VECTOR wp = {0,0,0};
@ -202,7 +263,6 @@ int main() {
init(disp, draw, db, cmat, &BGc, &BKc); init(disp, draw, db, cmat, &BGc, &BKc);
generateTable(); generateTable();
VSyncCallback(callback); VSyncCallback(callback);
@ -280,6 +340,8 @@ int main() {
while ( VSync(1) ) { while ( VSync(1) ) {
FntPrint("%d %d %x\n", cdread, cdsync, __load_start_ovly0);
// Clear the main OT // Clear the main OT
ClearOTagR(otdisc[db], OT2LEN); ClearOTagR(otdisc[db], OT2LEN);
@ -930,7 +992,7 @@ int main() {
//~ FntPrint("CurNode : %x\nIndex: %d", curNode, curNode->siblings->index); //~ FntPrint("CurNode : %x\nIndex: %d", curNode, curNode->siblings->index);
FntPrint("Time : %d dt :%d\n", VSync(-1) / 60, dt); FntPrint("Time : %d dt :%d level: %d\n", VSync(-1) / 60, dt, level);
//~ FntPrint("%d\n", curCamAngle ); //~ FntPrint("%d\n", curCamAngle );
//~ FntPrint("%x\n", primbuff[db]); //~ FntPrint("%x\n", primbuff[db]);
@ -1049,6 +1111,7 @@ void callback() {
if ( pad & PADL1 ) { if ( pad & PADL1 ) {
lgtang.vz += 32; lgtang.vz += 32;
level = !level;
} }

40
overlay.ld Normal file
View File

@ -0,0 +1,40 @@
__heap_base = MAX(__ovly0_end, __ovly1_end);
SECTIONS {
OVERLAY __bss_end : NOCROSSREFS SUBALIGN(4)
{
.ovly0
{
KEEP(levels/level.o(.text))
__ovly0_ctor = .;
KEEP(levels/level.o(.text.startup._GLOBAL__*))
KEEP(levels/level.o(.text.*))
KEEP(levels/level.o(.rodata*))
KEEP(levels/level.o(.sdata*))
KEEP(levels/level.o(.data*))
KEEP(levels/level.o(.sbss*))
KEEP(levels/level.o(.bss*))
KEEP(levels/level.o(.ctors))
. = ALIGN(4);
__ovly0_end = .;
}
.ovly1
{
KEEP(levels/level1.o(.text))
__ovly1_ctor = .;
KEEP(levels/level1.o(.text.startup._GLOBAL__*))
KEEP(levels/level1.o(.text.*))
KEEP(levels/level1.o(.rodata*))
KEEP(levels/level1.o(.sdata*))
KEEP(levels/level1.o(.data*))
KEEP(levels/level1.o(.sbss*))
KEEP(levels/level1.o(.bss*))
KEEP(levels/level1.o(.ctors))
. = ALIGN(4);
__ovly1_end = .;
}
}
}

View File

@ -8,10 +8,7 @@
#include "macros.h" #include "macros.h"
//~ #ifndef TYPES #include "custom_types.h"
#include "custom_types.h"
//~ #define TYPES 1
//~ #endif
short checkLineW( VECTOR * pointA, VECTOR * pointB, MESH * mesh ); short checkLineW( VECTOR * pointA, VECTOR * pointB, MESH * mesh );

1
psx.h
View File

@ -4,7 +4,6 @@
#include <libgte.h> #include <libgte.h>
#include <libgpu.h> #include <libgpu.h>
#include <libetc.h> #include <libetc.h>
#include <libcd.h>
#include "defines.h" #include "defines.h"