Commit graph

2785 commits

Author SHA1 Message Date
Eric Fry
6baf0ee233 NUVIE: End player's turn after casting a spell. 2025-03-13 08:06:37 +11:00
Matthew Jimenez
1e99ce9d43 GRAPHICS: Use constexpr for palette constants 2025-02-26 11:11:43 +02:00
Coen Rampen
ed650e1cf0 AUDIO: Fix OPL channel allocation for rhythm mode 2025-02-22 23:13:54 +01:00
Eugene Sandulenko
949027a01e
ENGINES: [l-w]: Turn debug enums from bitfield into plain enums 2025-02-22 21:55:59 +01:00
Matthew Duggan
24ab85c304 ULTIMA8: Clear mover process pointer before reset
Avoid the possibility of referencing this process during/after kernel reset
(eg, when starting a new game)
2025-02-20 11:00:10 +11:00
Walter Agazzi
60bdce9698 ULTIMA: Add detection entry for Ultima VI german patch 1.7
Fix #15511
2025-02-18 16:06:03 +01:00
Eugene Sandulenko
312b868b52
ULTIMA: ULTIMA4: Fix compilation on platforms without 'alignas' C++11 keyword 2025-02-18 00:22:42 +01:00
Paul Gilbert
96e74a48aa ULTIMA: ULTIMA4: Fix MSVC alignment warning 2025-02-17 14:36:25 -08:00
Coen Rampen
674bd26d26 ULTIMA6: Fix compiler warning 2025-02-07 16:15:38 +01:00
Coen Rampen
debe30b25e AUDIO: Add full support for type 1 SMF
Type 1 SMF files consist of multiple tracks that are to be played simultaneously
in parallel. Support for this was previously implemented by merging these tracks
into one single track, then treating the result as a regular type 0 SMF file.

This commit adds full support for type 1 files. The parallel tracks are loaded
as subtracks of the parent track and played simultaneously in real time. This
allows for support of MIDI formats with parallel subtracks that do not use the
SMF format (Dark Seed floppy version) or that jump to offsets within each
parallel subtrack (Origin MIDI).
2025-02-07 14:10:52 +01:00
Le Philousophe
c7e3415511 AUDIO: Avoid duplicating pointers by making use of const_cast
const_cast is valid in these cases because the pointed data is
dynamically allocated.
2025-01-28 23:24:40 +02:00
Cameron Cawley
7187c9293f AUDIO: Mark more AdLib symbols as const 2025-01-28 23:24:40 +02:00
Eugene Sandulenko
879eba5c32
CONFIGURE: Replace mt32emu component with 'midi'
This component disables all MIDI-related things when unused,
including MT-32 emulator, Fluidsynth, TiMidity and Sonivox
2024-12-26 22:54:56 +01:00
malignantmanor
eff4a3ec72
ULTIMA: NUVIE: Fix spell descriptions when spell book is not full
When you use the look command to look at the spell incantation and reagents required, it gets the wrong index if there are any missing spells on that page before the one you try to look at.
2024-12-26 20:48:36 +02:00
Hubert Maier
c7b6d17d75
JANITORIAL: ULTIMA: Fix typos 2024-12-25 18:07:20 +02:00
Eugene Sandulenko
eb60f2a16a ULTIMA: Lua is a hard dependency for ultima6 2024-12-25 00:34:39 +01:00
Eugene Sandulenko
d780708c96 ENGINES: Add mt32emu as a feature and component
Add it to engines that have MIDI playback.

This essentially compiles the emulator only when an engine that
can potentially use it (e.g. MIDI) is enabled
2024-12-25 00:34:39 +01:00
Eugene Sandulenko
f1f826f0e2 CONFIGURE: Added possibility to define engine components. Turn lua into a component
Components are parts of the ScummVM common code that could be optionally
built only when the engines that use them are enabled
2024-12-25 00:34:39 +01:00
malignantmanor
a8724b7bc1
ULTIMA: Nuvie Keymap Fixes
-Change keymap modifier from Win to Alt or Ctrl
-Fix shift not being recognized as a modifier
-Allow TELEPORT_TO_CURSOR to repeat
2024-12-24 11:49:55 +02:00
Matthew Jimenez
5c366ff8dc ULTIMA8: Allow export from MiniMapGump::generate console command to an image file 2024-12-23 10:39:16 -06:00
Eric Fry
da6bc8c70a NUVIE: fetch U4 savegame data for use with transfer save logic 2024-12-07 22:43:14 +11:00
Eric Fry
d2f8c673e9 NUVIE: fetch U5 savegame data for use with transfer save logic 2024-12-07 22:43:14 +11:00
Eric Fry
4aa1e2f88f NUVIE: Started work on transfer save game logic 2024-12-07 14:21:44 +11:00
Cameron Cawley
245d189830 ULTIMA: Make more static data read only 2024-11-26 19:31:27 +02:00
Matthew Duggan
1206e79fac ULTIMA: NUVIE: Use correct path for corpse gump buttons
This seems to have been missed when migrating the engine to use
Common::Path, it should follow the same pattern as other containers.

