Forum

qbismSuper8 builds

Discuss programming topics for the various GPL'd game engine sources.

Moderator: InsideQC Admins

Re: qbismSuper8 builds

Postby qbism » Mon Sep 17, 2012 4:54 pm

dreadlorde wrote:Do I need to install a codec pack (klite, cccp)?
Yes. klite is what I use. When I get to my comp I'll post some settings that look good on Youtube.
User avatar
qbism
 
Posts: 1236
Joined: Thu Nov 04, 2004 5:51 am

Re: qbismSuper8 builds

Postby Spirit » Mon Sep 17, 2012 5:07 pm

Just manually install the codecs you want. Again, I recommend capturing with H264 (x264) if you can. Nothing comes close to its quality. If you can use ffmpeg's presets, I use "slow". That leads to not completely insane sizes while maintaining very high quality images.
Improve Quaddicted, send me a pull request: https://github.com/SpiritQuaddicted/Quaddicted-reviews
Spirit
 
Posts: 1031
Joined: Sat Nov 20, 2004 9:00 pm

Re: qbismSuper8 builds

Postby qbism » Tue Sep 18, 2012 4:21 am

I'm another H264 convert. Codec name is X264 with klite. I set it to "very fast" in the settings dialogue if recording in real-time.
FFDS with mjpeg set to 95% quality is also OK.

XVID is a good default because it works out-of-the-box and encodes pretty fast. But quality is not there yet...
User avatar
qbism
 
Posts: 1236
Joined: Thu Nov 04, 2004 5:51 am

Re: qbismSuper8 builds

Postby raithe » Fri Oct 05, 2012 10:08 pm

Wanted to say thanks for the Awesome engine, really brings out the scale of some of the larger maps. Love it. Any chance of FakeCD (mp3) soundtracks support in future builds? Also a couple of bugs I noticed, if you're running fullscreen the game will crash to desktop on E2M5 right as the elevator comes out of the water. Menu is glitchy in windowed mode (bits stays on screen after closed). In Soul of Evil on the Devils Rift map when you activate the altar it goes to a cut scene showing a shambler being summoned, the game crashes to console with a rubble_01.mdl not precached message. This only happens if you're playing though the maps one after the other (rift is the 3rd counting the start) if you launch the map directly it usually works. Possibly related I get the occasional slew of "couldn't precache foo" messages when starting maps at times but it seems random and tricky to reproduce, though some mods do it more than others.

Thanks for the 8-bitty goodness, keep it coming.
raithe
 
Posts: 2
Joined: Thu Oct 04, 2012 6:01 am

Re: qbismSuper8 builds

Postby leileilol » Sat Oct 06, 2012 2:55 am

If there's going to be any fakecd at all, i'd recommend using DUMB w/OGG extension instead. This is something I tried (and failed) to do.
i should not be here
leileilol
 
Posts: 2783
Joined: Fri Oct 15, 2004 3:23 am

Re: qbismSuper8 builds

Postby qbism » Sat Oct 06, 2012 4:41 am

Thanks for the detailed feedback. I'll see if I can duplicate the bugs.

raithe wrote:In Soul of Evil on the Devils Rift map when you activate the altar it goes to a cut scene showing a shambler being summoned, the game crashes to console with a rubble_01.mdl not precached message. This only happens if you're playing though the maps one after the other (rift is the 3rd counting the start) if you launch the map directly it usually works.
Could you upload a savegame of that somewhere?

For next release, I made a change to make Marcher elevator to tower work. Marcher progs send svc_staticsound directly as byte soundnums at that point in the game. This breaks protocols that send short rather than byte. I changed the protocol, but just for static sounds AKA ambients, which IIRC are usually low numbers anyway.

I wouldn't mind mp3 or ogg but not sure if fakeCD is the way to go vs a console command "playmp3 [filename.mp3] [volume]". fakeCD requires file names to match track names among other quriks.

