It's not actually RARE (since it was all found on this forum), but the word was added for the sake of clickbait.

All the credit goes to Jimmy and Chuck Jones (of course) - I just made a little slideshow with some classic music to go with it.
This post has been edited by Sanek: 09 June 2017 - 02:44 AM
This post has been edited by icecoldduke: 09 June 2017 - 04:54 PM
This post has been edited by Rellik: 11 June 2017 - 03:41 PM
This post has been edited by Nancsi: 11 June 2017 - 11:16 PM
/************************************************************************* POSITION VARIABLES: POSX is your x - position ranging from 0 to 65535 POSY is your y - position ranging from 0 to 65535 (the length of a side of the grid in EDITBORD would be 1024) POSZ is your z - position (height) ranging from 0 to 65535, 0 highest. ANG is your angle ranging from 0 to 2047. Instead of 360 degrees, or 2 * PI radians, I use 2048 different angles, so 90 degrees would be 512 in my system. SPRITE VARIABLES: EXTERN short headspritesect[MAXSECTORS+1], headspritestat[MAXSTATUS+1]; EXTERN short prevspritesect[MAXSPRITES], prevspritestat[MAXSPRITES]; EXTERN short nextspritesect[MAXSPRITES], nextspritestat[MAXSPRITES]; Example: if the linked lists look like the following: 旼컴컴컴컴컴컴컴컴컴컴 컴컴컴컴컴컴컴컴컴컴컴 컴컴컴컴컴컴컴컴컴커 ? Sector lists: Status lists: ? 쳐컴컴컴컴컴컴컴컴컴컴 컴컴컴컴컴컴컴컴컴컴컴 컴컴컴컴컴컴컴컴컴캑 ? Sector0: 4, 5, 8 Status0: 2, 0, 8 ? ? Sector1: 16, 2, 0, 7 Status1: 4, 5, 16, 7, 3, 9 ? ? Sector2: 3, 9 ? 읕컴컴컴컴컴컴컴컴컴컴 컴컴컴컴컴컴컴컴컴컴컴 컴컴컴컴컴컴컴컴컴켸 Notice that each number listed above is shown exactly once on both the left and right side. This is because any sprite that exists must be in some sector, and must have some kind of status that you define. Coding example #1: To go through all the sprites in sector 1, the code can look like this: sectnum = 1; i = headspritesect[sectnum]; while (i != -1) { nexti = nextspritesect[i]; //your code goes here //ex: printf("Sprite %d is in sector %d\n",i,sectnum); i = nexti; } Coding example #2: To go through all sprites with status = 1, the code can look like this: statnum = 1; //status 1 i = headspritestat[statnum]; while (i != -1) { nexti = nextspritestat[i]; //your code goes here //ex: printf("Sprite %d has a status of 1 (active)\n",i,statnum); i = nexti; } insertsprite(short sectnum, short statnum); deletesprite(short spritenum); changespritesect(short spritenum, short newsectnum); changespritestat(short spritenum, short newstatnum); TILE VARIABLES: NUMTILES - the number of tiles found TILES.DAT. TILESIZX[MAXTILES] - simply the x-dimension of the tile number. TILESIZY[MAXTILES] - simply the y-dimension of the tile number. WALOFF[MAXTILES] - the actual 32-bit offset pointing to the top-left corner of the tile. PICANM[MAXTILES] - flags for animating the tile. TIMING VARIABLES: TOTALCLOCK - When the engine is initialized, TOTALCLOCK is set to zero. From then on, it is incremented 120 times a second by 1. That means that the number of seconds elapsed is totalclock / 120. NUMFRAMES - The number of times the draw3dscreen function was called since the engine was initialized. This helps to determine frame rate. (Frame rate = numframes * 120 / totalclock.) OTHER VARIABLES: STARTUMOST[320] is an array of the highest y-coordinates on each column that my engine is allowed to write to. You need to set it only once. STARTDMOST[320] is an array of the lowest y-coordinates on each column that my engine is allowed to write to. You need to set it only once. SINTABLE[2048] is a sin table with 2048 angles rather than the normal 360 angles for higher precision. Also since SINTABLE is in all integers, the range is multiplied by 16383, so instead of the normal -1<sin(x)<1, the range of sintable is -16383<sintable[]<16383 If you use this sintable, you can possibly speed up your code as well as save space in memory. If you plan to use sintable, 2 identities you may want to keep in mind are: sintable[ang&2047] = sin(ang * (3.141592/1024)) * 16383 sintable[(ang+512)&2047] = cos(ang * (3.141592/1024)) * 16383 NUMSECTORS - the total number of existing sectors. Modified every time you call the loadboard function. ***************************************************************************/
Cuss Pack README.TXT said:
This post has been edited by High Treason: 27 June 2017 - 08:15 PM
Sanek, on 01 July 2017 - 07:57 AM, said:
// RRGHBETA 1.02 - space btwn leavetrax for walk is now actioncount 4
defineskillname 0 AMATEUR defineskillname 1 EXPERT
definelevelname 0 0 e1l1.map 04:45 03:53 LAKE SWAMPY definelevelname 0 1 e1l2.map 04:05 03:46 SAGEBRUSH FLATS definelevelname 0 2 e1l3.map 00:00 00:00 OZARK FOREST definelevelname 0 3 e1l4.map 00:00 00:00 SNOWBUSH RIDGE definelevelname 0 4 e1l5.map 00:00 00:00 NORTH RANGE definelevelname 0 5 e1l6.map 00:00 00:00 SOUTH RANGE definelevelname 0 6 e1l7.map 00:00 00:00 TEST MAP
This post has been edited by Marphy Black: 02 July 2017 - 06:32 PM
Player Lin, on 30 August 2013 - 09:09 AM, said:
This post has been edited by neznam: 16 September 2017 - 12:47 PM
neznam, on 16 September 2017 - 12:41 PM, said:
This post has been edited by Player Lin: 17 September 2017 - 08:00 AM
This post has been edited by MrFlibble: 20 September 2017 - 11:48 PM