Good thing I’ve got these notes!
Looking at the sense today, it still looks active:
http://www.psxdev.net/ has annual comps!
I had the newsgroup archived… somewhere :(
Most of my low-res B/W textures were taken on the gameboy camera!
This is/was me!
Here’s a good video explaining what it was, remember this is back in 1997, the peak of the Playstation’s life!
Comments now disabled.
For comments or questions, please post on twitter @mgarcia_org.
Description: 2d scroller fighter using 3d objects in C++.
This is far from complete but I thought I would put some stuff up and
to share some ideas that I hacked out ........
So here it is (Current Versions -world v40 -obj v20).
I have converted all my loading to use cyclone, a file server for the
So instead of loading all my files into the memory of the playstation I can load each file of my computers hardrive when
Cyclone v2.0 File Server 16/06/99
Copyright(C)1999 Peter Armstrong
Started on 15-10-00.
The first number tells the size of the objects list and how many GsDOBJ2
to create and link,
the following numbers are used as references to link GsDOBJ2 to TMD data.
.e.g. TMD file has 4 3d objects (TMD ID's start from 0).
/************ TMD FILE *********
ID 0 FOOT
ID 1 LOWER LEG
ID 2 UPPER LEG
ID 3 WAIST
************ TMD FILE *********/
To save memory foot and leg parts can be reused instead of being included in the TMD file redundantly.
the object list looks like this ( GsDOBJ2 pointers are used after
(GsDOBJ2 *) 7, // Number of GsDOBJ2 objects in class but not it TMD, the TMD file only has 4 not 7.
(GsDOBJ2 *) 0, // GsDOBJ2 0 link to TMD ID 0 - foot LEFT
(GsDOBJ2 *) 1, // GsDOBJ2 1 link to TMD ID 1 - lower leg LEFT
(GsDOBJ2 *) 2, // GsDOBJ2 2 link to TMD ID 2 - upper leg LEFT
(GsDOBJ2 *) 3, // GsDOBJ2 3 link to TMD ID 3 - waist
(GsDOBJ2 *) 2, // GsDOBJ2 4 link to TMD ID 2 - upper leg RIGHT
(GsDOBJ2 *) 1, // GsDOBJ2 5 link to TMD ID 1 - lower leg RIGHT
(GsDOBJ2 *) 0 // GsDOBJ2 6 link to TMD ID 0 - foot RIGHT
It links the TMD data to GsDOBJ2 in an array - OBJ_DATA_m .
Then instead of using the OBJ_DATA_m array to refference the objects the olist is used.
for(int i = 0; i < OBJ_nobj_m; i++)
olist[i] = &OBJ_DATA_m[ (u_long)( olist[ i+1] ) ]; //converts to list to pointers - the +1 is to skip the first number
All TMD's colour values that are white can be change on the fly, giving
the appearance of many TMD objs
eg white legs and waist ( see pictures- only 2 TMD files used - top and bottom).
Obj_c stores the memory address of the TMD colour value (that
equals white) in a array called clist_m.
Before displaying the TMD the class changes the values of the deferenced pointers in the list with a given colour.
To get a colour list going I just give it the size of the TMD,
it searches from the start of the TMD to the end, looking for any
for(int i=0; i
if( *tmd == 0x00FFFFFF)
clist_m[i] = (colourTMD_t *)tmd;
I will rename this class to something like tmdController_c when I clean
up the code.
The class controls a person (I should have called it person_c or something....)..
A person is spilt into two, top (head , chest, upper arms and lower arms) and bottom (waist, upper legs and lower legs).
Each part has its own TMD & TOD data (see obj_c).
here is my init function
obj_c *top_obj, // pointer to the top obj
obj_c *bot_obj, // pointer to the bottom obj
// top colour values
// bottom colour values
This class controls the a person's top and bottom-
TOD Action (run, jump, kick etc) and Frame.
and the person's life value, coordinate, rotation, speed, name etc.
I will rename this class too.
each cell (if textured) has it's own CBA (clut for textures).
The original CLUT is loaded under the image and 15 others are
added after it to fill
the the rest of the tpage.
The red and green strips are my empty colours (easier to debug).
The world also moves the people and checks that its a valid move.
The world with 8 animated people walking randomly
max is 28 so far.
half the world with the orignal CBA