Quake3World.com Forums
     Programming Discussion
        Quake Live advertisement lump format specification


Post new topicReply to topic
Login | Profile | | FAQ | Search | IRC




Print view Previous topic | Next topic 
Topic Starter Topic: Quake Live advertisement lump format specification

The hell good boy
The hell good boy
Joined: 22 Jun 2011
Posts: 1614
PostPosted: 01-02-2018 11:03 AM           Profile Send private message  E-mail  Edit post Reply with quote


Hello. I found quite interesting page about Quake III Arena BSP file format specification: http://www.mralligator.com/q3/
According to this specification, Quake 3 has 17 different lumps.

Quake Live adds an 18th lump for advertisements. Google seems to be unable to find any informations about advertisements lump (or more generally Quake Live BSP file format). I've opened a testing map, which includes one advertisement billboard, in hexeditor. Knowing advertisements lump direntry being last (index 17, counting from 0), I've found offset value 113,588 and length value 128. When I looked up to the lump itself by accessing file address from the offset value (it's the very last lump in the file), I've found something that looks like bunch of integer values (32 integer numbers) for a single advertisement cell. First I've thought of a single integer being a cellId, identifying number for group of advertisements, but that implies 32 different advertisement billboards in the map. And there is just one.

Does anybody please know the advertisement lump cell specification? Could you please tell? It would help me at least partially understand the way advertisement boards work in Quake Live (and therefore specify best unique cellId values for each group of advertisement boards). I know that now when Quake Live migrated to Steam, the advertisement boards are obsolete, but it's kind of something I'm used to from Quake Live maps. And since I want to map for Quake 3 and Quake Live continuously, I need to identify Quake Live version from the original Quake 3 version of each map by these advertisement boards. All my maps will be in both Quake 3 and Quake Live version.



_________________
[ Quake III Arena by CZghost | Facebook | Twitter | YouTube | Google+ ]
While you feel the worst ever, turn around facing to Sun and all shadows will pass behind you.” - John Lennon


Top
                 

The hell good boy
The hell good boy
Joined: 22 Jun 2011
Posts: 1614
PostPosted: 01-02-2018 11:22 AM           Profile Send private message  E-mail  Edit post Reply with quote


Also, the effects lump cell contains, according to specification page, and unknown integer value, like defined here:
Code:
typedef struct {
   char[64] name;            // Effect shader
   int      brush;           // Brush that generated this effect
   int      unknown;         // Always 5, except in q3dm8, which has one effect with -1
} effect_t;

What does the unknown value do? Are there any other values than 5 or -1?



_________________
[ Quake III Arena by CZghost | Facebook | Twitter | YouTube | Google+ ]
While you feel the worst ever, turn around facing to Sun and all shadows will pass behind you.” - John Lennon


Top
                 

The hell good boy
The hell good boy
Joined: 22 Jun 2011
Posts: 1614
PostPosted: 01-23-2018 07:19 AM           Profile Send private message  E-mail  Edit post Reply with quote


So I've look into q3map2 source code and I've got this information:
Code:
// Advertisements lump
typedef struct {
    // Single advertisements lump cell (a single advertisement data)
    int       cellId;          // The cellId key/value pair defined in Radiant
    vec3_t    normal;          // Normal vector to the advertisement plane
    vec3_t[4] rect;         // Advertisement plane boundaries
    char[64]  model;           // Advertisement display model
} advertisement_t;


However, I can't figure out where is the vec3_t structure defined, so I can figure out the defined lump size from complete data. It is definitely not in q3map2.h file. But I may actually figured it out from previous definition based on the linked page. vector structures are probably defined like this:
Code:
typedef struct {
   float s, t;
} vec_t;

typedef struct {
   float x, y, z;
} vec3_t;



_________________
[ Quake III Arena by CZghost | Facebook | Twitter | YouTube | Google+ ]
While you feel the worst ever, turn around facing to Sun and all shadows will pass behind you.” - John Lennon


Top
                 
Quake3World.com | Forum Index | Programming Discussion


Post new topic Reply to topic


cron
Quake3World.com
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group