Music. Coding. Gaming. Life.

Quadra for Windows

Project Homepage:
Primary Language: C++
Created: 5/29/2015 3:45:39 am (5/29/2015)
Updated: 2/21/2017 5:25:41 am (2/21/2017)

An addictive action puzzle game with single player and multiplayer capabilities (Internet or LAN). This is the fork that maintains a working Windows version.


Quadra 1.3.0 for Windows

This is the game Quadra by Ludus Design compiled for Windows.

There are two versions included:
- quadra.exe - The original game.
- quadra-wild.exe - The original game with my three patches:
- Centiseconds - In sprint mode, the clock will have a resolution of 0.01 seconds.
- Floating next pieces - The next pieces float above your shadow when enabled.
- No pause in multiplayer - You can no longer pause multiplayer games, and servers running this version will not allow their clients to pause the game either.

To install, unzip to a directory of your choosing, and run the Quadra version you wish.

Recent Commits

6529fe1 Updates to get Quadra to compile on Windows.
d6c7226 Added -fullscreen option for SDL platform
7a87bd6 Input_SDL::pause is now set to true when Pause key is pressed
2a15555 Update

Clarify when the autoreconf step is necessary or not.
7336291 Update

Add a few missing Ubuntu packages, and fix up formatting a bit in places.
32edeaf Updated
cc2d16e Remove a few unused includes.

This prevented building for Win32.
0281ad5 Work around an Automake bug.
69d105f Update the version number to 1.3.0.
4dc1a94 Update the section on libpng.
cc8812a Update the web site URL to point to GitHub.
3086303 With SDL2, Mac OS X is now a supported platform.

To the extent that Quadra is supported in general, of course. ;-)
ed839ad Update
d8750a6 Fix a few problems found by "make distcheck".
8fb9542 Add the project URL to
beb34b5 Add emacs backup files to .gitignore.
f6b7f1f Build a Mac OS X bundle.
a9c0cd8 Implement mouse wheel in demo central directory list box
a089cfb Add a fallback when creating the renderer.

Requesting vsync seems to prevent falling back to software.
aebc554 Update README with new required steps on Unix-Like
99dd7f7 Fixed down arrow on listbox
04457f1 Clean up iterators in a bit.
11b95d3 Split off building Game_params from start_game.
8acdb82 Tighten up the Game constructors.
2f8a540 Use an std::string for Game_params::name.
bda01c2 Do a batch of include cleanups.
01b5afc Use the AC_CONFIG_HEADERS file directly.

Also rename it to match the HAVE_CONFIG_H preprocessor symbol.
243b01e Use the SDL byteswapping functions instead of our own.
359543b Split the Attack class into its own file.

It was causing a circular dependency between some headers.
7e81f92 Put the header for a source file first (and fix issues).

This allows detecting problems with the header, many of which were found and fixed.
6dac124 Change the extensions from .cpp to .cc.

It's been annoying me for over 15 years now!
b4608e2 Reorganize the source code into a single directory.
9115d75 Make the Zone_panel in Zone_state_text a value.
c5b2595 Iterate over callbacks in a more robust way.

This is a remake of commit fb98a678, which I missed when porting the fixes from the "future" branch.
ca31044 Remove an unused variable.
fe0cec2 Remove the Video::setpal method.

This is a useless indirection, the real work is done by Video::dosetpal, which is called by Palette::set (using private data), which is called by Video::setpal. Just call Palette::set directly.
26e9363 Use SDL_Color instead of PALETTEENTRY.

Also, various little cleanups.
e7b357e Refactor the main loop out of start_game.
f04dc3f Create the menu Executor on the stack.
f4409ab Return from start_game in a more normal way.
3d9275e Use an anonymous namespace to isolate some functions.
cbef7eb Move the Player state classes to their own files.
9d9e1a8 Remove friend declarations from Palette.
d276778 Fix the broken fades.
4b2603f Enable waiting on vsync.

This greatly reduces the CPU usage, at least when in foreground (ironically, on Mac, the waiting is disabled when the window is not visible, so that uses more CPU!).
3bdcdd8 Clean up Fontdata constructors.
96dbbf9 Remove an unused parameter in a Bitmap constructor.
2e66c22 Remove a useless forward declaration in bitmap.h.
1adfb03 Remove unneeded friend declarations in Bitmap.
0f35e69 Removed an unused member variable in Bitmap.
2d52e11 Remplace use of strdup with std::string.
e07b0a4 Make the input of Png a const Res&.
2d3fa8e Fix a linking issue with dumpwad.
0bbd1b2 Inline the temporaries for loading sound samples.
6b2fb6b Make Res more const-correct.
842dcb8 Make Res non-copyable.
855a642 Add a Resmanager::get that returns an std::string.
7b26328 Avoid including resmanager.h from res.h.

This avoid recompiling too much when making changes to resmanager.h.
b7c197d Make all Resmanager methods non-virtual.
9b940ea Mark Resmanager::get as const.
d5ed1d0 Use ResName deeper into Resnamaner and Resfile.
76e13f9 Pull up the size() implementation to Res_mem.
a3a7fb8 Clean up recording.h a bit.

Try to make as many things as possible private.
ce51ac9 Small bug fix in wadder.

The std::ifstream constructor that takes an std::string is a C++11 addition.
d2fbe1e Give wadder.cpp a do-over.
60fb2e4 Streamline the Resfile class.

Do not keep the Res_dos object around, make some more method const, remove the unnecessary virtual keyword.
9bf2bbd Gather the methods of Resfile in a single file.

The writing methods were separated so that they could avoid be linked into the main binary, but this didn't work anyway (because of the virtual methods).
51ab312 Use an indirection for resource names.
7327799 Disable the clipboard handling on Win32.
4592812 Remove the checks for GNU allocation functions.

We do not need the GNU specific functionaliy, and on Win32, this breaks them.
a72e5f9 Use the "main" signature specified by SDL.
fe6242a Signal handling is not needed on Win32.
7c79c2e Use the Boost filesystem library in a Win32 compatible way.
cbe372f Remove some unused variables from main.h.
7520c49 Replace Find_file with the Boost filesystem library.
83c8848 Minor update to the README.
4d52923 Add detection of SDL using sdl2-config.
2a5f37b Remove detection of X11 from
9f46e97 Merge reasonable state of an SDL2 port.

While it does require some help to build (extra flags to configure), it mostly works, I think. Windows *almost* works, but not yet.
adc5639 Reorder the initializer list of Input.
76d65ef Disable a few Windows specific bits.

This code would still be useful, but I'm disabling it for now to get something working.
30b7fba Use SDL_GetScancodeName instead of our own.
6c19741 Remove some debug logging.
ebfae4c Remove the input_keys.h header.
5b8fd4f Made the text field (mostly) work.
562cbc3 Support enough keyboard to play the game.
9069621 Remove the mouse delta variables from Input.

They might come back later, but they are broken and only the wheel was used.
3b387ff Forgot to free resources in Video_SDL.
4668515 Pulled in the SDL sound support from the "future" branch.
d48ee85 Fix some incorrect indenting.
7edeea6 Removed an unused constructor of Dumb_Video_bitmap.
25703d4 Remove unneded Dumb_Video_bitmap::New static methods.
4ef8c84 Simplify away input_dumb.{h,cpp}.
7148c95 Remove the unused support for "raw" images.
858a9e8 Remove an unused header file.
0069190 Remove some unused methods of Video.
5577d22 Fix the type of Video::newpal.
a35d386 Remove unused alt_tab global variable.
42feae0 Remove the unused start_game function from wadder.
a334942 Inline the calls to {start,end}_frame. Media Player