nuQuake - Hardware Accelerated Modern Quake

Discussion in 'Sega Dreamcast Development and Research' started by Mrneo240, Mar 8, 2019.

  1. Mrneo240

    Mrneo240 Enthusiastic Member

    Joined:
    Sep 15, 2017
    Messages:
    520
    Likes Received:
    624
    ok, public release was last night. ill make a decent post on it later

    good news:
    mods that never worked before, now work
     
  2. Mrneo240

    Mrneo240 Enthusiastic Member

    Joined:
    Sep 15, 2017
    Messages:
    520
    Likes Received:
    624
    https://gitlab.com/HaydenKow/nuquake

    nuQuake is now open source and ready for you to use!
    featuring:
    full hardware acceleration
    working sound and cdda
    full joystick use or Keyboard+Mouse or a mix
    Works with mods!

    All this and more available now on your Sega Dreamcast!
    Join the fun and get Fraggin'

    [​IMG]

    -Speed is around 20-30fps depending on where you are.
     
    WarRen22, fafadou, Zeigren and 7 others like this.
  3. TapamN

    TapamN Active Member

    Joined:
    Sep 16, 2005
    Messages:
    32
    Likes Received:
    13
    The frame rate is really surprising. Are you CPU or GPU bound? Assuming GPU, looking at your screenshot, adding mipmapping should help performance a LOT, and isn't hard to implement. Texture compression on the base textures helps a bit too, but it would be much more work. The textures are twiddled, right? Bilinear runs at half speed without it.
     
    Anthony817 likes this.
  4. Ivan GR

    Ivan GR Rising Member

    Joined:
    Jul 29, 2017
    Messages:
    68
    Likes Received:
    121
    Can you upload plain files?
     
    LuizNai likes this.
  5. Mrneo240

    Mrneo240 Enthusiastic Member

    Joined:
    Sep 15, 2017
    Messages:
    520
    Likes Received:
    624
    Sure but I don't stand behind them .

    Also saving is sketchy, still working on it.
     
  6. Mrneo240

    Mrneo240 Enthusiastic Member

    Joined:
    Sep 15, 2017
    Messages:
    520
    Likes Received:
    624
    It's kinda both, CPU for processing 10k verts a frame and then GPU for blending every single pixel on screen, and the pvr hates blending

    I've turned off filtering because crunchy quake is best quake.But, it's a simple cvar so feel free to play with it.

    I'll look into mipmapping, idk how to set it up. But every world texture is paletted 8bpp and lighting is also 8bpp paletted but I'm thinking of toying with 4bpp paletted as well just for curiousness .
     
  7. -=FamilyGuy=-

    -=FamilyGuy=- Site Supporter 2049

    Joined:
    Mar 3, 2007
    Messages:
    3,097
    Likes Received:
    1,046
    Truer words were never written.
     
  8. TapamN

    TapamN Active Member

    Joined:
    Sep 16, 2005
    Messages:
    32
    Likes Received:
    13
    Perfectly reasonable. The textures were designed with point-sampling in mind.
    Oh, if you're using palettized textures, then you must be using twiddled.

    Assuming the GL library supports mipmaps correctly, you can just upload extra levels to the texture with extra calls to glTexImage2D. There are also extensions to GL to have the library generate mipmaps automatically, but I don't know if your library supports them.

    If you can, try modifying your GL library to force the PVR's mipmap bit to always be on. This will result in corrupt looking textures, but you'll be able to easily check what kind of performance gains mipmapping will give you.

    I don't think 4-bit textures would gain much. Converting 8-bit textures to 4-bit wouldn't look great, and probably wouldn't help performance noticably. If you want to extend the engine, I think adding support for compressed textures somehow would make more sense.
     
    Anthony817, jollyroger and Mrneo240 like this.
  9. megavolt85

    megavolt85 Peppy Member

    Joined:
    Jan 8, 2015
    Messages:
    332
    Likes Received:
    483
    @Mrneo240 replace in Makefile dreamcast/vmuheader.c to dreamcast/vmuheader.o
     
    fafadou and -=FamilyGuy=- like this.
  10. Mrneo240

    Mrneo240 Enthusiastic Member

    Joined:
    Sep 15, 2017
    Messages:
    520
    Likes Received:
    624
    Ya among other little things that's fixed.

    Good catch. I just havent had timet it push changes to github
     
    Anthony817 and -=FamilyGuy=- like this.
  11. megavolt85

    megavolt85 Peppy Member

    Joined:
    Jan 8, 2015
    Messages:
    332
    Likes Received:
    483
    what is version GCC you use?
    i'm can't build GLdc with GCC 5.2.0
     
  12. Mrneo240

    Mrneo240 Enthusiastic Member

    Joined:
    Sep 15, 2017
    Messages:
    520
    Likes Received:
    624
    regular gcc 4.7.3

    Code:
    dev@debian:/mnt/hgfs/share/clean_nuQuake$ kos-cc -v
    Using built-in specs.
    COLLECT_GCC=/opt/toolchains/dc/sh-elf/bin/sh-elf-gcc
    COLLECT_LTO_WRAPPER=/opt/toolchains/dc/sh-elf/libexec/gcc/sh-elf/4.7.3/lto-wrapper
    Target: sh-elf
    Configured with: ../gcc-4.7.3/configure --target=sh-elf --prefix=/opt/toolchains/dc/sh-elf --without-headers --with-newlib --enable-languages=c --disable-libssp --disable-tls --with-multilib-list=m4-single-only,m4-nofpu,m4 --with-endian=little --with-cpu=m4-single-only CXX=g++ : (reconfigured) ../gcc-4.7.3/configure --target=sh-elf --prefix=/opt/toolchains/dc/sh-elf --with-newlib --disable-libssp --disable-tls --enable-threads=kos --enable-languages=c,c++,objc,obj-c++ --with-multilib-list=m4-single-only,m4-nofpu,m4 --with-endian=little --with-cpu=m4-single-only CXX=g++
    Thread model: kos
    gcc version 4.7.3 (GCC)
    
    if you let me know how you built your 5.2.0 toolchain id happily figure it out and get it compiling and working
     
  13. Mrneo240

    Mrneo240 Enthusiastic Member

    Joined:
    Sep 15, 2017
    Messages:
    520
    Likes Received:
    624
    heres a decent build,

    saving is broken, in the middle of rewriting it, so use it at your own caution.

    when you load EXPECT to be in the wrong place and likely due to being outside the level, EXPECT crashing.
    [​IMG]

    Example of what i mean, i saved standing in the hallway and then loaded and went outside the level.
     

    Attached Files:

    LuizNai, pitito, fafadou and 3 others like this.
  14. megavolt85

    megavolt85 Peppy Member

    Joined:
    Jan 8, 2015
    Messages:
    332
    Likes Received:
    483
    DreamShell have build script for 5.2.0
    ok, i'm build GLdc with 4.7.3 , it's work
     
  15. Mrneo240

    Mrneo240 Enthusiastic Member

    Joined:
    Sep 15, 2017
    Messages:
    520
    Likes Received:
    624
    It didn'td but I started working on adding it, also Dreamcast just freezes with mipmap forced

    Also the 4bpp would only be for lightmap, I toyed with it early on and it's not too bad really.
     
  16. megavolt85

    megavolt85 Peppy Member

    Joined:
    Jan 8, 2015
    Messages:
    332
    Likes Received:
    483
    Code:
    (&in_mlook)->down[0] =(&in_mlook)->down[1] = 0;
       
    (&in_mlook)->state = 4;    // impulse up
    why over code???

    Code:
    in_mlook.down[0] = in_mlook.down[1] = 0;
    in_mlook.state = 4;    // impulse up
     
  17. Mrneo240

    Mrneo240 Enthusiastic Member

    Joined:
    Sep 15, 2017
    Messages:
    520
    Likes Received:
    624
    Tired poor coding.
     
  18. Mrneo240

    Mrneo240 Enthusiastic Member

    Joined:
    Sep 15, 2017
    Messages:
    520
    Likes Received:
    624
    Screenshot_20190405-222526_Discord.jpg

    Worked on and got hardware mipmapping working in GLdc. Available for evrryone very soon, code is live.
     
  19. megavolt85

    megavolt85 Peppy Member

    Joined:
    Jan 8, 2015
    Messages:
    332
    Likes Received:
    483
    quake code have many unused variables, now i'm clean code
    in feature need merge with your repository
     
    Anthony817 and LuizNai like this.
  20. Mrneo240

    Mrneo240 Enthusiastic Member

    Joined:
    Sep 15, 2017
    Messages:
    520
    Likes Received:
    624
    Feel free to submit it and I'll merge.
     
    Anthony817 and LuizNai like this.

Share This Page