|
Post by bitshifter on Dec 6, 2011 7:42:42 GMT -5
|
|
|
Post by bitshifter on Oct 23, 2011 0:51:47 GMT -5
I am trying to find the source code and binary/res for these engines:
EGL Quake II XP Quake II Evolved
Please leave a valid link or attachment...
I want to test drive and study source code, so if there is other good ones, then list it also...
The ones i already have are:
AprQ2 kmquake2 3.23 patch BeefQuake RoachQuake Q2CP BersQ2 Quake2MinGW Quake2MAX R1Q2 Q2GM Q2PRO
Edit: Found a few and edit the list...
|
|
|
Post by bitshifter on Oct 19, 2011 17:56:48 GMT -5
Hehe, not the menu, but the scroller...
|
|
|
Post by bitshifter on Oct 19, 2011 1:46:59 GMT -5
|
|
|
RAGE!
Oct 9, 2011 13:28:48 GMT -5
Post by bitshifter on Oct 9, 2011 13:28:48 GMT -5
I was very impressed by the amount of detail found everywhere. How does such a small team make so many resources in so little time?
|
|
|
Post by bitshifter on Oct 9, 2011 13:03:37 GMT -5
I also have 2 requests:
1) Some versions of Win32 reserve the 4 low-order bits in WM_SYSCOMMAND message. We must mask them off to prevent screen saver bug...
case WM_SYSCOMMAND: switch (wParam & 0xfff0) ...
2) The scrolling credits gets bumpy once the text reaches top of screen. Font should scroll from vid.height to -10 to scroll on/off properly. Although yours alpha blend so changing the if < 0 to if <= 0 does ok.
Edit: Here is my engines scroller for look-see...
void M_Credits_MenuDraw (void) { int i, y;
y = viddef.height - ((cls.realtime - credits_start_time) / 40.0) + (credits_start_line * 10); if (y <= -10) { credits_start_line++; if (!credits[credits_start_line]) { credits_start_line = 0; credits_start_time = cls.realtime; //y = viddef.height; return; } y = 0; }
for (i = credits_start_line; credits[i] && y < (int)viddef.height; y += 10, i++) { int x, j, xstart, bold, stringoffset;
if (y <= -8) continue;
if (credits[i][0] == '+') { bold = 128; stringoffset = 1; } else { bold = 0; stringoffset = 0; }
xstart = (viddef.width - (strlen (credits[i]) * 8) - (stringoffset * 8)) / 2;
for (j = stringoffset; credits[i][j]; j++) { x = xstart + (j * 8); re.DrawChar (x, y, credits[i][j] + bold); } } }
If you want more, just ask...
|
|
|
Post by bitshifter on Oct 3, 2011 20:56:24 GMT -5
I am a coder, not a mapper, but i will be able to test. Although i wish to learn mapping in the near future... Maybe if the contest entries came with .map and .bsp files i could try the map and also view it in the editor.
|
|
|
Post by bitshifter on Sept 9, 2011 2:07:49 GMT -5
My FPS counter is simple and flexible
void SCR_DrawFPS (void) { static char str[8] = ""; static float elapse = 0; static int frames = 0; static int x = 0;
if (!scr_drawfps->value) return;
frames += 1; elapse += cls.frametime;
if (elapse >= scr_drawfps->value) { int cells;
cells = sprintf(str,"%4.0ffps",1/(elapse/frames)) + 1; x = viddef.width - (cells * 8);
frames = 0; elapse = 0; }
DrawString(x,4,str); }
Features: 1) Variable update frequency. 2) Averaged counts (no snapshots). 3) Right justifies on screen.
Ramble: 1) Compiler mileage may vary. (ok with lcc) 2) Suggested update value: 0.1 ~ 1.0 (0 = off) 3) Not very optimal, but easy to read. 4) Assumes 8 pixel glyph width.
Should i make full installation tutorial for this?
|
|
|
Post by bitshifter on Aug 4, 2011 6:03:07 GMT -5
< So.. why is it you're supporting ref_soft again?
1) It can be faster than OpenGL. 2) It can do things OpenGL cant. 3) It can look better than OpenGL. 4) Because i like software rendering.
|
|
|
Post by bitshifter on Aug 1, 2011 19:12:40 GMT -5
You can use ASM or C code depending on the id386 flag. I plan to support both ref_gl and ref_soft in my sources. I am not using any ASM code in this project for portability.
Edit: I have turned off texture mapping and found the brush which the door hinge attaches to is the one causing the problem. I think before going crazy with the code i will first decompile the map and see how this part is actually being defined. The code may be ok, but maybe funny mapping techniques may lead to such a problem under certain conditions. I think reversing such a thing for debugging purposes would not be frowned upon as long as i destroy the map file after i am done inspecting it. I'll keep you posted on my results...
|
|
|
Post by bitshifter on Jul 31, 2011 21:08:46 GMT -5
This bug appears in both my sources and in Id's demo release. Using ref_soft i can get graphical artifacts in a few places.
For example: Goto demo3 and drop into the circular sewage pit. Position yourself in between the two doors and face the switch which will be across the walkway. You should be standing underneath the ceiling light. Now slowly move your feet and eyes around while looking out the door. At certain angles a junk polygon will start to fill the doorway!
I have found a few places in each demo where things like this happen. Right along the intersection of plane/portal areas.
I can post a screenshot if it would help...
So, has anyone heard of this bug? Do you have a fix for it?
|
|
|
Post by bitshifter on Jul 30, 2011 5:05:06 GMT -5
This tutorial will show how we can lower the CPU usage while playing Quake2 on Win32. Step 1) Open the file /qcommon/common.c and add the new global variable: ... cvar_t *showtrace; cvar_t *dedicated; cvar_t *share_cpu; /* ++ bitshifter */ ...
Step 2) Scroll down to the Qcommon_Init procedure and add this code: ... #ifdef DEDICATED_ONLY dedicated = Cvar_Get ("dedicated", "1", CVAR_NOSET); #else dedicated = Cvar_Get ("dedicated", "0", CVAR_NOSET); #endif
/* ++ bitshifter */ share_cpu = Cvar_Get ("share_cpu", "0", CVAR_ARCHIVE); ...
Save and close the file. Step 2) Open the file /qcommon/common.h and scroll down and add this to the MISC section: ... extern cvar_t *share_cpu; /* ++ bitshifter */ extern cvar_t *developer; extern cvar_t *dedicated; extern cvar_t *host_speeds; extern cvar_t *log_stats; ...
Save and close the file. Step 3) Open the file /win32/sys_win.c and add this code to the WinMain procedure: ... while (PeekMessage(&msg,NULL,0,0,PM_NOREMOVE)) { if (!GetMessage(&msg,NULL,0,0)) Com_Quit(); sys_msg_time = msg.time; TranslateMessage(&msg); DispatchMessage(&msg); }
if (share_cpu->value) /* ++ bitshifter */ Sleep((DWORD)share_cpu->value);
do { newtime = Sys_Milliseconds(); time = newtime - oldtime;
} while (time < 1); ...
Save and close the file. Step 4) Compile your sources and go test it out By default the share_cpu value is zero, causing it to be a CPU hog (like normal). You can ask the console its current value by typing: share_cpu You can set the value by typing: share_cpu 10 You can clear the value by typing: share_cpu 0 The value determines how long the task scheduler sleeps. Of course we are trading FPS for CPU time, but on fast PC is no problem. A steady 24 FPS is all you need to have smooth playable game. On my 3+ ghz Pentium 4 share_cpu 10 CPU usage 50~60% FPS 25 REF ref_soft REZ 1024 768 FS 0 sets it to off 10 sleeps 10 milliseconds ... 20 sleeps 20 milliseconds ... Any comments or criticism is greatly appreciated. Have fun PS: How do i define colors in code?
|
|