Gleb Mazovetskiy
6bbe9e5ce8
CMake: Cleanup no-mpq config
...
Introduce a `SUPPORTS_MPQ` variable and use it throughout.
Also disables fetching bzip2 when MPQ support is disabled.
3 years ago
Anders Jenbo
454efdc2c1
Re arange UI files
...
¨
3 years ago
Eric Robinson
f75f66d54b
Add `playerdat` ( #5763 )
3 years ago
Gleb Mazovetskiy
1788d2f8ec
Remove miniwin
...
Event handling code moved to `engine/events.{hpp,cpp}`.
3 years ago
Gleb Mazovetskiy
068fdac7c1
Do not use PKWare with no MPQs + NONET
...
Reduces RG99 binary size by 12 KiB
3 years ago
Anders Jenbo
c99f7cf644
Floating numbers ( #5639 )
...
Co-authored-by: qndel <stefan551@o2.pl>
Co-authored-by: Stephen C. Wills <staphen@gmail.com>
3 years ago
Gleb Mazovetskiy
6d274c9547
`UNPACKED_SAVES`: Saves without MPQs
...
Reduces rg99 binary size by ~70 KiB.
3 years ago
Gleb Mazovetskiy
8fe8023542
Create save and config directories
...
If a config directory did not exist, the ini file was
not saved at all.
Only implemented for targets that support `std::filesystem` or `std::experimental::filesystem`.
These are all the targets except nxdk and iOS (only supported on iOS 13+).
3 years ago
Gleb Mazovetskiy
9a1587060d
Use real `CalculateSoundPosition` with NOSOUND
...
Fixes big-endian tests, which currently build with `-DNOSOUND`
to reduce build time.
3 years ago
Gleb Mazovetskiy
9db80ef5d7
Assets: Load files directly for UNPACKED_MPQS
...
When using `UNPACKED_MPQS`, avoid all the SDL machinery for reading
files.
This is beneficial not only due to reduced indirection but also because
we can test for the file's existence and get the file size without
opening it, which is much faster.
3 years ago
Gleb Mazovetskiy
3cb24c15f3
Remove SDL_image dep from SDL1 build
...
Fixes #5504
3 years ago
Gleb Mazovetskiy
680ab5ec40
Overhaul backbuffer state handling
...
When rendering directly to the output buffer, we need to maintain the
state of what has been drawn and what needs redrawing per-buffer.
We previously tried to do it implicitly by checking `SDL_DOUBLEBUF` and
other flags. The previous implementation was broken in several
ways, resulting in rendering issues on devices that support 8-bit output
directly.
Changes this mechanism to explicitly maintain buffer state per output
buffer. The new mechanism doesn't require knowledge of the number of
buffers, and thus also works correctly with triple-buffering.
Fixes #5447
3 years ago
Gleb Mazovetskiy
6150973c1b
Clean up gamepad icons code
...
1. Correctly defined button strings.
2. Clean up the printing code.
3. Use translatable strings for the generic gamepad type.
3 years ago
Gleb Mazovetskiy
3b357f3936
CMake: An option to disable demomode support
...
Useful for targets with limited RAM.
Reduces RG99 binary size by 8 KiB.
4 years ago
Gleb Mazovetskiy
9b65eca49b
Remove `Art` and related functions
4 years ago
Gleb Mazovetskiy
ed3747dded
Add `SurfaceToClx` conversion function
4 years ago
obligaron
5913783826
Add walking offset calculation to ActorPosition (and validate it)
4 years ago
Gleb Mazovetskiy
17a97450bc
Convert assets to CLX
...
Converted using the following commands:
```
cd Packaging/resources/assets
pcx2clx --transparent-color 1 --num-sprites 256 fonts/*.pcx && rm fonts/*.pcx
pcx2clx --num-sprites 2 ui_art/dvl_but_sml.pcx && rm ui_art/dvl_but_sml.pcx
pcx2clx --transparent-color 1 data/hintbox.pcx data/hintboxbackground.pcx && rm data/hintbox.pcx data/hintboxbackground.pcx
pcx2clx --transparent-color 1 --num-sprites 6 data/hinticons.pcx && rm data/hinticons.pcx
pcx2clx --num-sprites 2 data/panel8buc.pcx data/dirtybuc.pcx data/dirtybucp.pcx && rm data/panel8buc.pcx data/dirtybuc.pcx data/dirtybucp.pcx
pcx2clx --transparent-color 1 data/healthbox.pcx && rm data/healthbox.pcx
pcx2clx --transparent-color 1 --num-sprites 6 data/resistance.pcx && rm data/resistance.pcx
pcx2clx --transparent-color 1 --num-sprites 5 data/monstertags.pcx && rm data/monstertags.pcx
pcx2clx --transparent-color 1 data/stash.pcx && rm data/stash.pcx
pcx2clx --transparent-color 1 --num-sprites 5 data/stashnavbtns.pcx && rm data/stashnavbtns.pcx
pcx2clx **/*.pcx && rm **/*.pcx
git checkout master -- ui_art/black_diablo.pcx ui_art/black_hellfire.pcx data/charbg.pcx data/talkbutton.pcx data/panel8bucp.pcx
rm ui_art/black_diablo.clx ui_art/black_hellfire.clx data/charbg.clx data/talkbutton.clx data/panel8bucp.clx
```
4 years ago
Gleb Mazovetskiy
961866e1c4
CLX: A new graphics format
...
The format is almost identical to CL2, except it uses the frame header
to store frame width and height instead of 5 32-line offsets.
This means we always have access to frame dimensions, so we can use it
as an on-disk format for our graphics as well.
Additionally, we may be able to optimize the rendering even more
in the future now that we have guaranteed knowledge of frame dimensions.
4 years ago
Vladimir Olteanu
74232f13bf
Get rid of dthread
4 years ago
Gleb Mazovetskiy
1cdd76b617
Remove PCX rendering code
...
We no longer render PCX
4 years ago
Gleb Mazovetskiy
0cd035ef61
Load PCX as CL2
...
Similar to #5059 , which converted CEL to CL2 at load time,
we now do the same for PCX.
Some size stats: https://gist.github.com/glebm/067bf1ec73f9d14514932cfe237e4e8e
Notably, fonts RAM usage is decreased by ~35%.
4 years ago
Gleb Mazovetskiy
43a5d91074
Remove CEL rendering code
...
We no longer render CEL
4 years ago
Gleb Mazovetskiy
8ca71272b8
Load all CEL as CL2
...
Convert CEL files to CL2 at load time. CL2 format is more efficient and is about as fast to render.
CEL vs CL2 sizes, on dLvl 5: https://gist.github.com/glebm/9bbdd76962abcd4fd2405ecd3379af97
Memory:
* Peak memory (while loading): -300 KiB
* Memory in-game (dLvl5): -700 KiB
* RG99 binary size: -15 KiB (1333096 -> 1317192)
Performance on rg99:
* On average, -1 FPS in town.
* Same FPS in dungeon (20 FPS on dLvl 1).
4 years ago
Gleb Mazovetskiy
197e1180b2
Add StrCat and StrAppend
...
Adds simple string / integer concatenation functions.
Many of the uses of `fmt::format` are simply concatenation
of a few strings and integers.
`StrCat` is an easier-to-read alternative to such uses of `fmt`.
4 years ago
Gleb Mazovetskiy
c8ddf7df65
Crawl: Move implementation from header to cpp
4 years ago
Anders Jenbo
ce4595b440
Split Crypt from Cathedral
4 years ago
Gleb Mazovetskiy
010dda42cf
Remove PCX->CEL conversion
...
It is no longer used as we render all assets directly as PCX.
4 years ago
Gleb Mazovetskiy
0c7e36e81a
DiabloUI: Clean up portrait loading
...
1. Load portraits as PCX (~30% smaller).
2. Simplify the portrait override logic.
4 years ago
Anders Jenbo
72656b3011
Move path and palette to the engine folder
4 years ago
Anders Jenbo
99181fd709
Move more files to the engine folder
4 years ago
Anders Jenbo
b870ebf115
order src files
4 years ago
Anders Jenbo
6d56058708
Move level generation to subfolder
4 years ago
Gleb Mazovetskiy
c6e107433a
CMake: Fix SimpleIni on vcpkg
4 years ago
Gleb Mazovetskiy
73f9dd45ab
Move embedded dialog assets to the MPQ
...
If we can't find `devilutionx.mpq`, we can't render a dialog either,
because the MPQ contains the fonts.
4 years ago
Gleb Mazovetskiy
563ee3af7c
Optimize `FormatInteger`
4 years ago
Gleb Mazovetskiy
220d38aa5c
Direct PCX rendering
4 years ago
Gleb Mazovetskiy
978bae1a15
Add a helper for loading PCX as CEL from path
4 years ago
Gleb Mazovetskiy
2b161e5535
An option to convert fonts to CEL in-memory
...
Reduced RAM usage by 200 KiB with no performance drop, perhaps even an
improvement.
4 years ago
Gleb Mazovetskiy
5eeaa76a75
Move PCX code to utils/pcx.cpp
4 years ago
Anders Jenbo
718c46e7fe
Remove use of tempstr
4 years ago
Anders Jenbo
a48f89007d
Implement stash
4 years ago
qndel
48f102eff1
Chat log
4 years ago
qndel
9ba64ad08b
TRN rewrite + bugfix ( #4056 )
...
* working new TRN system
* apply TRNs to all unique missiles
4 years ago
Gleb Mazovetskiy
1519e995cf
Move store graphics out of `stores.cpp`
...
These graphics are used in various places outside of `stores.cpp`.
4 years ago
Gleb Mazovetskiy
6bcac742ed
CMake: Link gperftools directly to the binary
...
Not sure why this is necessary but it fixes the gperf build
4 years ago
Gleb Mazovetskiy
e12adf689e
Fix windows build
4 years ago
Anders Jenbo
6b2481a76c
Touch support on all SDL2 platforms
4 years ago
Andrew James
fb8467b045
Move platform specific locale lookup code to platform directory ( #3862 )
4 years ago
obligaron
419fe7b7ec
Change Keymapper to OptionCategory/OptionEntry
4 years ago