Multiplayer save games from before 1.08 where using the system name as
the password, so they would need to be converted on the original machine
by 1.08-1.09b before they can be transfered to another system.
Tthis code simply logs the save time of a multiplayer game in the
register database, this was likly done as part of an anti cheat scheme
(the key was "Video Player"), but appears to have since been disabled.
Probably to allow moving save games between PC's which was supported
when better Windows 2000 support was added.
- Fix double events
- Fix ignored events
- Allow moving diagonal in the inventory
- Fix mouse wobbling in inventory when scalling
- Make controler actions cursor independants
- Make sure secoundery and primery key doesn't fire each others events
- Highlight both primary and secondary target
- Automatic switch between controller and keyboard+mouse
- Allow the user to change facing direction when blocked
- Make code event based instead of relying on time outs
Initial game controller support.
Actions are based on the Switch branch but the controller code itself is
implemented differently, allowing for easy remapping and minimizing
changes to the Source/ directory.
Many subtle and not so subtle controller bugs have been fixed
in this implementation, including:
1. Smoother & more responsive movement with the joysticks.
2. Consistent controls for all the menus in the game (stores, quest log,
etc).
3. Cursor appearance / disappearance at appropriate times.
Low-level controls are abstracted and 3 SDL interfaces are supported:
game controller, joystick, and keyboard. See SourceX/controls/ for more
details on this.
Wishlist for the future:
1. Primary button and use button should attack continously.
This is hard as it requires checking the cooldowns / attack speed.
2. Quick spell menu navigation is very buggy. It is also buggy in the
switch branch. I haven't had a change to investigate.
- Use UiOkDialog() to display all error messages
- Add SDL simple message, and console fallbacks to UiOkDialog()
- Boot graphics early on to facilitate most error messages with build in
gui
- Some more miniwin clean ups
Belated birthday present for @mewmew
Functions for gettings paths have sensible names
It's using snprintf for safe? string concat
Paths don't use \ as path reporator, or magic marker
Drop code for copying pre 1.09 save games from the windows folder
1. Adds RGB888 format support (not used at the moment).
2. Set the alpha mask to 0 for indexed format to fix SRCCOLOR blitting.
(also not used at the moment).
Adds a USE_SDL1 build option to use SDL v1 instead of v2.
This is useful for porting Diablo on devices that don't support SDL2,
such as the RetroFW / OpenDingux devices (e.g. RG300 Retro Gaming Handheld)
Not yet supported:
* Fullscreen
* Upscaling
* Audio
The following build error was observed when compiling with Clang:
In file included from Source/appfat.cpp:1:
In file included from ./Source/diablo.h:5:
In file included from ./Source/../types.h:52:
In file included from ./SourceS/miniwin.h:19:
In file included from /usr/lib/clang/8.0.1/include/x86intrin.h:29:
In file included from /usr/lib/clang/8.0.1/include/immintrin.h:28:
/usr/lib/clang/8.0.1/include/mmintrin.h:81:40: error: cannot initialize a parameter of type
'__attribute__((__vector_size__(2 * sizeof(int)))) int' (vector of 2 'int' values) with an rvalue of type
'__v2si' (aka 'int')
return __builtin_ia32_vec_ext_v2si((__v2si)__m, 0);
^~~~~~~~~~~
Clang version:
$ clang -v
clang version 8.0.1 (tags/RELEASE_801/final)
First I tried to replace the x86intrin.h include with:
static inline unsigned int _rotl(unsigned int value, int shift)
{
return (value << shift) | (value >> (32 - shift));
}
static inline unsigned int _rotr(unsigned int value, int shift)
{
return (value >> shift) | (value << (32 - shift));
}
But that resulted in an error stating that _rotl and _rotr were
predeclared in Clang:
./SourceS/miniwin.h:20:28: error: definition of builtin function '_rotl'
static inline unsigned int _rotl(unsigned int value, int shift)
Thus, we simply declare but don't define these functions when
using Clang.