Commit Graph

1217 Commits

Author SHA1 Message Date
lolbot-iichan
fa4d310fb4 WINTERMUTE: Do not optimize out alpha blits on rotation
This fixes defect #10684: 1-pixel width sprite becomes a big rectangle
if rotation is applied.

Case was originally reproduced with FoxTail game for WME, then reduced
to testcase
https://github.com/tobiatesan/wme_testsuite/tree/master/time_test/packages
2019-06-27 10:59:35 +03:00
lolbot-iichan
9bee1b5e31 WINTERMUTE: Implement Game.OpenDocument() method
Game.OpenDocument() is used to open links for developer's site or social
account in games like hellavuday, 5ld, etc.
2019-06-26 07:15:14 +03:00
lolbot-iichan
3c1e883ff0 WINTERMUTE: Add lots of entries to detection table and refactor handling of localization packages
* WINTERMUTE: Add detection for unsupported "Basis Octavus" game

This game is not supported by ScummVM, because it's 2.5D. However, there
are already other 2.5D games in detection table and the intent is to add
all known games, and support 2.5D in ResidualVM later.

* WINTERMUTE: Add detection for Alimardan dilogy

"Alimardan's Mischief" and "Alimardan Meets Merlin" are games by Iranian
developer Resana Shokooh Kavir (http://rskgd.com/)
It seems that Persian versions also exist, I'll surely look at it later:
https://www.digikala.com/product/dkp-75901

There were 2 steam releases for alimardan1:
https://steamdb.info/depot/694421/manifests/

There was only one steam release of alimardan2:
https://steamdb.info/depot/694431/manifests/

* WINTERMUTE: Add detection for Oknytt 1.12

Oknytt had 2 steam releases (1.12 and 1.13):
https://steamdb.info/depot/286321/manifests/
I have downloaded 1.12 and added detection.

* WINTERMUTE: Add empty strings between detection table lines

* WINTERMUTE: Add detection for Steam versions of reversion1 for Windows

Source: https://steamdb.info/depot/270572/manifests/

* WINTERMUTE: Add detection for Steam version of reversion1 for Linux

Source: https://steamdb.info/depot/270571/manifests/

* WINTERMUTE: Fix localization loading for Mac and Linux

Mac and Linux builds of reversion1 & reversion2 does not have any
"languages" folders.
So, we need to filter those files according to filenames too.

Once there is such filtering, there is no need for this overspecific
hack for revision1's xlanguage_pt.dcp.

* WINTERMUTE: Add detection for Steam versions of reversion2 for Windows

Source: https://steamdb.info/depot/281061/manifests/

* WINTERMUTE: Language packages priority for Linux & Mac

* WINTERMUTE: Add detection for Steam versions of reversion2 for Linux

Source: https://steamdb.info/depot/281062/manifests/

* WINTERMUTE: Add detection for Steam versions of reversion2 for Mac

Source: https://steamdb.info/depot/281063/manifests/

* WINTERMUTE: Add detection for Steam versions of reversion1 for Mac

Source: https://steamdb.info/depot/270573/manifests/

* WINTERMUTE: Add detection for old Desura versions of reversion2

Source: https://bugs.scummvm.org/ticket/6564

* WINTERMUTE: Add detection for Spanish versions of reversion1&2

As was shown by windlepoons, xlanguage_* contains additional translation
package, while data.dcp contains original translation (which is
Spanish).

So, even without owning those old releases of reversion1&2, I can wrote
detection tables for them by not looking for any "xlanguage_*.dcp" file.
However, we shouldn't use WME_ENTRY1s for Spanish, because advanced
detector say "new best match, removing all previous candidates" once it
hit a WME_ENTRY2s. Instead, let's just look for data.dcp twice to give
user a choice of several WME_ENTRY2s. Lor Linux, it's WME_ENTRY3s.

* WINTERMUTE: Filter language packages ignoring folder name

There are 4 types of multilang games:
1. Each installation contain a data.dcp package (same for all languages)
+ an additional language package. Other localization packages are not
installed. Those games are: "Helga Deep In Trouble", "Dirty Split",
"Looky".

2. Each installation contain a data.dcp package (same for all languages)
+ a folder with all localization packages + a single "selected" language
package copied to main folder.  "xlanguage_" prefix is usual for
reversion series. Other games usually use "english.dcp", "spanich.dcp",
"czech.dcp", etc.
Those are: "Five Lethal Demons", "Five Magical Amulets", "Dead City",
"Oknytt", "Reversion: The Escape", "Reversion: The Meeting".

3. All localizations are inside data.dcp all-together. Those are: "One
Hellavu Day", "The White Chamber" and "James Peris: No License Nor
Control".

4. Different data.dcp build for each language. All other known games are
here.

This code covers all known filenames for localization packages and
provide several guessworks for ignoring all irrelevant localization
packages.

* WINTERMUTE: Add localization detection for Five Lethal Demons

* WINTERMUTE: Tweak detection for Dead City (Czech)

"english.dcp" is not required to play Dead City in Czech language, so we
don't need to detect it

* WINTERMUTE: Add detection table for Looky in English

I got English version here:
https://bullshit-softworx.itch.io/looky-adventure

* WINTERMUTE: Add detection for Czech versions of Helga

"english.dcp" happen to be optional
2019-06-25 13:28:03 +03:00
lolbot-iichan
bf19375d14 WINTERMUTE: Add workaround for sprite glitch at Rosemary game
This kind of fixes https://bugs.scummvm.org/ticket/6572 WME: Rosemary -
Sprite flaw on going upwards

Some Rosemary sprites have non-fully transparent background pixels,
sprites of walking up has LOTS of them. Testing Rosemary walking
character in a test WME game demonstrates some glitches with original
WME as well. However, character sprite is downscaled most of time, and
with original WME it isn't that seen when sprite is downscaled.

This pull request provides a workaround for this case instead of
changing downscaling algorithms:
* if game ID is "rosemary"
* if loaded sprite is from "actors" folder
* if bytesPerPixel is 4
* if some pixel's alpha is between 1 and 15
* set this pixel's alpha to 0
2019-06-25 08:20:27 +03:00
lolbot-iichan
c32027672e WINTERMUTE: Add comments + warning() for IsKeyDown() method 2019-06-25 08:10:16 +03:00
lolbot-iichan
d53bd4e7a8 WINTERMUTE: Add more details in openDiskFile() comment 2019-06-25 08:10:16 +03:00
lolbot-iichan
4b763f0e9e WINTERMUTE: Add debugN + comment for getNumScripts() 2019-06-25 08:10:16 +03:00
lolbot-iichan
62aebde208 WINTERMUTE: Support even more keycodes at IsKeyDown() 2019-06-25 08:10:16 +03:00
lolbot-iichan
1e005d37e2 WINTERMUTE: Handle enum in GetNumScripts
This code is used only in debug mode and only to display some script
counters.
States are handled in the very same way in WME Lite, so there is no
reason to log tons of warning here.
2019-06-25 08:10:16 +03:00
lolbot-iichan
b9af5ad304 WINTERMUTE: Fix IsKeyDown to work with ASCII
Tanya Grotter series has a cheat, that is triggered with
(Keyboard.IsKeyDown("A") && Keyboard.IsControl && Keyboard.IsAlt &&
Game.DebugMode) condition.
vKeyToKeyCode(97) would produce a warning message, fixed this.
2019-06-25 08:10:16 +03:00
lolbot-iichan
555e400d76 WINTERMUTE: Hardcode known path prefix for tanya2
Missing path is
"d:\engine\ТГ2\tg_ie_080128_1005\data\interface\pixel\pixel.png" from
scenes\code\episode_01\scene_comics_1\scene_comics_1.scene
2019-06-25 08:10:16 +03:00
lolbot-iichan
c2b7fc526e WINTERMUTE: Detection tables for Tanya Grotter dilogy
Tanya Grotter games are based on first 2 books of a Russian fantasy
novel series by Dmitri Yemets.
Those games were both released in Russian only.
2019-06-25 08:10:16 +03:00
lolbot-iichan
1596b73110 WINTERMUTE: Add detection for Carol Reed Mistery 4 (RUS)
Carol Reed 4 was published in Russia by "Cd Navigator":
http://www.cdnavigator.ru/Game.aspx?id=184
2019-06-20 05:11:21 +03:00
lolbot-iichan
a7efc8afd8 WINTERMUTE: Fix Split() method of ext_string
It's hard to believe, but this fixes bug "#10432" WME Carol Reed
Mysteries hint system not working.

Carol Reed hint system happen to heavily use line.Split(";") results,
which were wrong by 1 byte (delimeter was appended to result while it
shouldn't be).

I started with decompiling Carol Reed source code, reproducing issue
with a stand-alone test project (which worked with WME and showed [null]
with ScummVM). then minimized it to a minimal testcase:

var line = new String("New Goal;Visit Christina at the Art
Museum;1;0;S;;");
var ar = line.Split(";");
if((ar[0] == "New Goal")) { var g = ar[1]; }
2019-06-18 21:20:33 +03:00
lolbot-iichan
4764739dee WINTERMUTE: Add detection for games listed in #10863
This pull request adds all games listed in
https://bugs.scummvm.org/ticket/10863:
// Carol Reed 10 - Bosch's Damnation
// Carol Reed 11 - Shades Of Black
// Carol Reed 12 - Profound Red
// Carol Reed 13 - The Birdwatcher
// Carol Reed 14 - The Fall Of April
// Rebecca Carlson Mystery 01 - Silent Footsteps
// Corrosion: Cold Winter Waiting (Enhanced Edition)
// Rhiannon: Curse of the four Branches (Premium Edition)

I don't have those games, so I can't check if those sums are correct.
2019-06-17 22:14:34 +03:00
lolbot-iichan
b503401c45 WINTERMUTE: Fix Hamlet title, add one more detection variant
Actual name of "hamlet" is "Hamlet or the last game without MMORPG
features, shaders and product placement". Fixed misprint in word
"MMORPG".

Also added one more Hamlet version from
https://bugs.scummvm.org/ticket/10980.
My version has another checksum, so I can't test it.
2019-06-17 22:08:11 +03:00
lolbot-iichan
2499eaf253 WINTERMUTE: Add another variant of White Chamber to detection table
Official downloads page for the White Chamber
(http://www.studiotrophis.com/site/downloads) contains 2 links:
1. Download from IndieDB (thewhitechamber1.7SETUP.exe, 376180149 bytes)
(built 2008.06.29, installed game is detectable by ScummVM)
2. Direct Download (thewhitechamber1.7SETUP - Definitive Edition.exe,
376180083 bytes) (built 2008.06.26, installed game is unknown to
ScummVM)

Both version are called "v1.7 - Definitive Edition".
speech.dcp is different: "german/COMPUT050.ogg" was renamed to
"german/COMPUT050.ogg"
data.dcp & language.dcp content is the same for those versions, except
for timestamps (Wed, 25 Jun 2008 21:01:32 GMT vs Sun, 29 Jun 2008
19:36:33 GMT)

Several questions:
1. Is it alright to list those builds as Common::UNK_LANG ? Should we
change this to 9 records for exact langs: Common::EN_ANY,
Common::FR_FRA, Common::IT_ITA, Common::DE_DEU, Common::CZ_CZE,
Common::RU_RUS,
Common::GR_GRE, Common::PT_POR, Common::PL_POL?
2. Should we provide a fix for "german/COMPUT050.ogg" lookup in version
that was built 2008.06.26 or this must be kept as is?
2019-06-17 17:59:20 +03:00
Lothar Serra Mari
f2b8dc4776 WINTERMUTE: Add missing comment line for new rhiannon demo 2019-06-09 19:27:04 +03:00
Lothar Serra Mari
c0b7862125 WINTERMUTE: Add detection entries for reported rhiannon demos
closes #10972
closes #10973
2019-06-09 19:27:04 +03:00
lolbot-iichan
8b929a584f WINTERMUTE: Show warning on running 2.5D games
This is shown for the 2 games added in
0d8834b561, as both of them use
ACTOR3DX entities, i.e. 3D models, which are not supported in ScummVM
2019-06-06 07:07:16 +03:00
lolbot-iichan
5b06639a69 WINTERMUTE: Janitorial edits at detection table 2019-06-04 08:24:42 +03:00
lolbot-iichan
f23345104c WINTERMUTE: Add detection tables for thekite v1.4
You can get the Kite v1.4 at https://anatolii.itch.io/the-kite
The Kite v1.5 is remade with Unity engine, so only v1.4 or lower are supported
2019-06-04 08:24:42 +03:00
Filippos Karapetis
80f773c915 WINTERMUTE: Remove unused variable 2019-05-27 14:53:45 +03:00
lolbot-iichan
7c35e1528f WINTERMUTE: Fix fill rect area on endSaveLoad() 2019-05-18 09:39:44 +01:00
Cameron Cawley
d3bb3cddfd WINTERMUTE: Attempt to load fallback fonts from fonts.dat 2018-12-25 12:47:42 +01:00
Matan Bareket
0d8834b561 WINTERMUTE: Add hashes to Zbang! and Pizza Morgana
These are two never quite finished Israeli games.
Zbang can be downloaded at: http://www.corbomitegames.com/zbang/download.php
Pizza Morgana can be downloaded at: http://pizza-morgana.com/download
2018-11-25 10:26:21 -05:00
lolbot-iichan
4c25af8191 WINTERMUTE: Flush ConfMan to disk on every change (#1314)
* WINTERMUTE: Flush ConfMan to disk
2018-09-16 20:15:04 +03:00
lolbot-iichan
e97b1e560d WINTERMUTE: Check keyboard state array index
vKeyToKeyCode() method was unsafe if vkey >= KEYSTATES_ARRAY_SIZE was
provided, fixed
2018-08-23 11:33:13 +02:00
lolbot-iichan
52b4206771 WINTERMUTE: Support more key codes for mapping
some keypresses were producing warnings because key codes were not
listed in
mappings, added more key codes
2018-08-23 11:33:13 +02:00
lolbot-iichan
20816b9f90 WINTERMUTE: Fix printable flag for keyboard state
_currentPrintable was set depending on _currentCharCode, which is 112
for both F1 and 'p' keys, fixed after detailed research on which keys
should be considered printable
2018-08-23 11:33:13 +02:00
Paul Gilbert
11e33ba3fc JANITORIAL: Removing trailing spaces after int casts 2018-08-17 20:30:20 -07:00
Cameron Cawley
7730fbb36e WINTERMUTE: Return Common::kUnsupportedColorMode if the required screen format is unavailable 2018-07-29 09:38:12 +02:00
David Fioramonti
8e1f712327 WINTERMUTE: Use degree conversion common math funcs 2018-07-03 23:08:48 +01:00
Bastien Bouclet
61f9398b04
Merge pull request #1187 from bgK/detection-refactor-unknown
ENGINES: Return unknown game variants with the list of detected games
2018-05-28 18:43:15 +02:00
David Fioramonti
1606d6688d WINTERMUTE: Update deg2rad usage 2018-05-20 11:21:06 +01:00
Adrian Frühwirth
98067b0fe6 WINTERMUTE: Properly fix handling of Ogg Vorbis resources 2018-05-19 21:03:15 +02:00
Cameron Cawley
d022572f16 WINTERMUTE: Fix loading Vorbis files
Fixes Trac#10533
2018-05-19 16:31:57 +00:00
JenniBee
5090b6cbbb WINTERMUTE: Add flag for games using low-spec resources. 2018-05-17 18:08:18 +00:00
Bastien Bouclet
cf1ebf2951 ENGINES: Add unknown game variants to the game detector results 2018-05-10 09:04:23 +02:00
Adrian Frühwirth
9702288338 JANITORIAL: Fix indentation 2018-05-07 23:09:02 +02:00
Bastien Bouclet
ae6b0cfdef WINTERMUTE: Push down the AD includes 2018-05-01 12:48:05 +02:00
Adrian Frühwirth
9bee9e1ba6 JANITORIAL: Fix whitespace 2018-04-19 12:08:31 +02:00
Adrian Frühwirth
cf96f3f709 JANITORIAL: Indent GFXTransaction code blocks 2018-04-15 16:45:25 +02:00
Colin Snover
432fd522d2 ENGINES: Remove default1x scaler flag
This flag is removed for a few reasons:

* Engines universally set this flag to true for widths > 320,
  which made it redundant everywhere;
* This flag functioned primarily as a "force 1x scaler" flag,
  since its behaviour was almost completely undocumented and users
  would need to figure out that they'd need an explicit non-default
  scaler set to get a scaler to operate at widths > 320;
* (Most importantly) engines should not be in the business of
  deciding how the backend may choose to render its virtual screen.
  The choice of rendering behaviour belongs to the user, and the
  backend, in that order.

A nearby future commit restores the default1x scaler behaviour in
the SDL backend code for the moment, but in the future it is my
hope that there will be a better configuration UI to allow users
to specify how they want scaling to work for high resolutions.
2017-10-07 12:30:29 -05:00
Torbjörn Andersson
70a2ca8b7d JANITORIAL: Silence more GCC 7 warnings
All these fall through were marked as deliberate, so again I've only
changed the comment to silence GCC.
2017-08-06 13:30:51 +02:00
Eugene Sandulenko
940b2a20f1 Revert "COMMON: Change way the Singleton instances are instantiated"
This reverts commit eefa72afa1.

With this patch ConfigManager is broken.
2017-07-10 21:17:41 +02:00
Thierry Crozat
eefa72afa1 COMMON: Change way the Singleton instances are instantiated
This fixes tons of warnings with clang from a recent xcode version on
macOS (and possibly other systems) complaining that an instantiation
of _singleton is required but no definition is available.
2017-07-10 21:11:20 +02:00
D G Turner
4f1cbddbc3 WINTERMUTE: Fix Unused Variable Compiler Warning. 2017-01-14 03:49:02 +00:00
Hubert Maier
0003048fdd WME: Add three fangames from jennibee
- DFAF Adventure
- Dreamcat
- Open Quest

Freely available from https://jennibee.itch.io/ these are three (very short) fangames.
All of those games come in three packages (Linux, OSX, Windows32) but all the packages differ only in the platform .exe, the data.dcp stays the same, so the entry is limited to one.

The packages even come with ScummVM 1.8.1

All three games tested and working (didn't solve the Open Quest final riddle though)
One script runtime error encountered in DFAF Adventure on examining the "speaker", other than that fine.

Feel free to give hints on what i should change.
2016-12-31 18:07:56 +02:00
Eugene Sandulenko
f1dd84fdf8 WINTERMUTE: Fix references to TransparentSurface templates 2016-12-26 18:54:44 +01:00