Has engoo switched from midilib to DUMB for playing mod files? I used modlib way back for the timefrag engine because it could play "mortal kombat" correctly.
User avatar
qbism
 
Posts: 1236
Joined: Thu Nov 04, 2004 5:51 am

Re: qbismSuper8 builds

Postby leileilol » Sun Oct 07, 2012 2:43 am

Engoo uses ASS for MIDI and DUMB for MOD, but it only loads and not plays. I chose DUMB because it was fast and it could also compile in DOS through DJGPP.

I would hijack the "cd" commands if there's no CD loaded (yeah, and good luck playing CD audio in Windows 7 anymore)
i should not be here
leileilol
 
Posts: 2783
Joined: Fri Oct 15, 2004 3:23 am

Re: qbismSuper8 builds

Postby qbism » Sun Oct 07, 2012 3:16 pm

leileilol wrote:(yeah, and good luck playing CD audio in Windows 7 anymore)
CD playing is almost OK compiling with mingw32. Track will play automatically, "cd info" works, pause and eject work. But in the audio menu, play track says "drive empty" and pause/resume from that menu can crash. But the CD I randomly jammed in to test only has 8 tracks, may be an issue. Volume seems pointless. In code it appears to only play or pause.
User avatar
qbism
 
Posts: 1236
Joined: Thu Nov 04, 2004 5:51 am

Re: qbismSuper8 builds

Postby qbism » Sun Oct 07, 2012 3:26 pm

...off-topic, but is there an audio utility to convert an audio track to mod or xm format? The software would compare sequences of audio, find matches, and slice it up. Good for repetitive music.
There are plenty of threads on the internet asking similar question with replies describing the difference between mp3 and mod formats. Yes, that's why it's hard.
User avatar
qbism
 
Posts: 1236
Joined: Thu Nov 04, 2004 5:51 am

Re: qbismSuper8 builds

Postby leileilol » Sun Oct 07, 2012 5:34 pm

It's possible to load a WAV file in Modplug Player and save a module. No splitting and such, tho
I wouldn't do that as I like reproducing by hand in the MOD format. (don't bother preaching s3m/it/xm to me - I enjoy working in strict limitations!)
i should not be here
leileilol
 
Posts: 2783
Joined: Fri Oct 15, 2004 3:23 am

Re: qbismSuper8 builds

Postby raithe » Mon Oct 08, 2012 4:55 am

Well you go really over to the pixelated side of music and convert from mp3->midi->mod...

I'll upload a save when I have a spare half-hour to run through the map.
raithe
 
Posts: 2
Joined: Thu Oct 04, 2012 6:01 am

Re: qbismSuper8 builds

Postby qbism » Tue Oct 09, 2012 6:30 am

Image

Build 109: http://super8.qbism.com/wp-content/uploads/2012/10/qbismS8_0109.zip

Video with Madfox's Tormentarium: http://youtu.be/Hrxr_FNOAN0

Thread spamming mappers: http://www.celephais.net/board/view_thread.php?id=60841

More removal than addition in this release:
    Remove limitations on fastforward and rewind controls. They now work in all demo modes except timedemo.
    On a related note, removed ‘most keys bring down console when playing demo’. It was a problem for using bound keys during demo playback. Just hit ESC for console like usual.
    Removed animation jerkiness in fisheye mode. Now models, sprites, and particles move smoothly when r_fisheye is active.
    Removed support for ambient sound indexes greater than 256 for backwards compatibility with Marcher Fortress. This is a Good Thing. Other types of sounds can still exceed 256. I’m guessing ambient (or static) sounds would get cached early, anyway. Marcher was crashing out almost at the end, at the elevator to the tower, arrrggghhh! But it's OK now.
    Removed ASM. Not much speed improvement anymore, if any, with build optimized for at least Pentium/ MMX.
Did add some modified map tools to SVN, not really a release. The idea is to add a few Pox items like func_water to hmap2.
User avatar
qbism
 
Posts: 1236
Joined: Thu Nov 04, 2004 5:51 am

