Commit Graph
137148 Commits
Author SHA1 Message Date
Le Philousophe aa9cbdc6ab GUI: Fix invalid rect when list width goes too small 2021-06-20 13:33:38 +02:00
Le Philousophe 087eb6005c GRAPHICS: Fix triangle rendering with some aspect ratios
The test to detect we cross an integer doesn't take into account 0.5
steps
When w = 9 and h = 7, you get dx = 4, dx = 5 and gradient = 0.5
In this case you never get interx + gradient > ipart(interx) + 1 when
interx is an integer.
2021-06-20 12:30:20 +02:00
Le Philousophe e62e9e84d5 GUI: Don't draw text when the rect planned for it is too small
Rect is not valid anymore and we get assertion failures
2021-06-20 11:48:19 +02:00
Le Philousophe 66c78dc25a GRAPHICS: Ensure we still have space to draw the shadow
Else we get ptr_tl and ptr_tr reversed which causes bugs when filling
pixels
2021-06-20 11:48:19 +02:00
Orgad Shaneh d31b843f9f MAKEFILE: Add win32dist-mingw target (#2999)
Installs, and bundles all required dlls in WIN32PATH or DESTDIR.
2021-06-20 12:01:09 +03:00
Le Philousophe 56d9c62911 ULTIMA8: Fix int32 type 2021-06-20 08:19:41 +02:00
Matthew Duggan 5f8346e076 ULTIMA8: Use some proctype names instead of constants 2021-06-20 15:08:29 +09:00
Matthew Duggan 2acbdceab0 ULTIMA8: Only search around item corner x/y when triggered from usecode
Previously, areaSearch from usecode would use the whole bounding box of the
item and expand it by the range value on each side.  However, inspecting the
disassembly shows that the range for area search opcode should be only applied
around the corner x/y of the item.

This almost never makes any difference except for the end of Mission 12 of
Crusader: No Remorse, where too many triggers get activated if the bounding box
is used, and the laser walls are enabled then disabled straight away.
2021-06-20 15:07:38 +09:00
Filippos Karapetis 76dfe88b9a TRECISION: Mark the video frame calculation fix as a workaround 2021-06-20 01:38:25 +03:00
D G Turner ea0a374d3f AGS: Fix GCC Comparison Always False Warning / Logical Bug 2021-06-19 18:16:57 +01:00
Cameron Cawley cba6f05d71 COMMON: Fix compilation with C++98 2021-06-19 17:22:26 +01:00
D G Turner 3d6cdf3e7d TRECISION: Fix GCC Signed vs. Unsigned Comparison Warning 2021-06-19 16:03:53 +01:00
Cameron Cawley beb0a88120 DOCS: Mention the on-screen menu button on Android 2021-06-19 14:31:25 +01:00
Matthew Duggan c22aacea8e ULTIMA8: Make proc loop workaround less aggressive
The previous threshold caused crashes on U8 in some map transitions.  Set a
much higher value so Crusader will still pause noticably but U8 won't fail.
2021-06-19 22:23:33 +09:00
lb_ii c50240281a WINTERMUTE: Add keymapper for two Persian games 2021-06-19 14:40:02 +02:00
lb_ii 89cd6b0eb0 WINTERMUTE: Improve language packs support 2021-06-19 14:40:02 +02:00
lb_ii d4d508ccab WINTERMUTE: Add detection for 10 more Persian games 2021-06-19 14:40:02 +02:00
lb_ii c3d83dd445 WINTERMUTE: Add Retail/Hayula marks for persian games 2021-06-19 14:40:02 +02:00
antoniou79 da461da6f6 GUI: Fix tooltip behavior to be less interruptive
The tooltip will show only if mouse cursor was moved but not on a hovered focused editText field

Changes and implications in this commit:
- Fix _lastMousePosition coordinates and time being updated upon giving focus to the tooltip
- Check for mouse cursor movement first in the decision for showing the tooltip, then check if sufficient time for mouse resting position has passed (kTooltipDelay).
- Prevents showing a tooltip for a widget if it is an editable field (editText) and has both mouse hovering above it and the current focus.
This is so that typing text is not interrupted / slowed down by a periodical display of the tooltip, if the mouse is hovering over the same text field that the user is editing.
- If mouse cursor is moved but lands on the same widget as the one that had its tooltip shown last, then show the tooltip but after a different (larger) delay kTooltipSameWidgetDelay.
- Still shows tooltip for other widgets, including editText ones, if the mouse is hovered over them and they are not the current focused editText widget.

The bug was mentioned for the Android port on the forums here:
https://forums.scummvm.org/viewtopic.php?p=95531#p95531
However, it is not Android specific, even though the slowdown is a lot more noticeable on an Android device.
2021-06-19 14:39:34 +02:00
Cameron Cawley c1702a0953 ANDROID: Add an on-screen menu button 2021-06-19 14:37:35 +02:00
Martin Gerhardy 3ddce1cf3a EVENTRECORDER: relax the out-of-sync check
this might happen if you have EventSource instances registered, that
are querying the millis by themselves, too. If the EventRecorder::poll
is registered and thus dispatched after those EventSource instances, it
might look like it ran out-of-sync.
2021-06-19 14:34:52 +02:00
Martin Gerhardy adc2671449 COMMON: fixed endless loop in recordings with only one screenshot
the stream was read after its end and the err() state wasn't checked properly
2021-06-19 14:34:52 +02:00
Martin Gerhardy 5af1192580 BACKENDS: fixed segfault in EventRecorder with buffer out of bounds writes
==3124361== Invalid write of size 8
==3124361==    at 0x483F803: memmove (vg_replace_strmem.c:1270)
==3124361==    by 0x4DBF61: SurfaceSdlGraphicsManager::grabOverlay(void*, int) const (surfacesdl-graphics.cpp:1753)
==3124361==    by 0x482051: ModularGraphicsBackend::grabOverlay(void*, int) (modular-backend.cpp:215)
==3124361==    by 0x434EE1: GUI::ThemeEngine::clearAll() (ThemeEngine.cpp:376)
==3124361==    by 0x40128E: GUI::EventRecorder::preDrawOverlayGui() (EventRecorder.cpp:558)
==3124361==    by 0x481DB2: ModularGraphicsBackend::updateScreen() (modular-backend.cpp:173)
==3124361==    by 0x559967: Graphics::Screen::updateScreen() (screen.cpp:62)
==3124361==    by 0x55991C: Graphics::Screen::update() (screen.cpp:56)
==3124361==    by 0x38AFC7: TwinE::TwineScreen::update() (twine.cpp:126)
==3124361==    by 0x3B8759: TwinE::Screens::adjustPalette(unsigned char, unsigned char, unsigned char, unsigned int const*, int) (screens.cpp:150)
==3124361==    by 0x3B8A89: TwinE::Screens::fadeToPal(unsigned int const*) (screens.cpp:207)
==3124361==    by 0x3B8403: TwinE::Screens::loadImage(int, int, bool) (screens.cpp:80)
==3124361==  Address 0x31453050 is 16 bytes after a block of size 512,000 alloc'd
==3124361==    at 0x483AB65: calloc (vg_replace_malloc.c:760)
==3124361==    by 0x55B38C: Graphics::Surface::create(unsigned short, unsigned short, Graphics::PixelFormat const&) (surface.cpp:75)
==3124361==    by 0x551111: Graphics::ManagedSurface::create(unsigned short, unsigned short, Graphics::PixelFormat const&) (managed_surface.cpp:153)
==3124361==    by 0x4352D5: GUI::ThemeEngine::setGraphicsMode(GUI::ThemeEngine::GraphicsMode) (ThemeEngine.cpp:453)
==3124361==    by 0x434A52: GUI::ThemeEngine::init() (ThemeEngine.cpp:324)
==3124361==    by 0x43501B: GUI::ThemeEngine::refresh() (ThemeEngine.cpp:394)
==3124361==    by 0x405780: GUI::GuiManager::screenChange() (gui-manager.cpp:603)
==3124361==    by 0x405C6B: GUI::GuiManager::processEvent(Common::Event const&, GUI::Dialog*) (gui-manager.cpp:677)
==3124361==    by 0x404EBA: GUI::GuiManager::runLoop() (gui-manager.cpp:429)
==3124361==    by 0x3FD847: GUI::Dialog::runModal() (dialog.cpp:77)
==3124361==    by 0x36D747: launcherDialog() (main.cpp:106)
==3124361==    by 0x36FF92: scummvm_main (main.cpp:552)

It looks like the _videoMode.overlayHeight in SurfaceSdlGraphicsManager::grabOverlay and ThemeEngine::_backBuffer::h are somehow out of sync after
starting the game in a different resolution as the gui was started with. So the overlayHeight is updated - but the backbuffer (Surface) is not resized.

This is with event recorder being active - right after starting the game and switching the resolution.
2021-06-19 14:34:52 +02:00
Martin Gerhardy eccf343fcb GUI: removed superfluous break in EventRecorder 2021-06-19 14:34:52 +02:00
Martin Gerhardy 28b1a020d3 GRAPHICS: fixed formatting 2021-06-19 14:34:52 +02:00
Cameron Cawley 1e54610169 BBVS: Fix hang when starting the Loogie minigame on the DS 2021-06-19 14:32:10 +02:00
Cameron Cawley 0a9bf3708f DS: Update the MaxMod callback manually 2021-06-19 14:32:10 +02:00
Torbjörn Andersson ac596de969 AUDIO: Add missing mutex lock to isReady()
At least it seems to me that the way e.g. Lure of the Temptress calls
isReady() to see if the driver has finished processing all the custom
sounds, _sysExQueue can be accessed by two threads simultaneously.

Which seems like a bad thing to me!
2021-06-19 14:19:09 +02:00
Filippos Karapetis 84d00f364a TRECISION: Fix playing videos without choices - bug #12622 2021-06-19 12:18:42 +03:00
Matthew Duggan b7aeac773b ULTIMA8: Correct range calculation for Crusader intrinsic 2021-06-19 18:00:29 +09:00
Matthew Duggan 6b66d7007a ULTIMA8: Add a helper function to clean up list code 2021-06-19 18:00:29 +09:00
Matthew Duggan adebe08365 ULTIMA8: Make stack size calculation a little clearer 2021-06-19 18:00:29 +09:00
Matthew Duggan 4c8707970c ULTIMA8: Update comments and remove dead code 2021-06-19 18:00:29 +09:00
Matthew Duggan 27829683aa ULTIMA8: Fix pointer-write endianness for Usecode globals
I don't think this actually ever gets used by the usecode so probably makes no
difference, fixed it to be sure anyway. Pointer read gets used a lot, but it
was already correct.
2021-06-19 18:00:29 +09:00
Matthew Duggan c050663500 ULTIMA8: Avoid possible crash during Crusader teleport 2021-06-19 18:00:29 +09:00
Matthew Duggan e686fbdf51 ULTIMA8: Clear Crusader stasis flag on load to fix loading from F7 2021-06-19 18:00:29 +09:00
Matthew Duggan cb34bb7f05 ULTIMA8: Fix subtitle display on some Crusader movies 2021-06-19 18:00:29 +09:00
Matthew Duggan 8bf1fdc28e ULTIMA8: Remove duplicate Crusader shield type variables 2021-06-19 18:00:29 +09:00
Filippos Karapetis 5ddcff361c TRECISION: Improve handling of pixel formats - bug #12645 2021-06-19 11:14:52 +03:00
Paul Gilbert 2f3a09dc10 AGS: Added detection entries 2021-06-18 21:56:47 -07:00
Paul Gilbert 00603b341d AGS: Remove duplicate IAGSFontRenderer class definition 2021-06-18 21:24:27 -07:00
sluicebox 0ff7411a1d SCI: Fix SQ1 Spanish broken messages
¡Ay, caramba!
2021-06-18 15:18:49 -05:00
lb_ii b8cf678a29 WINTERMUTE: Use BIDI_PAR_RTL / BIDI_PAR_LTR directions 2021-06-18 23:03:36 +03:00
lb_ii 9eef2c954d COMMON: Support Farsi at convertBiDiString(input, lang, dir) 2021-06-18 23:03:36 +03:00
lb_ii dce92c8e41 COMMON: Introduce BiDi paragraph direction types 2021-06-18 23:03:36 +03:00
lb_ii 9cd8bbafa9 COMMON: Remove unused UnicodeBiDiText constructor 2021-06-18 23:03:36 +03:00
alxpnv f67fc64460 ASYLUM: switch 'Keyboard Config' menu screen to using Keymapper 2021-06-18 14:09:46 +03:00
Eugene Sandulenko 46a25fd63e I18N: Update translation (Ukrainian)
Currently translated at 100.0% (1644 of 1644 strings)
2021-06-18 05:18:27 +00:00
Eugene Sandulenko 93c2a8af06 I18N: Update translation (Russian)
Currently translated at 100.0% (1644 of 1644 strings)
2021-06-18 05:18:17 +00:00
Paul Gilbert f9906e1567 AGS: Workaround to load old ScummVM savegames
The original codebase imported to ScummVM had two issues with it
1) The component "Dynamic Surfaces" had been incorrectly named
"Drawing Surfaces" for a while, and was only corrected later on
2) The Managed Pool component was set as version 1, but later
changed back to version 0.

This commit allows these old savegames to still be loaded
under the new, corrected codebase
2021-06-17 19:37:32 -07:00