Gleb Mazovetskiy
70ff515f48
Stream demo messages
...
This entirely eliminates the demo memory overhead.
2023-09-02 20:54:24 +01:00
Gleb Mazovetskiy
65e0ad88d2
Further reduce demo file size
...
The vast majority of events are rendering events:
Type | Count
-------------|------:
Rendering | 58,971
MouseMotion | 19,651
GameTick | 6,414
MouseButton | 516
Key | 7
Custom | 1
Encodes Rendering events in a single byte when possible.
Demo file size: 253,410 bytes -> 194,439 bytes
2023-09-02 16:43:59 +01:00
Gleb Mazovetskiy
d31a7b5c2c
Log Demo settings
2023-09-01 21:59:20 +01:00
Stephen C. Wills
5e778431c3
Deterministic timer simulation for shrine messages in demo mode ( #6516 )
2023-08-29 13:46:49 +02:00
Gleb Mazovetskiy
eb51a8beb3
Reduce demo message size
...
`DemoMsg` struct and event data are now kept separately.
RAM usage for the timedemo messages: -85% (1.8 MiB -> 261 KiB)
Demo (`.dmo`) file size: -57% (590,790 bytes -> 253,410 bytes)
2023-08-27 16:49:13 +01:00
Gleb Mazovetskiy
c19bfe87fa
Remove utils/stdcompat/algorithm.hpp
2023-08-14 01:54:29 +01:00
Anders Jenbo
64d7af2937
Fix loading new demo files and give better error messages when failing
2023-07-24 02:45:26 +02:00
Gleb Mazovetskiy
936b3bd45a
Demomode: Store/override gameplay options
2023-06-16 18:49:14 +01:00
Gleb Mazovetskiy
4fa3732526
Add missing <cstdint> includes
...
Done with the following script:
```ruby
Dir["Source/**/*.{h,c,cc,cpp,hpp}"].each do |path|
v = File.read(path)
next if !v.include?("uint32_t") || v.include?("cstdint")
lines = v.lines
line_num = if lines[2].start_with?(" *")
lines.index { |l| l.start_with?(" */") } + 3
else
3
end
lines.insert(line_num, "#include <cstdint>\n")
File.write(path, lines.join(""))
end
```
then fixed-up manually
2023-05-10 13:50:12 +01:00
Gleb Mazovetskiy
c5e6bf630f
demomode.cpp: Set mouse.*.which to 0
...
Otherwise it can end up as `-1`, triggering the `VirtualGamepad` input
type (-1 is `SDL_TOUCH_MOUSEID`).
2023-03-21 17:04:01 +00:00
Gleb Mazovetskiy
1a1a282d9a
Use C FILE instead of C++ streams throughout
...
Reduces binary size by ~2 KiB and may improve compatibility with oddball
systems (e.g. PS2).
2023-02-15 18:15:07 +00:00
Gleb Mazovetskiy
1788d2f8ec
Remove miniwin
...
Event handling code moved to `engine/events.{hpp,cpp}`.
2023-02-01 16:06:57 +00:00
Gleb Mazovetskiy
5bf9dfd7ee
Demo mode: Force resolution to that of the demo
2023-01-12 03:38:29 +00:00
qndel
efaf334965
typos and code cleanup
2022-12-19 17:34:15 +01:00
Gleb Mazovetskiy
9b1ff3d50b
demomode.cpp: Fix creating a bogus event
...
The `eof()` does not return true until a failed read attempt.
> Note that the value returned by this function depends on the last operation performed on the stream (and not on the next).
2022-12-15 05:59:17 +01:00
Gleb Mazovetskiy
45757856c1
DemoMode: Add a debug define to log events
2022-12-15 05:59:17 +01:00
obligaron
5180bd02b4
Timedemo: don't update ProgressToNextGameTick in pause menu
2022-12-15 05:37:33 +01:00
obligaron
028f630848
Timedemo: don't play and record messages in loading screens
2022-12-15 05:37:33 +01:00
obligaron
6e08ad658f
Timedemo: represent game tick progress as uint8_t
2022-12-15 05:37:33 +01:00
Gleb Mazovetskiy
cffb2566df
Fix timedemo on SDL1
2022-12-09 12:05:54 +01:00
Gleb Mazovetskiy
ab5733b5e3
Support demo playback in SDL1
...
Useful for measuring performance in SDL1.
The demomode test now passes in SDL1 as well.
2022-11-23 18:05:50 +00:00
obligaron
eca1a68bec
AnimationInfo: Use fixed point math for fractions
2022-11-06 12:31:40 +00:00
Gleb Mazovetskiy
4cf0053ece
Set underlying type for all the enums
...
Reduces rg99 binary size by 3 KiB.
2022-08-11 01:43:54 +02:00
Gleb Mazovetskiy
ba34bafb3f
Use SDL events directly
...
Removes redundant miniwin events and queue, using SDL events directly instead.
Demo migrated using this script: https://gist.github.com/glebm/8a73b04f695de96f344cc2e35151e03e
2022-08-03 03:50:19 +02:00
obligaron
2c7e886c85
Add detail log info to CompareSaves
2022-08-02 02:12:36 +02:00
Gleb Mazovetskiy
7c0b72abc0
Improve demo test error message
...
Example:
```
file "game" is different at byte 54251:
Expected: ... 00 00 00 00 00 00 00 00 30 00 00 00 50 00 00 00 ...
Actual: ... FF FF FF FF 00 00 00 00 30 00 00 00 50 00 00 00 ...
```
2022-07-26 01:20:06 +02:00
Gleb Mazovetskiy
adf40f5c80
misc_msg: Always use lParam for mod state
...
Previously, keyboard events used `lParam` for modifier key state,
while mouse events used `wParam`.
Changes the mouse events to use `lParam`, which allows us to
change `lParam` to `uint16_t`.
Demo migrated with a script.
2022-07-18 11:09:45 +01:00
Gleb Mazovetskiy
4c1dbaba72
Demo mode: Handle endianness
2022-07-18 10:35:27 +01:00
Gleb Mazovetskiy
ea1087dfeb
Use StrCat in a few more places
...
Now `fmt` is only used for more complex formatting and for translations.
2022-07-17 20:43:00 +02:00
Gleb Mazovetskiy
a4ac41cece
Replace DVL_VK virtual key codes with SDLK
2022-07-17 10:00:06 +01:00
Anders Jenbo
ac2bf9aaac
Limit what gets called in headless mode
2022-07-13 18:54:36 +02:00
obligaron
ebfb519ee0
Rename gbQuietMode to HeadlessMode
2022-07-13 18:54:36 +02:00
obligaron
bab9baa42a
Handle gbQuietMode for paths in StartGame
2022-07-13 18:54:36 +02:00
Anders Jenbo
3ae834148a
Split event handeling from general miniwin features
2022-07-10 21:13:39 +02:00
Gleb Mazovetskiy
72660d9189
Migrate snprintf to fmt ( #4845 )
...
* Migrate `app_fatal` from printf to libfmt
* Migrate snprintf to fmt
2022-07-02 02:36:17 +02:00
obligaron
0d2a23254e
Use binaryformat for demofile ( #4799 )
2022-06-25 22:19:37 +02:00
obligaron
1608219b39
Timedemo: Create reference save game and allow comparing of reference save game with actual timedemo save game
2022-06-04 21:15:47 +02:00
obligaron
b62cacd1d6
Demomode: Init ControlMode to KeyboardAndMouse
2022-04-23 05:32:01 +02:00
obligaron
79b926c375
Move more options to OptionEntryBase
2022-02-05 20:51:54 +01:00
obligaron
9a14edfcd9
Add OptionEntries for Hardware Cursor
2021-12-17 20:12:17 +01:00
Gleb Mazovetskiy
9bc9bb6d33
Fix demomode file comments
2021-12-17 16:27:19 +00:00
Gleb Mazovetskiy
1f2d67f98b
Fix demomode line endings
2021-12-17 16:27:19 +00:00
obligaron
5e2ad66e64
Add OptionEntry Resolution
2021-12-08 00:37:06 +01:00
obligaron
2e5a488d5f
Add OptionEntry for graphics
2021-12-05 02:00:27 +01:00
obligaron
6273f700fa
Add some Graphic Settings to Settingsmenu ( #3617 )
2021-11-27 00:25:48 +01:00
Gleb Mazovetskiy and Anders Jenbo
7e1fea6f76
clang-format all files in {Source,test}/
...
Also includes a few manual tweaks to comments and newlines for better results.
Co-authored-by: Anders Jenbo <[email protected] >
2021-11-24 23:44:12 +01:00
obligaron
02900c8fa5
Demo: Fix rendering jittering
2021-08-29 21:40:24 +02:00
obligaron
2a6e5712de
Disable hardware cursor for demo playback
2021-08-29 10:26:50 +02:00
obligaron
26e61b363b
demo: Centralize options override
2021-08-19 00:04:57 +02:00
obligaron
77f9bded9e
Introduce demo namespace
2021-08-19 00:03:58 +02:00