Re: qbismSuper8 builds

Postby leileilol » Tue Oct 09, 2012 5:05 pm

qbism wrote:Removed ASM.

At least leave in the drawspans.
i should not be here
leileilol
 
Posts: 2783
Joined: Fri Oct 15, 2004 3:23 am

Re: qbismSuper8 builds

Postby mh » Wed Oct 10, 2012 11:08 pm

Speaking of assembly, here's a relatively minor speedup for you guys. It's only in the order of ~1% so don't get too excited.
Code: Select all
void R_ClearToBaseLight (unsigned *block, int len, int baselight)
{
   __asm
   {
      mov eax, dword ptr [baselight]
      mov ecx, dword ptr [len]
      mov edi, dword ptr [block]
      rep stosd
   }
}


void R_AddLightmapToLights (unsigned *block, int len, byte *lightmap, int scale)
{
   __asm
   {
      mov edi, dword ptr [block]
      mov esi, dword ptr [lightmap]
      mov ebx, dword ptr [scale]
      xor ecx, ecx
Loop0:
      cmp ecx, dword ptr [len]
      jge LoopDone

      movzx eax, byte ptr [esi]
      imul eax, ebx
      add eax, dword ptr [edi]
      mov dword ptr [edi], eax

      add edi, 4
      inc esi
      inc ecx
      jmp Loop0
LoopDone:
   }
}


void R_BoundInvertShiftLight (unsigned *block, int len)
{
   __asm
   {
      mov edi, dword ptr [block]
      xor ecx, ecx
Loop0:
      cmp ecx, dword ptr [len]
      jge LoopDone

      cmp dword ptr [edi], 0FE01h
      jge Bounded

      mov eax, 0FF00h
      sub eax, dword ptr [edi]
      sar eax, 2
      mov dword ptr [edi], eax

      jmp NextIter

Bounded:
      mov dword ptr [edi], 40h

NextIter:
      add edi, 4
      inc ecx
      jmp Loop0
LoopDone:
   }
}


/*
===============
R_BuildLightMap

Combine and scale multiple lightmaps into the 8.8 format in blocklights
===============
*/
void R_BuildLightMap (void)
{
   int         smax, tmax;
   int         t;
   int         i, len;
   byte      *lightmap;
   unsigned   scale;
   int         maps;
   msurface_t   *surf;

   surf = r_drawsurf.surf;

   smax = (surf->extents[0]>>4)+1;
   tmax = (surf->extents[1]>>4)+1;
   len = smax*tmax;
   lightmap = surf->samples;

   if (r_fullbright.value || !cl.worldmodel->lightdata)
   {
      R_ClearToBaseLight (blocklights, len, 0);
      return;
   }

   // clear to ambient
   R_ClearToBaseLight (blocklights, len, r_refdef.ambientlight << 8);

   // add all the lightmaps
   if (lightmap)
   {
      for (maps = 0; maps < MAXLIGHTMAPS && surf->styles[maps] != 255; maps++)
      {
         R_AddLightmapToLights (blocklights, len, lightmap, r_drawsurf.lightadj[maps]);
         lightmap += len;   // skip to next lightmap
      }
   }

   // add all the dynamic lights
   if (surf->dlightframe == r_framecount)
      R_AddDynamicLights ();

   // bound, invert, and shift
   R_BoundInvertShiftLight (blocklights, len);
}
We had the power, we had the space, we had a sense of time and place
We knew the words, we knew the score, we knew what we were fighting for
User avatar
mh
 
Posts: 2292
Joined: Sat Jan 12, 2008 1:38 am

Re: qbismSuper8 builds

Postby qbism » Thu Oct 11, 2012 1:01 am

OK, maybe will add SOME asm back. Wish gcc could handle that nice inline syntax.
User avatar
qbism
 
Posts: 1236
Joined: Thu Nov 04, 2004 5:51 am

PreviousNext

Return to Engine Programming

Who is online

Users browsing this forum: No registered users and 1 guest