Commit Graph
99 Commits
Author SHA1 Message Date
Vladimir Serbinenko 3e7abf974d SCI: Patch invalid picture in Russian translation of Torin's passage 2021-01-02 11:41:37 +02:00
Vladimir Serbinenko 373673c2d6 SCI: Add City Torin translation to detection list 2021-01-02 11:41:37 +02:00
Vladimir Serbinenkoandathrxx 280f83242e KYRA: replace const char * with Common::String around getTableString. (#2603)
Currently const char * points into some random buffer with unclear
lifetime.

Instead use Common::String which ensures lifetime as long as a reference is
held.

This also removes the need of copying into existing buffers in HoF and MR.

UnkBuf* are gone as well.

Co-authored-by: athrxx <athrxx@scummvm.org>
2021-01-01 16:37:27 +01:00
Vladimir Serbinenko 1476bf1fae HADESCH: Remove the need for global constructors 2020-12-21 14:30:43 +01:00
Vladimir Serbinenko b76576abd4 STARTREK: Specify that action is signed char
x86 uses signed chars but this is architecture-dependent and on arm it's
unsigned and leads to compilation failure
2020-12-19 23:23:19 +02:00
Vladimir Serbinenko 02770c485d HADESCH: Add lost file hadesch_translations.dat 2020-12-18 10:36:26 +01:00
Vladimir Serbinenko b8a5483047 HADESCH: Use separate file for translations 2020-12-17 09:49:18 +01:00
Vladimir Serbinenko 0d39e96f55 COMMON: Make TranslationManager reusable.
This makes it possible to reuse TranslationManager with different
files.
2020-12-17 09:49:18 +01:00
Vladimir Serbinenko 937d5c4a98 HADESCH: Show subtitles for AIF files 2020-12-17 09:49:18 +01:00
Vladimir Serbinenko d92adc6f2c HADESCH: Transcribe and classify all the AIF files
This doesn't cover SMK files which would be a second effort
2020-12-17 09:49:18 +01:00
Vladimir Serbinenko 134d2051b4 SCUMM: Add MD5 of Russian Atlantis translation 2020-12-17 02:02:31 +02:00
Vladimir Serbinenko b58b09323c SCUMM: Support for uncompressed bundles like used in some fan translations
Apparently it's a beta variant of storing files in the bundle without
compression and in little-endian. I tried to find an indicator for endianness
in uncompressed iMuse file but apparently there isn't any. Hence we need to
propagate a bool from bundle to imuse layer.

This is used by Akella Russification of COMI
2020-12-08 08:09:17 +01:00
Vladimir Serbinenko 26207d29b7 SCUMM: Don't error out on invalid bundles
Akella COMI localization contaions 2 garbage sounds: one is in RIFF WAV and
other is raw sound instead of iMuse. As itś only 2 utterances it's not
critical but avoid crashing on them
2020-12-08 08:09:17 +01:00
Vladimir Serbinenko 5c91fb8d6a SCUMM: Support Lokalizator plugin.
This was used by Russian translation of Pajama Sam 2 and Spy Fox 3
2020-12-07 23:01:38 +01:00
Vladimir Serbinenko 03ee842db9 SCUMM: Add old variant PRCA to detection
This is needed to ensure that correct encoding is selected
2020-12-07 19:16:05 +01:00
Vladimir Serbinenko 3132c12737 SCI: Add alternative SQ5 Russian release 2020-11-23 17:13:40 +01:00
Vladimir Serbinenko 41aa180ad4 SCUMM: Add RuSCUMM version of Indiana Jones and the Fate of Atlantis 2020-11-23 17:13:15 +01:00
Vladimir Serbinenko 0d521a12b8 SCUMM: Decode resource strings using CP866 for Russian translations 2020-11-23 17:13:15 +01:00
Vladimir Serbinenko bc52f01a9a BBVS: Fix Russian buttons (#2626)
Russian text is in ISO8859-5. When GUI was converted to UTF-32 thos spot
was missed and ended up being interpreted as Latin1. Then iconv rewrite
changed to UTF-8. Change them to UTF-8 and mark as UTF-8 explicitly.
Fix spelling mistake while on it
2020-11-16 14:01:10 +01:00
Vladimir Serbinenko b0e5ca855d BBVS: Fix misdetection of Russian version as demo (#2625)
GF_GUILANGSWITCH and GF_LOOGIE_DEMO have the same value and hence the code
treats Russian version as loogie demo and crashes as bbloogie.000 is in
an unexpected directory for the demo
2020-11-16 14:00:46 +01:00
Vladimir Serbinenko 9b824d73af TEST: remove prinring of md5 of encoding.dat 2020-11-16 10:06:27 +01:00
Vladimir Serbinenko e187cee802 TEST: Don't suppress errors on copying of encoding.dat 2020-11-16 06:30:48 +01:00
Vladimir Serbinenko cb5c080151 TEST: Fix path to test/runner.cpp 2020-11-16 04:09:37 +01:00
Vladimir Serbinenko 23111de32e TEST: clean copied encoding.dat 2020-11-16 03:47:22 +01:00
Vladimir Serbinenko f5ffbe1155 TEST: Copy encoding.dat to make tests work in relative build directory 2020-11-16 02:38:22 +01:00
Vladimir Serbinenko cd8270f039 TEST: Third attempt to fix the tests
Some tests unnecessarily referred to null osystem. Tested with PSP target
2020-11-16 01:51:14 +01:00
Vladimir Serbinenko e3ace27da0 TEST: Second attempt at fixing tests
The framework doesn't understand preprocessor, put preprocessing inside the
tests.
2020-11-16 00:51:22 +01:00
Vladimir Serbinenko a9fe1d7a84 TEST: Skip CJK tests outside of POSIX
They need file access that needs null backend which for now only
peopwely compiles on POSIX.
2020-11-15 23:57:53 +01:00
Vladimir Serbinenko 68a9136e4d COMMON: Rewrite Encoder and drop dependency on iconv (#2586)
Different platforms have different levels of support of encodings and
often have slight variations. We already have tables for most encoding
with only CJK missing. Full transcoding inclusion allows us to get reliable
encoding results independently of platform. The biggest con is the need for
external tables encoding.dat.

It removes a duplicate table for korean in graphics/korfont.cpp
2020-11-15 16:20:35 +01:00
Vladimir Serbinenko 4b6bda0831 SLUDGE: Remove UTF8 code (#2592)
This is basically a duplicate of UTF8 from common.
So just use common code instead
2020-11-10 17:19:23 +01:00
Vladimir Serbinenko 4aa3d35d77 KYRA: Add a sanity test for aud files (#2614)
Russian translation dumbs out aud files, so don't attempt to read them
2020-11-09 22:57:13 +01:00
Vladimir Serbinenko 53f34d3acf HADESCH: Add detection of 2 known bad dumps 2020-11-09 01:13:16 +01:00
Vladimir Serbinenko 7cda72a79c KYRA: Fix crash in Siberian Goblin translation of HoF (#2609)
* KYRA: don't attempt to execute functions out of bounds

This fixes crash in Siberian Goblin translation of HoF on scarecrow scene

* KYRA: Add sanity check not to execut out of bounds
2020-11-06 17:00:30 +01:00
Vladimir Serbinenko e07fc52767 ANDROID: Merge few files between android and android3d (#2595)
While unfortunately it doesn't help with existing differences it help
to prevent their increase
2020-11-03 14:50:54 +01:00
Vladimir Serbinenko a1a53eb205 ANDROID: Fix android3d compilation (#2594)
SAF was added to android but not android3d yet it is in both cases
in posifxfs.

Merging android and android3d will be a separate project
2020-11-03 12:36:51 +01:00
Vladimir Serbinenko 54b0b4ac4c COMMON: Restore old behaviour for appending char to string
Appending \0 to string and expecting it to be just dropped is
still an invalid behaviour but it already happened in 2 engines, so
restore old behaviour, at least for now
2020-11-03 11:19:20 +01:00
Vladimir Serbinenko 3fc822e55c COMMON: introduce substr for U32String (#2585)
It's safer than direct array manipulation. Replace current uses
of subsetting with substr.
2020-11-01 22:53:03 +01:00
Vladimir Serbinenko 148a4195a8 ULTIMA: Fix compilation with older compilers 2020-11-01 19:40:00 +01:00
Vladimir Serbinenko 8656e2be9e HADESCH: Ensure lifecycle of heroNameUTF8
If you encode and do c_str() in the same statement then temporary
object may be freed before c_str result is actually used. So far
it wasn't a problem but let's be safe
2020-11-01 17:16:03 +01:00
Vladimir Serbinenko 0d7ab6cd64 COMMON: compilation fix on some older compilers 2020-11-01 14:58:46 +01:00
Vladimir Serbinenko 92e8988936 HADESCH: Use U32String for hero and save name
This doesn't have any immediate benefit as fonts have only 256
characters but it's a step in right direction.
2020-11-01 00:05:09 +01:00
Vladimir Serbinenko 93ee9d0896 COMMON: Fix operator+ declaration in U32String 2020-10-31 23:56:40 +01:00
Vladimir Serbinenko 29cfa7bb0f COMMON: Merge code for str.cpp and ustr.cpp
Most of the code in str.cpp and ustr.cpp is actually the same. Do some
template magic to merge them.
2020-10-31 14:05:30 +01:00
Vladimir Serbinenko 8fdfb15f6e SCI: Fix crash when running sq6-mac with macbinary
The resource validation fails big time because no file Data9 exists.
It's expected as its in Data9.bin instead. Since we check resource fork
explicitly in the case of resource-fork resources this check is redundant
2020-10-31 11:27:49 +02:00
Vladimir Serbinenko c64a631520 HADESCH: Fix Charon teleportation 2020-10-29 11:25:59 +01:00
Vladimir Serbinenko 11d2722379 HADESCH: fix eye of fates position before it's given back 2020-10-29 11:25:59 +01:00
Vladimir Serbinenko dc8debc4d2 HADESCH: Fix wrong quest scroll for medusa quest 2020-10-29 11:25:59 +01:00
Vladimir Serbinenko 30e9bd2f1d HADESCH: Fix wrongly displayed straw cart 2020-10-29 11:25:59 +01:00
Vladimir Serbinenko 829654c2dc HADESCH: fix animation cleanup in ferry.
IT makes the puzzle impossible to complete
2020-10-27 16:44:49 +01:00
Vladimir Serbinenko 12bb8f9c26 HADESCH: Save and restore gender from savefiles 2020-10-27 11:14:52 +01:00
Vladimir Serbinenko 1317a7c267 HADESCH: wall of fame cleanup 2020-10-27 10:53:33 +01:00
Vladimir Serbinenko 4cd62c6596 HADESCH: init _cheatsEnabled 2020-10-27 10:53:33 +01:00
Vladimir Serbinenko 9d05d350ff HADESCH: Fix bad autosave at engine launch 2020-10-27 10:53:33 +01:00
Vladimir Serbinenko 038704b772 HADESCH: Fix soft lock on Seriphos 2020-10-27 10:53:33 +01:00
Vladimir Serbinenko a02f602dfb HADESCH: Fix access violation in Athena's temple 2020-10-27 00:57:21 +01:00
Vladimir Serbinenko 8f79623e63 HADESCH: Fix dismissing of troy popup grate 2020-10-27 00:57:21 +01:00
Vladimir Serbinenko 34b7451b15 HADESCH: Fix mast softlock in argo scene 2020-10-26 09:38:50 +01:00
Vladimir Serbinenko 0446966e32 HADESCH: support restore from launcher 2020-10-26 09:38:50 +01:00
Vladimir Serbinenko 5bce0aa737 HADESCH: Fix handling of atlantis intro 2020-10-25 22:49:01 +01:00
Vladimir Serbinenko 9c9dd99f23 HADESCH: Fix decoder closing handling in catacombs 2020-10-25 22:49:01 +01:00
Vladimir Serbinenko 7852ca2b21 HADESCH: Fix wrong room moves 2020-10-25 22:49:01 +01:00
Vladimir Serbinenko 38c4a0849a HADESCH: Fix playing of Troy/Odysseus intro 2020-10-25 22:49:01 +01:00
Vladimir Serbinenko 366e9997c4 COMMON: Fix freetype path for psp
Current config ends up pulling freetype headers from host which depending
on version on host and in toolchain may result in linking or runtime errors
2020-10-25 22:46:59 +01:00
Vladimir Serbinenko d671899e52 COMMON: Move -G0 to right place for psp 2020-10-25 22:46:35 +01:00
Vladimir Serbinenko 0714302b0b COMMON: Add -G0 for PSP
Our pspfull build has got section over 64K. Projects like retroarch also
use -G0. It's a bit slower and binary is a bit larger but it works.
2020-10-25 19:35:58 +01:00
Vladimir Serbinenko 784dd5f0f1 TWINE: Fix array inits missed in 1ef2265991 2020-10-25 05:18:52 +01:00
Vladimir Serbinenko f42300b6f5 PLUMBERS: Add 16bit dependency
It's needed to handle 3DO variant of the game.
2020-10-25 03:15:52 +01:00
Vladimir Serbinenko 4e53ae7fed PLUMBERS: don't use memset when initing
memsetting over Common::String is a bad idea and creates a weird behaviour.
2020-10-25 03:14:25 +01:00
Vladimir Serbinenko 3096ff991a HADESCH: fix double-free when handling corrupt video files 2020-10-25 03:12:54 +01:00
Vladimir Serbinenko 60c623e316 HADESCH: Rename Shade to StyxShade
We have 2 Shade's: in ferry.cpp and in riverstyx.cpp. Rename one of
them to prevent possible collisions.
2020-10-25 03:11:48 +01:00
Vladimir Serbinenko b4fd8cb16a HADESCH: handle gracefully successive changes of rooms.
This can happen e.g. in video-only scene if video file is unreadable.
2020-10-25 03:10:31 +01:00
Vladimir Serbinenko 9045bceac9 HADESCH: Use getRandomBit rather than getRandomNumber(0, 1) 2020-10-25 01:02:58 +02:00
Vladimir Serbinenko 76eade7718 HADESCH: Fix shadowing 2020-10-25 01:02:58 +02:00
Vladimir Serbinenko 03ce7bfd6c HADESCH: fix medisle warnings 2020-10-25 01:02:58 +02:00
Vladimir Serbinenko 1464115ccb HADESCH: fix warnings in minotaur.cpp
They're real warnings but let's convert tem to TODOs.
2020-10-25 01:02:58 +02:00
Vladimir Serbinenko bed87e92d1 HADESCH: fix typo in loop variable 2020-10-25 01:02:58 +02:00
Vladimir Serbinenko d8fc5bad56 HADESCH: fix signedness warnings 2020-10-25 01:02:58 +02:00
Vladimir Serbinenko 0d43a003bf HADESCH: Use getRandomNumberRngSigned when generating a signed random
Unsignedone is technically undefined even though practically equivalent
2020-10-25 01:02:58 +02:00
Vladimir Serbinenko 18626c2e96 COMMON: Add a signed variant of getRandomNumberRng.
Useful for generating negative numbers
2020-10-25 01:02:58 +02:00
Vladimir Serbinenko fbc2c929e3 PLUMBERS: fix Surface forward declaration 2020-10-24 23:08:14 +02:00
Vladimir Serbinenko 7398a027b3 HADESCH: replace Common::Point with a struct in init tables
This avoids global constructors.
2020-10-24 23:07:59 +02:00
Vladimir Serbinenko fb6c0d8749 HADESCH: name enums to avoid anonymous enum templates 2020-10-24 23:07:59 +02:00
Vladimir Serbinenko e59357eb3a HADESCH: change const to define when it removes global constructor
It's a bit less nice but avoids global constructors
2020-10-24 23:07:59 +02:00
Vladimir Serbinenko 8bf5109950 HADESCH: typhoon: Reorganize structure to avoid global constructors 2020-10-24 23:07:59 +02:00
Vladimir Serbinenko 6150169978 HADESCH: fix forward declaration of MacCursor 2020-10-24 23:07:59 +02:00
Vladimir Serbinenko d424dcebfe HADESCH: ferry: restructure structs to avoid global constructors 2020-10-24 23:07:59 +02:00
Vladimir Serbinenko 25200d6815 HADESCH: Restruct BirdInfo to void global constructor 2020-10-24 23:07:59 +02:00
Vladimir Serbinenko c2d0593690 HADESCH: Remove several unused variables 2020-10-24 23:07:59 +02:00
Vladimir Serbinenko 79ea974574 HADESCH: Put all statue fields into single struct
This is nicer and avoids the need for global constructor
2020-10-24 23:07:59 +02:00
Vladimir Serbinenko 8e5efc0fda HADESCH: Add missing override keywords 2020-10-24 23:07:59 +02:00
Vladimir Serbinenko 058592794f HADESCH: Add new engine for Hades' Challenge
The game is completable but 3 arcade sequences at the end of Minotaur, Medusa and Troy quests.
Probably full of bugs but I already publish it for consideration
2020-10-24 19:51:30 +02:00
Vladimir Serbinenko 125fd9d80c PLUMBERS: support for 3DO version
It was fun to reverse engineer but the game is garbage, so I didn't test
it a lot, please report bugs.

Currently missing parts:

* effect when changing between scenes
* 3DO boot logo
* return to previous scene
* hide cursor
2020-10-24 00:59:01 +02:00
Vladimir Serbinenko 3c97ebd4f9 VIDEO: support multi-track audios in 3DO videos
It's used in plumbers with first track being speech and second track
being music
2020-10-24 00:59:01 +02:00
Vladimir Serbinenko ce6eb34121 VIDEO: uplift 3do movie decoder from sherlock engine
The format is generic to 3DO and is also used by plumbers.
I think it's also accelerated on 3DO so probably is used by
a lot of 3DO titles
2020-10-24 00:59:01 +02:00
Vladimir Serbinenko f3f0d0228a IMAGE: Add decoder for CEL 3DO format
This format is used by 3DO version of Plumbers Don't Wear Ties
but it's a generic format on 3DO similar to BMP on windows.
2020-10-24 00:59:01 +02:00
Vladimir Serbinenko 18e6878311 COMMON: Add String::asUint64Ext
This is the same as String::asUint64 but supports 0x and 0 prefixes
2020-10-17 22:34:58 +02:00
Vladimir Serbinenko 55559539af common/array: Fix comment
Comment speaks about double-linked list but we actually have an array
2020-10-06 18:16:53 +02:00
Vladimir Serbinenko 1e3b41d71b Add division and multiplication operators to Common::Point
They're convenient for performing computations and I use
them in Hades Challenge engine
2020-10-06 18:16:08 +02:00
Vladimir Serbinenko 49979f1665 GRAPHICS: Support 4-bit windows cursors 2020-07-22 00:06:36 +02:00