fixes #15522.
2024-11-24 13:25:15 +11:00
Matthew Duggan
2e3818269a ULTIMA: NUVIE: Enable key repeat on walk ops
This fixes #15397.
2024-11-20 21:14:21 +11:00
Filippos Karapetis
133e93aad5 ULTIMA8: Update POTFILES 2024-11-08 18:44:44 +02:00
Matthew Duggan
843f49446c ULTIMA8: Report mising U8SAVE.000 file on startup
The game can't really start without this data, no need to continue.

This fixes #12790.
2024-11-08 18:44:44 +02:00
Filippos Karapetis
d0195f4760 ULTIMA8: Error out if required game resources aren't found on startup
This stops the game from running if a required game data file is
missing, such as U8SAVE.000. Fixes bug 12790
2024-11-07 03:24:02 +02:00
Matthew Duggan
adadaf1eca ULTIMA: Add detection entry for Crusader: No Remorse v1.10
This fixes #15065.
2024-11-05 20:55:44 +11:00
Eugene Sandulenko
11ae6a973c
ULTIMA: Fixed usage of obsolete ManagedSurface methods 2024-10-24 15:07:03 +02:00
D G Turner
2a7c29dfa0 ULTIMA: NUVIE: Fix Unmatched Apostrophe GCC Compiler Warning 2024-09-22 03:02:55 +01:00
Hubert Maier
92c3ec0156 JANITORIAL: ULTIMA: Fix typos 2024-09-16 01:57:23 +03:00
Eric Fry
5157368a9e NUVIE: Allow custom_tiles.bmp to load from game dir mods/custom_tiles.bmp 2024-09-03 18:57:54 -07:00
yudhiwidyatama
6a4b08ef6f
ULTIMA6: inject iOS gamepad d-pad key bindings 2024-08-28 00:45:08 +03:00
Matthew Jimenez
0380bf3d44 ULTIMA8: Handle movement actions without debugger console
Previously all keybind actions were handled with debugger console commands. This required the existence console commands that are unlikely to have use outside the keybinding action. Additionally, every input iterates over a lookup table and parses command strings.
2024-08-12 10:21:30 +03:00
Matthew Jimenez
e2bbef55b3 ULTIMA8 Move keybinding action handers to engine.
The engine still uses the debugger commands, but they can be transitioned in sections if desired.
2024-08-07 22:38:44 -05:00
PushmePullyu
09e8ef68d9 ULTIMA: NUVIE: Fix pathfinding not detecting some doors
U6 NPCs following their schedule can open doors in the way.
However, E/W facing doors would not be detected if an object was
directly S of them, causing pathing to fail in some cases.

Fix and simplify door detection.

Closes #15308
2024-08-05 09:07:13 +10:00
PushmePullyu
6a24076501 ULTIMA: NUVIE: Fix copy-paste error in AStarPath
Fix regression introduced in
4493bdcf5c
"ULTIMA: NUVIE: Use foreach style loops for cleaner code"
2024-08-05 09:07:13 +10:00
Matthew Jimenez
bc0bf79745 ULTIMA8: Fix last save load failure.
Setting to empty string acts as 0 and then breaks when no saves are present.
2024-08-03 15:25:07 -05:00
antoniou79
7e462a24fb ULTIMA: NUVIE: Fix loading lua scripts on Windows
LUA seems to expect a "/" (POSIX) path separator, so using Common::Path::kNativeSeparator made engine unable to find the lua scripts on Windows
2024-08-03 08:17:16 -05:00
Matthew Jimenez
9587d5c0dd ULTIMA: Improve detection for Ultima 8 and Crusader games 2024-07-30 13:29:46 +03:00
Cameron Cawley
08010fa185 COMMON: Return an iterator for List::insert 2024-07-30 13:29:18 +03:00
Cameron Cawley
89c57d29ef COMMON: Move more maths functions into the Math namespace 2024-07-27 14:00:48 +03:00
Cameron Cawley
7e0dfe0081 GRAPHICS: Use custom stream callbacks for loading TTF fonts 2024-07-23 15:33:43 +01:00
Matthew Jimenez
ddaf389f8a ULTIMA8: Adjust camera box to fix cutscene.
Waking Mordea while sleeping put the camera below the floor. Increasing the box to 2x2x2 footpad fixes the cutscene and eliminates the need to increase based on main actor size.
2024-07-18 21:28:13 -05:00
Cameron Cawley
ff530edcb1 GRAPHICS: Deprecate ManagedSurface methods that implicitly copy pixel data 2024-07-02 13:31:18 +01:00
Le Philousophe
7e0048b4a3 ENGINES: Add ADDynamicGameDescription class
This class manages a buffer where all data usually stored in detection
plugin will get copied before unloading the plugin and starting the
game.

This class expects that two functions are present in every
GameDescription: sizeBuffer which calculates how many bytes we will need
to store the entry in RAM and toBuffer which copies the data in the
buffer and fix the pointers in the class.
At the end, it is expected that an ADDynamicGameDescription doesn't
depend anymore on data stored in the detection plugin.

The AD_GAME_DESCRIPTION_HELPERS macro allow to implement these functions
in all GameDescription which don't have any pointer except those in
ADGameDescription.
2024-06-30 18:39:06 +02:00
Le Philousophe
b61bd3ff85 ENGINES: Create a type aware advanced meta engine 2024-06-30 18:39:06 +02:00
Le Philousophe
90b886097f ENGINES: Create a type aware advanced detector 2024-06-30 18:39:06 +02:00