Commit Graph

607 Commits

Author SHA1 Message Date
David Korth
fd8fa76b26 NEWS.md: Mention the KDE split debug path fix. 2023-01-03 18:38:27 -05:00
David Korth
2ca2ea5b9d NEWS.md: Mention the RomThumbCreator fix.
I will likely release v2.2 this weekend in a shortened release cycle due
to the KDE plugins being broken on most systems.
2023-01-03 18:36:34 -05:00
David Korth
6a5d12716b Merge branch 'feature/XAttrView'
It's mostly working, except the FreeBSD version hasn't been tested yet,
and BackupRead() isn't implemented for older versions of Windows.

Conflicts:
	NEWS.md
2023-01-01 23:03:15 -05:00
David Korth
fba8aa3bb9 [libromdata] EXE: Don't show import/export tables for .NET executables.
These only have a single import, MSCOREEE!_CorExeMain.
2023-01-01 18:40:03 -05:00
David Korth
a14c9d5e78 NEWS.md: Mention that xattr functionality doesn't work on Windows XP right now. 2022-12-30 15:31:39 -05:00
David Korth
ff5151257a NEWS.md: Mention XAttrView on Windows. 2022-12-30 15:30:54 -05:00
David Korth
49f48c11e6 NEWS.md: Mention XAttrView and KF5 5.89.0 JSON loader stuff. 2022-12-30 00:44:09 -05:00
David Korth
a6a1c98dc4 [libromdata] PlayStationDisc: Added external cover images using RPDB.
The images are mirrored from the following GitHub repositories:
* https://github.com/xlenore/psx-covers
* https://github.com/xlenore/ps2-covers

Fixes #371: PlayStation 1 and 2 covers
Rpeorted by @DankRank.

TODO: Add PlayStationDisc to rp-config.
2022-12-27 19:36:18 -05:00
David Korth
cccfed6ec0 [libromdata] WiiWAD: Add application/x-doom-wad for compatibility.
Some systems assume all .wad files are Doom WADs, which breaks support
for Wii WAD files. Let's pretend we handle Doom WADs to fix this.
2022-12-26 00:22:22 -05:00
David Korth
ad98897d6b rom-properties 2.1 2022-12-24 12:39:40 -05:00
David Korth
1c7b21e6cc NEWS.md: s/or on/and on/ 2022-12-23 18:42:56 -05:00
David Korth
bbc9d5ad8f NEWS.md: Only gtk rp-config was affected by the UTC achievement unlock time issue. 2022-12-17 19:23:56 -05:00
David Korth
5cea3ec49d NEWS.md: Mention that inode/blockdevice is needed because v2.0 removed application/octet-stream. 2022-12-17 19:23:31 -05:00
David Korth
2dcf878e33 [gtk] AchievementsTab: Show unlock times in the local timezone, not UTC. 2022-12-17 14:21:32 -05:00
David Korth
5040c42371 [xdg] mime.thumbnail.types: Allow inode/blockdevice for CDs and DVDs. 2022-12-16 19:38:52 -05:00
David Korth
744322798f NEWS.md: Mention KhronosKTX2 RG88 and swizzling. 2022-12-10 18:51:52 -05:00
David Korth
b3d0b1bd1a NEWS.md: Remove "currently implemented" for "Convert to PNG".
It's implemented on Windows now.
2022-12-10 03:26:56 -05:00
David Korth
6651ccc9f0 NEWS.md: Mention service menus on KF5 and GTK2/3/4. 2022-12-09 22:45:45 -05:00
David Korth
d86a068ab0 NEWS.md: Mention thumbnailing changes. 2022-12-04 13:47:30 -05:00
David Korth
0101921e67 NEWS.md: Mention metered connections. 2022-12-04 13:19:25 -05:00
David Korth
8af3c750b0 [xdg] rom-properties.xml: Add magic strings for amiibo files.
This allows for proper thumbnailing on Linux when using the default
.bin file extension.

Fixes #370: Amiibos without thumbnails (Gnome)
Reported by @Amnesia1000.

Also change the default icon from "application-x-executable" to
"application-octet-stream".
2022-10-24 23:17:52 -04:00
David Korth
9a88336d14 NEWS.md: Mention the update checker. 2022-10-23 14:33:22 -04:00
David Korth
b40c630036 [gtk] ConfigDialog: Fix saving if the files don't exist initially.
g_key_file_load_from_file() will fail if the files don't exist.

Check the GError, and if it's G_FILE_ERROR_NOENT, continue saving
anyway.

This also fixes the Apply and Reset buttons not being disabled after
applying changes, since it never got to that part due to the error.

TODO: Show error messages?

Fixes #368: rp-config does not save configuration and keys in Manjaro Gnome.
Reported by @Amnesia1000.
2022-10-21 18:46:07 -04:00
David Korth
dc3b04abb6 NEWS.md: Mention Latin-1 issues. 2022-10-19 22:04:55 -04:00
David Korth
d514f63a1e [xdg] CMakeLists.txt: Fix installation of rp-config.desktop.
Need to use RENAME to rename the file, not INSTALL. Using INSTALL ends up
creating a subdirectory instead of renaming the file.

Fixes #367: "rp-config.desktop" file error
Reported by @Amnesia1000.
2022-10-19 20:44:08 -04:00
David Korth
e3fb6a5e4b NEWS.md: Mention Nautilus 43 (GTK4). 2022-10-01 21:35:48 -04:00
David Korth
705b5ff529 NEWS.md: Mention the ELF "TLS" symbol type fix. 2022-09-25 17:04:30 -04:00
David Korth
22e7be41a1 NEWS.md: Mention the zlib-ng WinXP AVX2 fix. 2022-09-25 17:02:45 -04:00
David Korth
78867a4bb6 [librpfile] MemFile, VectorFile: Don't use non-pointer C++ objects in the class definition.
MSVC complains now because these classes are dllexport in order to fix
a build issue with RpPngFormatTest on Ubuntu 18.04:

src\librpfile/MemFile.hpp(150,15): warning C4251: 'LibRpFile::MemFile::m_filename':
	class 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>'
	needs to have dll-interface to be used by clients of class 'LibRpFile::MemFile'
src\librpfile\VectorFile.hpp(136,24): warning C4251: 'LibRpFile::VectorFile::m_vector':
	class 'std::vector<uint8_t,std::allocator<uint8_t>>' needs to have dll-interface
	to be used by clients of class 'LibRpFile::VectorFile'

For MemFile, use a char* instead of std::string. This has a nice side
effect of reducing memory usage a bit.

For VectorFile, allocate the vector using new. This might have slight
additional overhead, since there's another pointer dereference.
VectorFile is currently only used by gtk/DragImage.cpp, so it isn't
a significant issue.

Note that since these fields are used by inline functions, changing them
*does* break the ABI, even though none of the symbols have changed, so the
libromdata SOVERSION was bumped to 2.

For rom-properties 2.0, only the Ubuntu 18.04 and later builds had the
prior changes to export MemFile, IRpFile, and RefBase, so the Windows
version didn't have that change and thus didn't need this ABI-breaking
change.
2022-09-24 23:27:07 -04:00
David Korth
5625070726 rom-properties 2.0: Stella Edition 2022-09-24 17:13:03 -04:00
David Korth
5de008b83c NEWS.md: Mention the removal of application/octet-stream. 2022-09-24 16:38:34 -04:00
David Korth
2a523c98e2 [libromdata] PlayStationDisc: Fix detection of 2352/2448-byte images.
We're reading a 2352-byte sector, so we have to compare the read size
against the sector size, not the size of d->pvd (2048).

This fixes a regression from commit 5eeeeb5bd1.
([libromdata] ISO, PlayStationDisc: Added support for 2448-byte sector file formats.)

This broke in v1.8.

Fixes #354: PS2 BIN/CUE CD Mode 2 images aren't detected
Reported by @DankRank.
2022-09-24 14:26:13 -04:00
David Korth
4a6927fb79 NEWS.md: Mention PR #358: More columns in ELF symbol tables
Submitted by @DankRank.
2022-09-24 13:49:31 -04:00
David Korth
84dd0e5277 NEWS.md: Mention ELF shared libraries and symbols. 2022-09-23 22:34:36 -04:00
David Korth
d1b77827df NEWS.md: +"and" 2022-09-23 19:25:07 -04:00
David Korth
8cde87956e NEWS.md: Updated for NE imports. 2022-09-22 19:53:44 -04:00
David Korth
49ed58e653 NEWS.md: Add bullet points to reported by/submitted by lines. 2022-09-19 19:31:19 -04:00
David Korth
1f66b6773f NEWS.md: Mention issue #355. 2022-09-19 19:30:14 -04:00
David Korth
91446c4e34 NEWS.md: Mention NE exports. 2022-09-18 21:33:01 -04:00
David Korth
9f2ab7d7d4 [libromdata] EXE_NE: Fix a segmentation fault when viewing 16-bit EXEs compiled using Visual Basic.
This broke in v1.9.

This fixes a regression from commit 650404ba93.
([libromdata] EXEPrivate::findNERuntimeDLL(): Use a table for VB runtime DLLs.)
2022-09-12 22:47:16 -04:00
David Korth
10ec09a77f [libromdata] GameCubeSave: Trim trailing CRs.
TMNT Mutant Melee [GE5EA4] has CRs at the end of the filename and
description fields. I'm not sure if it's actually included as part
of the filename on the memory card, but it looks ugly here, so
remove the CR.

NOTE: rpcli was showing it as '␍', but UI frontends were sometimes
handling it as a linebreak.

TODO: Maybe make the UI frontends show it as '␍' and don't trim it?
2022-09-11 15:30:41 -04:00
David Korth
56ec3d9c61 NEWS.md: Mention rpcli's new '-d' option. 2022-09-10 16:12:54 -04:00
David Korth
47e6f6b5e8 NEWS.md: Mention #353. 2022-08-28 18:49:11 -04:00
David Korth
4244d8be5e [win32] RP_ExtractIcon_Fallback.cpp: phiconSmall (and phiconLarge) can be nullptr.
A crash was reported when using Ghidra with rom-properties installed.
It turns out that AWT's Windows icon extraction function calls
IExtractIconW::Extract() with phiconSmall == nullptr, which *is*
valid as per MSDN documentation, but we didn't handle this properly.

Handle the case by checking for nullptr arguments, and if found, don't
attempt to write to phiconSmall (or phiconLarge). In addition, delete
the icon that would have been returned if the parameter wasn't nullptr.

Ghidra stacktrace: (Adoptium JDK 17.0.4.1) [rom-properties 1.9 release build]

Stack: [0x0000006e80600000,0x0000006e80700000],  sp=0x0000006e806fe5c0,  free space=1017k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
C  [rom-properties.dll+0x7617]

Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
J 13468  sun.awt.shell.Win32ShellFolder2.extractIcon(JJIZ)J java.desktop@17.0.4.1 (0 bytes) @ 0x000001796011f86e [0x000001796011f820+0x000000000000004e]
j  sun.awt.shell.Win32ShellFolder2.lambda$getIcon$0(I)Ljava/awt/Image;+148 java.desktop@17.0.4.1
j  sun.awt.shell.Win32ShellFolder2$$Lambda$834+0x00000007c0c7b170.call()Ljava/lang/Object;+8 java.desktop@17.0.4.1
J 13324 c1 sun.awt.shell.Win32ShellFolderManager2$ComInvoker.invoke(Ljava/util/concurrent/Callable;)Ljava/lang/Object; java.desktop@17.0.4.1 (108 bytes) @ 0x000001795854e7fc [0x000001795854dca0+0x0000000000000b5c]
J 13368 c1 sun.awt.shell.ShellFolder.invoke(Ljava/util/concurrent/Callable;Ljava/lang/Class;)Ljava/lang/Object; java.desktop@17.0.4.1 (70 bytes) @ 0x0000017958dcb1cc [0x0000017958dcb160+0x000000000000006c]
J 13438 c1 sun.awt.shell.ShellFolder.invoke(Ljava/util/concurrent/Callable;)Ljava/lang/Object; java.desktop@17.0.4.1 (11 bytes) @ 0x000001795968bc9c [0x000001795968bc40+0x000000000000005c]
j  sun.awt.shell.Win32ShellFolder2.getIcon(II)Ljava/awt/Image;+13 java.desktop@17.0.4.1
j  sun.awt.shell.Win32ShellFolder2$15.call()Ljava/awt/Image;+470 java.desktop@17.0.4.1
j  sun.awt.shell.Win32ShellFolder2$15.call()Ljava/lang/Object;+1 java.desktop@17.0.4.1
J 13362 c1 java.util.concurrent.FutureTask.run()V java.base@17.0.4.1 (123 bytes) @ 0x000001795990c224 [0x000001795990ba40+0x00000000000007e4]
j  java.util.concurrent.ThreadPoolExecutor.runWorker(Ljava/util/concurrent/ThreadPoolExecutor$Worker;)V+92 java.base@17.0.4.1
j  java.util.concurrent.ThreadPoolExecutor$Worker.run()V+5 java.base@17.0.4.1
j  sun.awt.shell.Win32ShellFolderManager2$ComInvoker$1.run()V+7 java.desktop@17.0.4.1
j  java.lang.Thread.run()V+11 java.base@17.0.4.1
v  ~StubRoutines::call_stub

siginfo: EXCEPTION_ACCESS_VIOLATION (0xc0000005), writing address 0x0000000000000000

Fixes #352: Ghidra crashes when rom-properties is installed on Windows
Reported by @RibShark.
2022-08-27 23:13:29 -04:00
David Korth
08cf89305e [librpfile] RpFile_stdio.cpp: Check the file type before fopen().
fopen() will hang if it's a pipe or socket with no data available, since
fopen() doesn't pass O_NONBLOCK.

Fixes #351: Dolphin hangs when accessing a directory containing a FIFO
Reported by @IntriguingTiles.
2022-08-26 00:49:55 -04:00
David Korth
6436c02c9d NEWS.md: COM/NE should be in new parser features, not new parsers.
SOVERSION: Not sure what "(-1, .1)" is for...
2022-08-13 15:34:20 -04:00
David Korth
26be0b7d6d NEWS.md: Mention the issue and PR numbers for PE exports/imports. 2022-08-13 14:58:28 -04:00
David Korth
43e9662b21 NEWS.md: Mention DLL exports and imports for PE. 2022-08-13 14:55:50 -04:00
David Korth
99abace4a5 NEWS.md: Mention improved startup notifications. 2022-07-30 13:45:49 -04:00
David Korth
61d96de56c [librptexture] XboxXPR: Handle XPRs with non-power-of-two sizes.
Forza Motorsport (2005) has a few textures that have non-power-of-two
sizes. These textures use a different encoding for width/height, in
which the normal shift values are both 0. Handle this so these XPRs
can be decoded properly.

This was reported by Trash_Bandatcoot.
2022-07-27 23:28:46 -04:00
David Korth
625972221c [libromdata] Use Property::Description instead of Property::Subject.
[kde] ExtractorPlugin: If using KF5 before 5.53, fall back to
Property::Subject.

TODO: Verify this change on Windows.
2022-07-27 00:04:56 -04:00
David Korth
5d670721e3 [win32] Use LoadLibraryEx() to harden library loading.
Restrict system DLLs to LOAD_LIBRARY_SEARCH_SYSTEM32.

For our own DLLs, we get the full path of the current module anyway,
so we don't need to add LOAD_LIBRARY_SEARCH_APPLICATION_DIR. This
wouldn't work in rom-properties.dll, since the application directory
would be C:\Windows\System32 (Explorer) or other directories.

On Windows XP, this flag is ignored, so there's no extra security,
but it doesn't break.

On Windows Vista and Windows 7, this flag requires KB2533623:
https://support.microsoft.com/kb/2533623

On Windows 8 and later, this flag is supported out-of-the-box.
2022-07-24 16:13:41 -04:00
David Korth
9ad74df0a3 [libromdata] EXE: Added hybrid COM/NE detection for Multitasking MS-DOS 4.0's IBMDOS.COM.
TODO: Is there a way to determine the offset from the header?

Fixes #337: COM/NE hybrid file not detected as either by rom-properties
[Multitasking MSDOS 4.00 IBMDOS.COM]
Reported by @starfrost013.
2022-07-17 14:21:10 -04:00
David Korth
bf1d91a9ce [libromdata] GameCubeBNR: Improve the text encoding heuristic for BNR1 metadata.
We don't have the console region available, so we'll check if the first
character of any of the strings is '\xA9' (©). If it is, assume cp1252.
Otherwise, we'll use Shift-JIS with cp1252 fallback.

This fixes the metadata strings for several USA-region games, including
"Resident Evil 4" and "Metroid Prime".
2022-07-16 03:51:08 -04:00
David Korth
087240e19d [libromdata] GameCube, PSP: Add missing MIME types.
Among other things, this fixes missing metadata for GameCube CISO files.

TODO: Go through more formats and add more missing MIME types.
2022-07-16 03:29:53 -04:00
David Korth
20c048694c [libunixcommon] dll-search.c: Fix walk_proc_tree()'s return value.
This was failing due to two variables being named `ret`, and only the
inner one was being set to the detected desktop environment.

This fixes a regression from commit 6167255b11.
([libunixcommon] dll-search.c: Split out the process name code into a separate function.)

This bug made it into v1.7.

Found using scan-build from clang-14.0.0:

src/libunixcommon/dll-search.c:189:4: warning: Value stored to 'ret' is never read [deadcode.DeadStores]
                        ret = RP_FE_KF5;
                        ^     ~~~~~~~~~
src/libunixcommon/dll-search.c:194:4: warning: Value stored to 'ret' is never read [deadcode.DeadStores]
                        ret = RP_FE_KDE4;
                        ^     ~~~~~~~~~~
src/libunixcommon/dll-search.c:206:4: warning: Value stored to 'ret' is never read [deadcode.DeadStores]
                        ret = RP_FE_GTK3;
                        ^     ~~~~~~~~~~
2022-07-16 00:55:26 -04:00
David Korth
331a52b664 NEWS.md: Mention DDS ASTC and string table shenanigans. 2022-07-04 05:35:41 -04:00
David Korth
c447bbd63c NEWS.md: Mention string tables. 2022-07-03 13:46:19 -04:00
David Korth
ac049aee8b NEWS.md: Mention OSABI 102 (Cell LV2). 2022-07-03 13:08:44 -04:00
David Korth
e88395447b [libromdata] ELF: Add some missing byteswaps. 2022-07-02 09:52:11 -04:00
David Korth
bee65f674c NEWS.md: Mention the new GTK+ rp-config frontend.
Also, change the next version to 2.0 (was 1.10).
2022-06-28 22:32:30 -04:00
David Korth
28857f550e Use gcc's built-in functions to detect CPU flags in IFUNC resolvers.
Due to random shenanigans and symbol ordering, libromdata started
crashing because the linker was attempting to resolve the IFUNC
functions before the rpcpu functions were available. Use gcc's
built-in CPU support functions instead.

(It *was* working for me yesterday, then I rebooted and it stopped
working until I made this change.)

This requires gcc-4.8+ or clang-6.0+.

An alternative workaround is using lazy binding (-Wl,-z,lazy), but this
could just delay the crash until later.

IfuncTest.c: Test for the CPU support functions and disable IFUNC
if they aren't available.
2022-06-23 17:59:50 -04:00
David Korth
60149415f6 NEWS.md: Mention libromdata as a DLL; v1.10. 2022-06-22 19:45:44 -04:00
David Korth
d1592c1845 [libromdata] Atari7800: New parser for Atari 7800 ROM images with an A78 header.
Supports field data and metadata (the title field only).

I was going to add title screens, but the "title" field isn't actually
part of the ROM, so that's not useful for unique ROM IDs.
2022-06-12 03:15:28 -04:00
David Korth
061b59e43a [libromdata] N64: No space between "OS" and the version number.
See #339: Inaccurate OS Version display for Nintendo 64 ROMs
2022-06-11 14:44:20 -04:00
David Korth
b5b6bc6d8c [libromdata] N64: Display the ROM header clock rate.
If 0, "default" will be shown.

TextFuncs: New function formatFrequency(). It's similar to
formatFileSize(), except it operates on powers-of-10 instead of
powers-of-2, and only unsigned 32-bit values instead of off_t.
2022-06-11 14:41:43 -04:00
David Korth
0e78e272dd [libromdata] N64: Don't check the clock rate when checking the magic number.
Fixes detection of e.g. Star Fox 64 and Cruis'n USA, which have a value
set for clock rate instead of using the system default.

Fixes #340: Doesn't show properties for Nintendo 64 ROMs with different Clock Rate
Reported by @slp32.
2022-06-11 14:14:15 -04:00
David Korth
793e774392 [libromdata] N64: OS version is major.minor, e.g. 2.0, not 20.
Fixes #339: Inaccurate OS Version display for Nintendo 64 ROMs
Reported by @slp32.
2022-06-11 14:08:21 -04:00
David Korth
2b6f84e95a [libromdata] Nintendo3DS: Handle badly-decrypted NCSD/CCI images.
Some old decryption tools don't properly set the NoCrypto flag.

GodMode9 added a fix for this a few years ago.

(Actually, I wrote this patch a few years ago, but never tested or
committed it until now...)
2022-06-06 22:51:28 -04:00
David Korth
52971eea48 NEWS.md: Mention the Lua bugfix. 2022-05-25 19:39:49 -04:00
David Korth
530d503b03 rom-properties 1.9 2022-05-22 14:02:08 -04:00
David Korth
e28806cad7 [libromdata] EXE: Some EFI executables have a zero relocation table offset.
This previously caused rom-properties to assume the EFI executable
was an MS-DOS executable. Now, if the relocation table offset is 0,
and some other fields (program size, CS:IP, SS:SP) are also 0, the
MS-DOS shortcut will be skipped and the PE header will be checked.
2022-05-21 17:52:24 -04:00
David Korth
2a5e1a4e27 NEWS.md: Mention improved nametable mirroring display. 2022-04-03 17:59:10 -04:00
David Korth
fcb6fc09ec NEWS.md: Mention NE timestamps and XBE init flags. 2022-02-23 18:28:36 -05:00
David Korth
1cfc9e398a [kde] RomThumbCreator: Work around an issue in KDE's thumbnailer that breaks if img.bytesPerLine() is larger than width * bytespp.
This only seems to show up with hi_mark_sq.ktx, which is 145x130
24-bit RGB.

To work around it, make a copy of the QImage using QImage::copy().
This allocates a new memory buffer which uses "generic" alignment.

TODO: Figure out why it breaks in KIO's thumbnailer and submit a fix
upstream.
2022-02-18 01:54:53 -05:00
David Korth
f40908d889 [libromdata] GameCube: Display the required IOS version for Wii discs.
Based on similar code in WiiWAD.

Fixes #328: Show IOS version for Wii discs
Reported by @DankRank.
2022-01-23 16:02:38 -05:00
David Korth
8c22d10d3d *.md: Mention CBMCart. 2022-01-16 14:19:13 -05:00
David Korth
3da780cf57 [librptexture] Add EAC R11 and RG11 decoding.
These are reduced to 8-bit for ARGB32.

ImageDecoder_ETC1.cpp: Renamed decodeBlock_ETC2_alpha() to
T_decodeBlock_EAC() and templatized the byteOffset parameter to allow
it to be used to decode alpha (regular), or R or G (EAC).
2021-11-27 10:37:46 -05:00
David Korth
caa5cbce84 [libromdata] GBS: Add basic support for GBR (Game Boy Ripped).
GBS has basically replaced it, but I've encountered at least one GBR
file recently, so add basic support.
2021-11-05 19:45:58 -04:00
David Korth
14af9c3185 NEWS.md: Mention OpenMP and RGB9_E5 performance improvements. 2021-09-14 23:34:38 -04:00
David Korth
f5618f05cb [librptexture] ImageDecoder_S3TC: DXT3 should use (c0 > c1), not (c0 ≤ c1).
Wikipedia says DXT3 always uses the four-color (c0 > c1) palette:
https://en.wikipedia.org/wiki/S3_Texture_Compression#DXT2_and_DXT3

Khronos's wiki seems to say the wrong thing here:
https://www.khronos.org/opengl/wiki/S3_Texture_Compression#DXT3_Format

I previously implemented the Khronos version (c0 ≤ c1), which resulted
in garbage pixels. The Wikipedia version (c0 > c1) works correctly, and
the existing test images pass unit tests with no issues.
2021-09-06 06:46:14 -04:00
David Korth
97d7b001f6 NEWS.md: Mention PVRTC-II power-of-2 requirements. 2021-09-05 21:13:49 -04:00
David Korth
79a9dc4c2f NEWS.md, README.md: Mention Godot 4 STEX.
FIXME: Still need to figure out why NPOT S3TC textures are screwy.
I'm not sure if this is specific to the Godot 4 version or if it happened
with Godot 3 textures, too.
2021-09-05 16:08:10 -04:00
David Korth
f55ae00ce5 NEWS.md: Mention icon squaring. 2021-09-04 17:34:51 -04:00
David Korth
1ec9e68856 NEWS.md: Mention GodotSTEX and ASTC. 2021-09-04 03:56:43 -04:00
David Korth
05da6db0e8 NEWS.md: Mention registered Applications.
See issues: #241, #318, #319
2021-09-02 20:54:09 -04:00
David Korth
8377bf493b [libromdata] SNES: Fix detection of games that declare usage of the S-RTC chip in the ROM header.
Interestingly, the only ROM I could find in my collection that has this
set is the sd2snes menu. Daikaijuu Monogatari II uses S-RTC, but it
doesn't appear to have a valid header.
2021-08-24 00:02:58 -04:00
David Korth
79c0db30c5 NEWS.md: Mention the runtime DLL detection improvement. 2021-08-04 18:57:26 -04:00
David Korth
526537f9ae Version bump for development. (v1.8.3+) 2021-08-04 00:06:01 -04:00
David Korth
6a3647486c rom-properties 1.8.3 2021-08-03 21:22:56 -04:00
David Korth
9b1c02fb4b Version bump for development. (v1.8.2+) 2021-07-20 00:11:24 -04:00
David Korth
67ffdf5aef rom-properties 1.8.2 2021-07-19 22:59:17 -04:00
David Korth
43bf350f34 NEWS.md: Add credits for the v1.8.1 bug fixes. 2021-07-19 19:52:03 -04:00
David Korth
07f7c2198a Version bump for development. (v1.8.1+) 2021-07-19 19:50:53 -04:00
David Korth
6a87b25fd6 rom-properties 1.8.1 2021-07-19 19:25:34 -04:00
David Korth
4e0ace215f Version bump for development. (v1.8+) 2021-07-18 21:51:46 -04:00
David Korth
0c3fba1b0d rom-properties 1.8 2021-07-18 17:34:25 -04:00
David Korth
40396f7017 [libromdata] NintendoDS_p.hpp: Include the RSA key area for NDS-only ROMs.
The RSA key area is 136 (0x88) bytes located immediately after the total
used ROM size. This contains an RSA key used for "cloneboot".

If a game doesn't actually have an RSA key, this will just be 0xFF.

References:
- https://github.com/d0k3/GodMode9/issues/721
- 43f440c9fa
- 24243ff4ad
- https://github.com/DS-Homebrew/nds-bootstrap/releases/tag/v0.44.2
2021-07-17 15:32:39 -04:00
David Korth
563f623f5a NEWS.md: Consolidate MD stuff. (merge issues) 2021-06-28 20:05:23 -04:00
David Korth
90f773134b NEWS.md: Improve the MegaDrive changelog. 2021-06-27 01:03:44 -04:00
David Korth
43e46688d7 Merge branch 'feature/MegaDrive-title-screens-rpdb' 2021-06-26 16:20:34 -04:00
David Korth
dbac3f5434 NEWS.md, NETWORK.md, README.md: Mention Sega Mega Drive title screens. 2021-06-26 16:20:06 -04:00
David Korth
d4e1cdbb77 NEWS.md: Mention improved internal footer detection. 2021-06-21 20:32:32 -04:00
David Korth
b66de8f8de [librpbase] TextOut_json.cpp: Fix a segfault if romField.data.str is nullptr.
This fixes some MD ROMs that don't have the fields filled in correctly,
e.g. "Zhuo Gui Da Shi - Ghost Hunter (Taiwan) (Unl)".
2021-05-26 19:29:04 -04:00
David Korth
cb09bb741d [librpbase] Removed pngcheck.
pngcheck-2.3.0 was previously used to validate PNG images before loading
them with libpng. New security fixes for pngcheck were released in December
2020 with the caveat that because the code was crufty and unmaintained,
there may still be security issues. Because of this, pngcheck has been
removed entirely. Other security hardening methods, such as running image
decoders in a separate low-privilege process, may be implemented in the
future.
2021-05-20 19:07:39 -04:00
David Korth
cf0acd1f56 NEWS.md: Mention default language for PAL titles. 2021-05-12 21:27:13 -04:00
David Korth
ff8e1454c1 [libromdata] MegaDrive: s/Tera Drive/Teradrive/g
Unlike Mega Drive, there's no space in Teradrive.
2021-05-11 00:20:30 -04:00
David Korth
2a3abc8668 [libromdata] MegaDrive; Detect Tera Drive ROMs and some extensions.
Reference: https://www.plutiedev.com/rom-header#system

TODO: Display extensions and show modem info.
2021-05-10 19:24:42 -04:00
David Korth
c1526375d1 NEWS.md: Mention the previous commit. 2021-04-27 20:49:26 -04:00
David Korth
74141070c4 [libromdata] ISO: Initial support for parsing El Torito boot catalogs.
Curently only displays if x86 and/or EFI boot images are present,
but not any specifics.
2021-04-24 23:14:35 -04:00
David Korth
e3abb70ceb NEWS.md: Mention librptexture localization. 2021-04-23 01:24:27 -04:00
David Korth
62beab38f2 [libromdata] ISO: Basic support for CD-i images. (PVD only)
Main differences between ISO-9660 and CD-i:
- "CD-I " instead of "CD001".
- LE values aren't set in the PVD. (BE only)
- Directory format is completely different.
2021-04-17 21:16:35 -04:00
David Korth
d0e3e73393 NEWS.md: Mention "EN" fallback for NintendoDS. 2021-04-13 20:17:05 -04:00
David Korth
20813af231 Merge branch 'feature/TGA' 2021-04-11 14:05:44 -04:00
David Korth
e512f6b116 NEWS.md, README.md: Mention TGA support. 2021-04-11 14:05:27 -04:00
David Korth
38ba8d7536 [libromdata] EXEPrivate::doesExeRequireAdministrator(): Return false if there's no manifest.
We were returning the error code, which got interpreted as `true`
(non-zero). This resulted in all Win32 executables that don't have
manifests showing the "dangerous permission" overlay.
2021-04-10 12:27:06 -04:00
David Korth
a9de5ec2c3 [libromdata] Xbox360_STFS: Handle ".fxs" (Fallout) and ".exs" (Skyrim) save files.
These are STFS containers with different file extensions.

Fixes #303: Xbox 360 containers .fxs and .exs not showing metadata #303
Reported by @60fpshacksrock.
2021-04-05 21:42:34 -04:00
David Korth
dece57078a NEWS.md: Mention the Thumbnail Cache tab on KDE. 2021-04-03 15:14:51 -04:00
David Korth
a3da144b5d NEWS.md: Mention the Spanish translation from @Amnesia1000. 2021-04-03 00:16:39 -04:00
David Korth
00471006b1 NEWS.md, README.md: Mention WonderSwan support. 2021-03-31 20:18:50 -04:00
David Korth
f5f27f7500 NEWS.md: Mention the amiibo database file. 2021-03-22 00:36:57 -04:00
David Korth
278bad5644 NEWS.md: Mention the GitHub issue number for XGD3 misdetection. 2021-03-14 00:53:32 -05:00
David Korth
93106530db [libromdata] XboxDisc: Fix an edge case with some XGD3 discs.
XGD3 discs that have a video partition with an XGD2 timestamp were being
misdetected as XGD2, so the XDVDFS partition could not be found.

Affects: "Kinect Rush a Disney Pixar Adventure" (4D5309B6)

Fixes #291: Kinect Rush A Disney Pixar Adventure [4D5309B6] not being
parsed correctly

Reported by @Masamune3210.
2021-03-14 00:51:23 -05:00
David Korth
b3859eb353 NEWS.md: Forgot to commit the CD-ROM 2448-byte sector note from 2020/12/02. 2021-02-17 18:37:49 -05:00
David Korth
24e75f1aae NEWS.md: Mention the 'W' MD region code. 2020-11-27 21:17:38 -05:00
David Korth
221e4674c7 NEWS.md: Mention Xbox360_STFS bug fix. 2020-10-16 00:06:01 -04:00
David Korth
8134042a31 NEWS.md: Mention the GTK+ column 0 change. 2020-10-14 22:59:38 -04:00
David Korth
b3bdd10452 [libromdata] GameCom: Added support for RLE-compressed icons.
"Game.com Internet" and "Tiger Web Link" use RLE-compressed icons.
The icon information in the header is interpreted differently when using
RLE, which is why "Game.com Internet" didn't show any icon before
(X/Y coordinates out of bounds), and "Tiger Web Link" had a corrupted
icon.

Special thanks to @simontime for providing example code to decode
the RLE icon in issue #278.

Fixes #278: Tiger game.com ROMs with compressed icons aren't supported
Reported by @simontime.
2020-10-13 01:44:43 -04:00
David Korth
3f498c2abc NEWS.md: Mention Xbox 360 GPD files. 2020-10-12 19:28:38 -04:00
David Korth
cf3381a7ca NEWS.md: RFT_LISTDATA fields. 2020-10-11 02:13:40 -04:00
David Korth
0ee687ff42 NEWS.md: Mention ListView improvements. 2020-10-11 02:13:13 -04:00
David Korth
838c8893bf [win32] RP_ShellPropSheetExt.cpp: Count up when setting column widths.
This fixes XDBF Gamerscore columns being too wide. (also description)

This fixes a regression from commit c7b242de81.
([win32] RP_ShellPropSheetExt: A few cleanups and optimizations.)

Affects: v1.5 - v1.7.3
2020-10-10 22:06:35 -04:00
David Korth
26abccf38f [libromdata] Xbox360_XEX: Use the XEX1 key if the "Cardea Key" flag is set.
Some system firmware XEXes, e.g. xam.xex, use the XEX1 key.

Fixes #273: Checking the properties of xam.xex has a warning that says that the key is missing
Reported by @Masamune3210.
2020-10-08 23:47:45 -04:00
David Korth
ea200739bb [libromdata] Xbox360_XDBF: Added metadata extraction.
Currently only supports the game title.

Xbox360_XEX: RomMetaData ignores empty strings now, so we don't need to
check for it anymore.
2020-10-07 19:21:38 -04:00
David Korth
8a0dfa4280 [librpbase] RpPngPrivate::loadPng(): Don't unref() img if it's nullptr.
This caused a ton of crashes when fuzzing Xbox 360 GPD files with my
upcoming GPD changes.

This fixes a regression from commit 808f3141f4.
([librptexture] rp_image: Changed to a reference-counted class.)

Affects: v1.7, v1.7.1, v1.7.2, v1.7.3
2020-10-07 18:17:49 -04:00
David Korth
ffba2fb5f1 [libromdata] Xbox360_XEX: Removed the "Savegame ID" field.
This seems to be 0 in all tested games.

Fixes #272: Savegame ID always 0x00000000 in Xbox 360 titles
Reported by @Masamune3210.
2020-10-06 23:52:34 -04:00
David Korth
f3602d36a8 [kde] RomThumbCreator: Ensure the "Thumb::URI" value is urlencoded.
This probably won't affect too many systems, since KDE's standard
ThumbCreator interface handles this itself. This version is only
used if rp-thumbnail is called, and even then, on my system,
thumbnails generated with Thunar seemed to have the correct URI.
(Maybe that used tumblerd?)
2020-10-04 16:34:04 -04:00
David Korth
22ce8f1bac Merge branch 'feature/achievement-unlocked.v3' into master
I had wanted to get at least 10 achievements implemented before merging,
but we might as well merge it now, since it's mostly done.
2020-10-04 15:22:58 -04:00
David Korth
ef502f25dd NEWS.md: Mention achievements. 2020-10-04 15:22:26 -04:00
David Korth
b8101bee9c [libromdata] GameCube: Check for incrementing values in debug-encrypted partitions.
Moved the check to WiiPartition. When we initialize decryption for
encrypted discs, if the Wii Magic isn't present, check for incrementing
values.

This fixes detection of incrementing values on encrypted versions of
Wii Menu Installer v1.

Fixes #269: Keys are correct but property sheet still reports that the
key is incorrect.
- Reported by @Masamune3210.
2020-09-28 17:42:11 -04:00
David Korth
9d0ce67541 NETWORK.md, NEWS.md, README.md: Mention NGPC title screens. 2020-09-26 13:39:08 -04:00
David Korth
53c31e58cd Version bump for development. (v1.7.3+) 2020-09-26 00:11:51 -04:00
David Korth
3b726d93ee NEWS.md: Really fix #262. 2020-09-25 21:45:20 -04:00
David Korth
d989968c72 Version bump for development. (v1.7.2+) 2020-09-24 20:36:19 -04:00
David Korth
e968cfd0ec rom-properties 1.7.2 2020-09-24 18:04:55 -04:00
David Korth
aadcbde86a [libromdata] GameCube: Register the ".gcz" and ".rvz" file extensions on Windows.
Fixes #262: Roms GCZ do not show thumbnails of any kind
Reported by @Amnesia1000.
2020-09-24 18:02:19 -04:00
David Korth
73b6c70ad7 [libromdata] PlayStationDisc: Return if we didn't find SYSTEM.CNF but did find PSX.EXE.
Otherwise, we attempt to dereference the NULL f_system_cnf pointer,
which crashes. This happens on some discs (especially prototypes)
that don't have SYSTEM.CNF.

Fixes #258: [Windows] Explorer crash when trying to load certain PS1 images
Reported by @TwilightSlick.
2020-09-24 18:01:09 -04:00
David Korth
479d4f4d9f Version bump for development. (v1.7.1+) 2020-09-21 02:06:05 -04:00
David Korth
99db4cd90c [win32] RP_ShellPropSheetExt: Zero-initialize a_max_text_width.
This was originally an std::vector<>, which is zero-initialized. On Win7,
this doesn't seem to have made a difference, but on Win10, it causes the
value fields to sometimes be completely offscreen.

This will result in a v1.7.1 release.
2020-09-21 01:46:00 -04:00
David Korth
0f5f367380 Version bump for development. (v1.7+) 2020-09-20 19:04:36 -04:00
David Korth
e1d77bf7eb NEWS.md: Forgot to indicate today's date...
I should put together a "release process" document so I don't forget to
update things.
2020-09-20 19:03:24 -04:00
David Korth
957a971e3f NEWS.md: Mention thumbnailing files with '?' in their name on KDE. 2020-09-20 01:31:19 -04:00
David Korth
17868407b4 NEWS.md: s/Previewdetails/PreviewDetails/ 2020-09-20 00:52:23 -04:00
David Korth
99eee6e75b NEWS.md: Mention scrollbars on Windows. 2020-09-15 20:21:50 -04:00
David Korth
15ab93ffb9 [libromdata] XboxDisc: Fix incorrect memcmp() check for XGD3 with "16000000\xE0".
This fixes "2014 FIFA World Cup".

This fixes issue #253: Not all Xbox 360 ISO's detected and treated correctly.
Reported by @Masamune3210.
2020-09-15 01:30:35 -04:00
David Korth
94235fc5a8 [kde] Split the .desktop files into one for ThumbCreator and one for KPropertiesDialog.
This fixes e.g. Windows EXE thumbnailing, which is supported by another
plugin on KDE, but not by rom-properties; however, rom-properties *does*
support EXE for properties functions. With both ThumbCreator and
KPropertiesDialog in one .desktop file, all MIME types were taken over
by rom-properties for ThumbCreator, even if those types weren't supported.
2020-09-13 04:22:41 -04:00
David Korth
9426034d59 NEWS.md: Mention the MSVC compiler version changes.
MSVC 2012 is required due to commit 6e6499dc5b.
(Minimum MSVC version is now MSVC 2012 due to `enum class`.)

MSVC 2015 is required for test suites due to the Google Test upgrade in
commit 5a1b4d1be0.
([googletest] Updated to v1.10.0.)

[doc] COMPILING.md: Mention MSVC 2015 for test suites.
2020-09-13 02:34:39 -04:00
David Korth
c271e0dbbf [libromdata] EXE: Show the "dangerous permissions" overlay for Windows executables that have requestedExecutionLevel == requireAdministrator. 2020-09-13 01:19:54 -04:00
David Korth
01a8be12df [libromdata] PSP: Added support for UMD Video discs.
These were mentioned in issue #213: PSP ISO and CSO support?

Main changes:
- System ID is "UMD VIDEO" instead of "PSP GAME".
- Game ID in UMD_DATA.BIN is a video title, not an ID.
- Icon is located in /UMD_VIDEO/ instead of /PSP_GAME/, though the
  system update is still located in /PSP_GAME/SYSDIR/UPDATE/.
2020-09-13 00:41:56 -04:00
David Korth
ded41f94e8 NEWS.md: Mention the SRL ROM operations. 2020-09-12 22:05:40 -04:00
David Korth
df04fda6f2 [kf5] RpOverlayIconPlugin: unref() the RomData object when we're done with it.
This fixes a memory leak that's been present since RpOverlayIconPlugin
was introduced in rom-properties v1.4.
2020-09-12 17:51:29 -04:00
David Korth
58fdee14f8 [libromdata] WiiWAD: Forward imgpf() to the main content object.
This fixes the reporting of animated icons by `rpcli`.
2020-09-10 19:05:26 -04:00
David Korth
a72230e1dc NEWS.md, README.md: Note about supported TAD files.
The TAD files currently supported are not the same as the TAD files
exported by the DSi System Menu.
2020-09-10 18:17:05 -04:00
David Korth
daf42b2079 [libromdata] WiiWAD: Added preliminary support for Nintendo DSi TAD packages.
These have the same basic format as WADs, including ticket and TMD, but
the contents are different.

Basically, all the stuff that's not useful in DSi TMDs has been hidden.
Region code and age ratings are part of the SRL, which I'll add in a
separate tab at a later point.
2020-09-09 21:50:56 -04:00
David Korth
0e43fea7ba NEWS.md, README.md: Mention the "Options" button. 2020-09-09 00:45:09 -04:00
David Korth
dc7987376d [libromdata] WiiPartition: Fix the end loop when reading from an unencrypted disc image.
This may have caused memory corruption, though I didn't see any issues.

Found using valgrind-3.16.0:

Invalid read of size 16
   at 0x483D454: memcpy@GLIBC_2.2.5 (vg_replace_strmem.c:1032)
   by 0x1D12EC: memcpy (string_fortified.h:34)
   by 0x1D12EC: LibRomData::WiiPartition::read(void*, unsigned long) (WiiPartition.cpp:636)
   by 0x1C4591: LibRomData::GcnPartitionPrivate::loadFst() (GcnPartitionPrivate.cpp:157)
   by 0x1C4229: LibRomData::GcnPartition::open(char const*) (GcnPartition.cpp:261)
   by 0x156577: LibRomData::GameCubePrivate::wii_loadOpeningBnr() (GameCube.cpp:502)
   by 0x156810: LibRomData::GameCubePrivate::wii_addBannerName() const (GameCube.cpp:581)
   by 0x159708: LibRomData::GameCube::loadFieldData() (GameCube.cpp:1677)
   by 0x1DB854: LibRpBase::RomData::fields() const (RomData.cpp:700)
   by 0x1470AD: operator<<(std::ostream&, ROMOutput const&) (properties.cpp:1111)
   by 0x1444CF: DoFile(char const*, bool, std::vector<ExtractParam, std::allocator<ExtractParam> >&, unsigned int) (rpcli.cpp:184)
   by 0x146113: main (rpcli.cpp:491)
 Address 0x5219d6c is 65,724 bytes inside a block of size 65,736 alloc'd
   at 0x4838E0F: operator new(unsigned long) (vg_replace_malloc.c:342)
   by 0x1D09F6: LibRomData::WiiPartition::WiiPartition(LibRpBase::IDiscReader*, long, long, LibRomData::WiiPartition::CryptoMethod) (WiiPartition.cpp:501)
   by 0x158161: LibRomData::GameCubePrivate::loadWiiPartitionTables() (GameCube.cpp:382)
   by 0x15942D: LibRomData::GameCube::loadFieldData() (GameCube.cpp:1612)
   by 0x1DB854: LibRpBase::RomData::fields() const (RomData.cpp:700)
   by 0x1470AD: operator<<(std::ostream&, ROMOutput const&) (properties.cpp:1111)
   by 0x1444CF: DoFile(char const*, bool, std::vector<ExtractParam, std::allocator<ExtractParam> >&, unsigned int) (rpcli.cpp:184)
   by 0x146113: main (rpcli.cpp:491)
2020-09-05 23:46:08 -04:00
David Korth
b9840512ef Merge branch 'feature/PSP-ISO' into master
PARAM.SFO isn't parsed yet, but it's basically feature-complete otherwise.
2020-09-05 23:16:05 -04:00
David Korth
406f64082e [libromdata] IsoPartition, XDVDFSPartition: Properly unreference q->m_discReader in error paths.
This was causing handle leaks when regular ISO files were present in
a directory, since RomDataFactory attempts to create an XboxDisc when
trying to detect RomData subclasses for ISO images.

This fixes issue #249: Handle leak when dealing with PSP ISO files (possibly with Japanese text)
Reported by @Masamune3210.
2020-09-05 22:31:56 -04:00
David Korth
f453a8b865 NEWS.md, README.md: JISO is supported now. 2020-09-05 05:05:52 -04:00
David Korth
28ea69d1e1 NEWS.md, README.md: Mention PSP support and ISO metadata. 2020-09-05 03:45:21 -04:00
David Korth
6322b42438 [libromdata] PlayStationDiscPrivate::loadSystemCnf(): Added some missing unref() calls.
This fixes some file handle leaks.

This fixes issue #247: PS2 bin/cue combo causing possible crash?

Reported by @Masamune3210.
2020-08-23 21:49:33 -04:00
David Korth
4a090b8525 [libromdata] DMG: Added support for ROMs with 512-byte copier headers.
I'm not sure which copiers add these, but I have several ROMs that have
512-byte headers, some of which appear to have the same signatures as
e.g. Super Magic Drive and Super Wild Card.
2020-08-21 18:32:06 -04:00
David Korth
e0c47da85e [libromdata] DMG: SRAM bank size is 8 KB, not 16 KB.
This fixes issue #246: Ram banks incorrect?

Reported by @Icesythe7.
2020-08-17 21:55:11 -04:00
David Korth
a3bb8e1eff [libromdata] NintendoDS: Indicate the specific Security Data that's present.
There's two important sections: Blowfish Tables and Static Data.
The rest is some randomized data. The exact algorithm is unknown,
and ROM images work on an IS-NITRO-EMULATOR if Blowfish and Static
data are present but Random data isn't. Missing Random data does
cause a verification error when using the official devkit tools
to verify a flashcart, so that means there's *some* algorithm used
to calculate it.
2020-08-17 18:04:47 -04:00
David Korth
188ea48e1d [libromdata] Nintendo3DSFirm: Added some more homebrews; show sighax status.
Sighax status is checked if it's an ARM9 homebrew. The check is done by
comparing the first four bytes of the signature against known sighax
signatures for NAND, NCSD, and SPI (ntrboot).
2020-07-30 18:57:23 -04:00
David Korth
9cd17dc3e0 [win32] Register PreviewDetails and InfoTip per extension instead of using a ProgID.
Using a ProgID breaks .cmd files on Windows 8.

This fixes issue #242: Windows doesn't recognise .cmd files properly
when rom-properties is installed.

Reported by @mariomadproductions.
2020-07-30 18:55:51 -04:00
David Korth
b9eb727507 [libromdata] NintendoDS: Use the full title in metadata properties if available. 2020-07-30 02:21:40 -04:00
David Korth
3a9ecec500 [libromdata] DreamcastSave: Added metadata properties.
Currently only title and creation time.

TODO: Dreamcast doesn't support timezones.
2020-07-30 02:09:30 -04:00
David Korth
f94a2ce4ea [win32] RP_PropertyStore_Register: Default InfoTip should be InfoTip, not PreviewDetails. 2020-07-30 01:38:12 -04:00
David Korth
33201e1e0e [libcachecommon] Added a system-wide cache directory. (Linux only)
This is useful for cases where the thumbnailer cannot download files or
write to the user's cache directory. libgnome-desktop, when configured
with bubblewrap enabled, doesn't allow access to the home directory
(aside from the file being thumbnailed), but *does* allow access to the
/usr/ directory.

Three cases are now possible, depending on if a cache file is present in
the system-wide cache directory and/or the user's cache directory:

- IS in system-wide, NOT in user's: Use the system-wide version.
- IS in system-wide, AND in user's: Use the user's version.
- NOT in system-wide: Use the user's version, calling rp-download if the
  file doesn't exist.
2020-07-21 18:22:58 -04:00
David Korth
73f21a9e64 [kde] RomThumbCreator: Escape '#' characters in filenames.
QUrl assumes anything after the '#' isn't relevant, which breaks
handling files with '#' in the filename.

This fixes a regression from commit eef656926e.
([kde] RpQt: New functions localizeQUrl() and openQUrl().)

This affects v1.5 and v1.6 on KDE only.
2020-07-21 18:21:44 -04:00
David Korth
cff45f7c93 NEWS.md: PlayStationDisc fixes are for v1.7, not v1.6.1. 2020-07-21 00:28:39 -04:00
David Korth
0ae4018aec NEWS.md: Mention PlayStationDisc boot filename backslashes. 2020-07-20 22:58:34 -04:00
David Korth
3f2dee1452 [libromdata] PlayStationDisc: Allow discs without SYSTEM.CNF if they have PSX.EXE.
This is apparently allowed by the PS1 BIOS.

Also: s/system.cnf/SYSTEM.CNF/g
2020-07-20 18:53:31 -04:00
David Korth
3a13bf5570 NEWS.md: Mention the Windows XP SNI workaround. 2020-07-18 04:16:15 -04:00
David Korth
726e1bface NEWS.md: Mention URL escaping stuff. 2020-07-18 03:12:54 -04:00
David Korth
6418f99bab Version bump for development. (v1.6.1+) 2020-07-13 00:22:15 -04:00
David Korth
d793703740 rom-properties 1.6.1 2020-07-12 23:57:27 -04:00
David Korth
1bb267ff7d Version bump for development. (v1.6+) 2020-07-12 17:23:43 -04:00
David Korth
4c39562f85 rom-properties 1.6 2020-07-12 15:00:26 -04:00
David Korth
31c7bf10f2 NEWS.md: Mention debug Wii U stuff. 2020-07-11 03:01:56 -04:00
David Korth
73d3c02df8 NEWS.md: Mention EXE crash fixes. 2020-07-04 00:06:33 -04:00
David Korth
caa2972a88 [libromdata] GameCube: Detect more types of standalone update partitions.
'UPD' is an IOS-only update partition.
'UPE', 'UPJ', 'UPK', and 'UPP' are region-specific update partitions.

'UPC' would be a region-specific update partition for China, if the
iQue Wii would have been released.

There might be a 'UPT' or 'UPW' for Taiwan, but a Taiwan-region Wii
didn't happen, either. (Well, there might be an RVL-001(TWN), but it
likely has a JPN region code.)
2020-07-03 00:40:36 -04:00
David Korth
fc51b5eaf0 NEWS.md: Mention XboxPublishers. 2020-07-03 00:40:19 -04:00
David Korth
3196c17725 [libromdata] WiiU: Get the GameTDB region code for boxart from the game ID. 2020-06-30 19:47:43 -04:00
David Korth
66e466b925 [libromdata] WiiSave: Show permissions as if they're Unix-style permissions, and show the "No Copy from NAND" flag.
WiiWIBN: Added an accessor to get the "No Copy from NAND" flag.
2020-06-30 19:45:34 -04:00
David Korth
0b6ea2e4a7 [libromdata] GameCube: Added detection of RVZ files.
RVZ is an updated version of WIA designed for Dolphin. The header is
essentially the same as WIA, so we're using the same detection code.

Rearrange some code to move WIA and RVZ after the other checks.

Fixed the WIA disc type check. We should have been checking a BE32
value, not a single byte. This realistically didn't cause any problems,
since if this check failed (and it always did), it fell back to checking
for the GameCube and Wii magic numbers.
2020-06-29 18:28:42 -04:00
David Korth
076db5edfb [libromdata] GameCube: Added support for GCZ images.
GczReader: New DiscReader class for GCZ images.

Note that the minimum block size is 16 KB, since NKit 1.4 uses 16 KB
sector sizes for some reason.
2020-06-29 18:11:18 -04:00
David Korth
78d7bbbc46 [thumbnailer-dbus] .thumbnailer file: MimeTypes, not MimeType.
It turns out the reason why my Xubuntu VMs weren't thumbnailing anything
is because the SpecializedThumbnailer1 file uses MimeTypes, whereas the
other files (.desktop, GNOME .thumbnailer) use MimeType.

This fixes a regression from commit f403905097.
(XDG service files: Updated *all* MIME types.)

Affects versions: 1.4, 1.5
2020-06-24 02:17:10 -04:00
David Korth
7e4b08672e [gtk3] Split the "is supported" check into a separate file.
Common code used by both the Nautilus and Thunar providers.

Renamed to rp_gtk3_is_uri_supported(). The function now takes a URI
instead of a NautilusFileInfo or ThunarxFileInfo.

RpNautilusProvider: We were getting the URI twice and only freeing
it once. This is a memory leak...
2020-06-24 01:39:06 -04:00
David Korth
825ec3afdd NEWS.md: Consolidated the XFCE (GTK+ 3.x) plugin with the rest of the GTK+ 3.x plugins.
Removed part of the technical details that aren't too important.
2020-06-24 00:52:49 -04:00
David Korth
5477eb6bb0 [librptexture] KhronosKTX: Fixed preview of textures with more than one array element. 2020-06-22 00:40:46 -04:00
David Korth
940abdf7d2 NEWS.md: Mention support for PS1 and PS2 disc images.
This fixes issue #222: Feature Request: Return PlayStation/PlayStation 2
executable build dates and filenames from ISO/BIN image
2020-06-21 14:05:36 -04:00
David Korth
2b5f6cb3dc Merge branch 'feature/enum-class' 2020-06-21 01:34:05 -04:00
David Korth
dece28e326 [libromdata] Nintendo3DS: CVer CIAs have an 8-byte meta section.
Not entirely sure what's in it, but this ensures that CVer is detected as
a CIA file.

(cherry picked from commit 7d66625bfd)
2020-06-20 15:37:01 -04:00
David Korth
4bed89e25e [libromdata] iQuePlayer: Converted FileType to an enum class and renamed it to IQueFileType.
RomDataPrivate has its own fileType variable, which indicates the
generic file type. We have to rename our iQue-specific fileType to
iQueFileType to prevent conflicts.

This may have caused some user-visible shenanigans, but most people
probably wouldn't have noticed the unusual file type. (CMD would be
"Unknown", and DAT would be "ROM Image".)

(cherry picked from commit 8675dfcf67)
2020-06-20 15:10:19 -04:00
David Korth
64521d8c09 Merge branch 'feature/hsfs'
Conflicts:
	NEWS.md
2020-06-20 14:07:59 -04:00
Egor
0ecde8cfaf [libromdata] ISO: Added support for High Sierra Format CDs 2020-06-20 08:19:58 +03:00
David Korth
a7c529c92b [libromdata] SufamiTurbo: New parser for Sufami Turbo mini-carts.
Sufami Turbo is an expansion cartridge for the Super Famicom, so I'm
considering this as part of SNES.

External title screens are stored in the "snes/title/ST/" directory
on the RPDB server.

Moved formatBankSizeKiB() from NES.cpp to TextFuncs.hpp and renamed
it to formatFileSizeKiB(). SufamiTurbo uses this function for the
ROM and SRAM size fields. "KiB" is now localized, too.

SNES: Minor comment fixes.

[libcachecommon] CacheKeys: Escape '#'. "Poi Poi Ninja World" for
Sufami Turbo has '#' in its internal title.
2020-06-17 01:54:55 -04:00
David Korth
a2dbe07e9a [libromdata] SNES: Added metadata handling.
Mostly copied directly from DMG.

Split the publisher code into getPublisher(), similar to DMG. This version
also prints the publisher code if the lookup fails.

DMG: Increase the metadata reservation to 2. Also, don't add the title if
it's empty.
2020-06-16 23:39:51 -04:00
David Korth
07cdc1462d Rescale SNES title screens from 256x224 -> 320x224 or 512x448 -> 640x448.
SNES uses non-square pixels, so we need to rescale the title screens
to show them properly. This is done using bilinear interpolation to
prevent weird artifacting, since it's a non-integer scaling.

RomData: New IMGPF flag IMGPF_RESCALE_256to320_512to640, which indicates
this scaling is needed. It only has any effect if the source image is
256px or 512px wide, and it doesn't affect the image height.

TCreateThumbnail: rescaleImgClass() now takes a ScalingMethod parameter
to indicate the scaling method to use. Default is Nearest.

[kde] Don't use Qt::KeepAspectRatio. The GTK+ and Win32 versions don't
do this, and we can't have it set because the SNES scaling inherently
changes the aspect ratio. The aspect ratio *is* preserved elsewhere in
cases where it's needed.

FIXME: On Windows 7, there seems to be an issue where if the image isn't
square, it originally shows up as if it's square, and *then* it's
shrunken down to its correct aspect ratio. May need to pad it to make
it square...
2020-06-16 23:23:47 -04:00
David Korth
e217019cbe [libromdata] SNES: Added external title screen images using my new RPDB subdomain.
Subdirectorie are based on the destination code field in the ROM header.

TODO:
- Rescale images from 256x224 to 320x224 (or 512x448 to 640x448).
- Fix detection of some SNES ROM images, especially those that use
  Shift-JIS titles due to lack of Game ID.
- Also fix detection of some BS-X ROM images.
2020-06-15 01:18:18 -04:00
David Korth
d7a42cd115 [libromdata] XboxDisc: Fix crash when opening original Xbox ISO images that have a default.xbe file that isn't readable by the XboxXBE parser.
This happens with some early devkit discs that have 'XE' format
executables.

This fixes issue #219: Xbox ISO causes explorer crash
Reported by @cfas1.
2020-06-12 01:13:28 -04:00
David Korth
939cb1bde4 NEWS.md: Mention support for split .wbfs/.wbf1 files. 2020-05-31 18:42:04 -04:00
David Korth
ddeedb4745 [libromdata] NESMappers: Added more (unused) mappers for TNES format.
TODO: Submappers for a few TNES mappers.
2020-05-23 16:07:38 -04:00
David Korth
9737e7c1c1 Merge branch 'feature/combine-gnome3-plugins'
Needs some more testing, but it seems good enough to merge now.
2020-05-12 23:23:38 -04:00
David Korth
32c051f1ec NEWS.md: Mention GNOME plugin consolidation. 2020-05-10 18:04:33 -04:00
David Korth
6f9d1fa591 [libromdata] Nintendo3DS: Show the issuer for CCI images.
This was shown for CIAs, but we forgot to add it for CCI.
2020-05-10 00:09:36 -04:00
David Korth
324269cfd3 [win32] RP_ExtractImage: Return E_FAIL if the file could not be opened.
Otherwise, we attempt to use the unref()'d file, which crashes.

This crash is reproducible on Windows if a shortcut file (.lnk) is
pointing to a file type supported by rom-properties, but the target
file is missing. (dangling shortcut)

This fixes issue #217: Windows 7 explorer crashes constantly after
installing rom propreties (reported by @Midou36O).

This commit is a candidate for rom-properties 1.5.1.
2020-05-09 17:27:40 -04:00
David Korth
c5ffa349ab Merge branch 'feature/rpdb-gerbilsoft-com.v3' 2020-04-19 16:19:33 -04:00
David Korth
135f6c212e [libromdata] WiiWAD: Fix broken DLC icons caused by CBCReader fixes.
CBCReader was updated to properly update its current position, which was
needed for Xbox 360 XDBF files.

WiiWAD incorrectly depended on it *not* updating, since we were checking
for a content.bin header, which doesn't exist in WAD files. Don't check
for the content.bin header anymore.

This fixes a regression from commit e2553d5bc1.
([librpbase] CBCReader: Make sure d->pos stays in sync with the read position.)

NOTE: This means this feature is broken in v1.4 (when it was introduced)
and in v1.5.
2020-04-10 21:27:37 -04:00
David Korth
2b582d372a NEWS.md, README.md: Mention DMG/GBA title screens and GBA metadata.
Also, the Xbox 360 features are new parser features, not general features,
so they're now in the "new parser features" section.
2020-04-09 20:43:20 -04:00
David Korth
d254dbffb9 NEWS.md: Mention XEX and STFS changes. 2020-04-09 19:28:15 -04:00
David Korth
6600b6bb19 NEWS.md: Mention librpfile and librpcpu. 2020-03-14 16:57:56 -04:00
David Korth
516c0df383 Version bump for development. (v1.5+) 2020-03-14 00:59:54 -04:00
David Korth
0eadbd84cc rom-properties 1.5 2020-03-13 20:45:11 -04:00
David Korth
bf811765d3 [librptexture] rp_image::squared(): Added (non-optimal) CI8 support; fix issues with images that are taller than they are wide.
The sq_img was always created using width as the dimension, so if the
original image is taller, this would result in memory corruption.

Factored out some common code for getting the source and destination
buffers and stride values.

This showed up when viewing some Didj textures on Windows. This only
affects Windows, since rp_image::squared() is currently only used for
Windows icons. (...though it might be used for thumbnails too?)
2020-03-13 01:01:08 -04:00
David Korth
b24fdff5c1 [kde] RomDataView::eventFilter(): Removed a line of debugging code.
This prevented RFT_LISTDATA views from being resized properly for e.g.
Nintendo3DS.

This fixes a regression from commit 9a6ad950e5.
([kde] RomDataView: If the last field in a tab is RFT_LISTDATA in a separate row, move it out of the QFormLayout and into the QVBoxLayout.)

NOTE: This bug is present in v1.4. It's a minor display issue, but it can
be annoying if it results in the RFT_LISTDATA views being too small.

This fixes the following Coverity Scan bugs:
- #1483974: Structurally dead code
2020-03-01 19:03:22 -05:00
David Korth
59a24e55a5 [libromdata] MachO::supportedFileExtensions_static(): Add a missing comma after ".dylib".
This has apparently been broken since Mach-O support was added in
commit bfe48a13cf.
([libromdata] MachO: Initial parser for Mach-O binaries, e.g. Mac OS X executables.)

NOTE: This bug is present in v1.4, which means that on Windows systems,
a registration for ".dylib.bundle" was added.

[win32] DllMain: Remove the registration for ".dylib.bundle".

This fixes the following Coverity Scan bugs:
- #1483991: Missing comma in a string array initialization
2020-03-01 18:20:46 -05:00
David Korth
f3854943b5 [gtk] CreateThumbnail: Don't premultiply the image when saving the PNG image.
Cairo needs premultiplied images when displaying them, but libpng does
*not* use premultiplied.

This fixes e.g. the color of the "glow" in Super Smash Bros. Melee's
save file icon.

Note that this only affected the GTK+ 3.x UI frontends.

CairoImageConv::rp_image_to_cairo_surface_t(): Added a `premultiply`
parameter. Default value is `true` (display). Set to `false` for PNG.
2020-03-01 15:11:56 -05:00
David Korth
2c4033d632 [gtk, kde] TCreateThumbnail subclasses: Write "Thumb::Image::Width" and "Thumb::Image::Height".
These properties represent the size of the original image that was
thumbnailed.

Rewrote the TCreateThumbnail<>::getThumbnail() functions to take a
pointer to a struct for output parameters, including ImgClass, thumbnail
image size, full image size, and sBIT. This simplifies a few things, and
reduces the number of parameters needed.
2020-02-29 13:24:01 -05:00
David Korth
3a8070be8f [kde] RomThumbCreator: Modification time should be "Thumb::MTime", not "Thumb::Size".
This fixes a regression from commit 352723baad.
(Minor string optimizations.)

NOTE: This means the bug is present in v1.4.
2020-02-29 12:55:05 -05:00
David Korth
51bafad99e [gtk] DragImage: Implemented initial drag & drop support.
Basically the same level of functionality as the KDE version.

Changed the base class to GtkEventBox, since GtkImage doesn't have
a native GdkWindow, so it doesn't receive events by itself.

TODO: Use text/uri-list and temporarily extract images somewhere.
Need to check how archiving programs do this.

[librpbase] RpVectorFile: std::vector<>-backed IRpFile. This is used
for RpPngWriter in the GTK+ DragImage.

FIXME:
- Thunar isn't accepting the dropped images. (Nautilus works fine.)
- Transparency isn't working for GALE01.gci. This has apparently been
  an issue for a while, with both GtkImage and GtkEventBox. Not sure
  why. Maybe we should just set GtkImage's background color to match
  the window background color...
2020-02-27 21:58:10 -05:00
David Korth
90ace4cd0b NEWS.md: Removed TODOs for Windows security options.
rp-download is not used by rpcli, so there's no need to check the
architecture-specific subdirectories.
2020-02-23 13:21:31 -05:00
David Korth
ac46f0ee68 [libromdata] NintendoDS, Nintendo3DS: Italy is "IT", not "NL".
This has apparently been broken since "the beginning".

NintendoDS: Commit 65541f3ec6
([libromdata] NintendoDS: Added external image URLs for cover and box scans.)
Date: 2017/02/26 03:05 PM EST

Nintendo3DS: Commit 4a4628a017
([libromdata] Nintendo3DS: Added GameTDB region code handling.)
Date: 2017/03/25 01:34 PM EDT
2020-02-18 23:23:40 -05:00
David Korth
1a683ba9f2 [libunixcommon] dll-search.c: Simplify the DLL search; fix off-by-one.
The off-by-one prevented it from searching for e.g. the KDE4 library
if using XFCE (GTK+ 2.x). In practice, this probably won't show up
too often, so it isn't a major bug.
2020-02-18 20:36:46 -05:00
David Korth
f662285acc [libromdata] GameCube: Fixed handling of fields for NDDEMO.
It was exiting when it hit the NULL byte in the game ID, so change it
to underscore like GameCubeSave and WiiU.

This fixes a regression from commit 65fe1be82a.
([libromdata] GameCube, NintendoDS: extURLs(): Ignore games with non-printable game IDs.)
Date: 2017/03/26 01:53 AM EDT

This affects v1.0-v1.4.3.
2020-02-15 21:43:50 -05:00
David Korth
23283a95f3 NEWS.md, README.md: Mention Xbox360_STFS icons. 2020-02-13 08:11:44 -05:00
David Korth
736080f473 [rpcli] Added support for OpenBSD pledge().
It's a bit more restrictive than rp-download, since rpcli doesn't need
to access the Internet.

Moved Win32 security option initialization to an os-secure file as well
for consistency.

Moved the OpenBSD pledge()/tame() check to a CMake macro file.
2020-02-10 22:29:13 -05:00
David Korth
9a49208bb0 [librptexture] Initial implementation of KhronosKTX2.
Based on draft18.

TODO:
- Port over the key/value data decoding from KhronosKTX.
- Add mipmap support.
2020-02-09 14:32:42 -05:00
David Korth
271376f240 NEWS.md: Mention the S3TC/BC7 tile size fix. 2020-02-06 20:42:29 -05:00
David Korth
86e8363f44 [kde] RomDataView: Disable mnemonics on bitfield checkboxes.
This uses KAcceleratorManager, which is in KF5WidgetsAddons on KF5 and
kdeui on KDE4.
2020-02-03 00:53:30 -05:00
David Korth
b9288f1d9f [libromdata] MachOData: Fixed CPU subtype detection for 486SX.
486SX is 4+128, so we have to check this as part of 486.

Found via MSVC 2019 16.4.3's code analysis:

MachOData.cpp:103: Labeled code is unreachable:  '(<expression> & 0xf)' in a switch-expr cannot evaluate to '0x84'.
2020-01-31 23:08:14 -05:00
David Korth
59b3107cac [libromdata] MegaDrive: Fixed region code detection for locked-on ROMs.
Previously, it would use the base ROM region code for both.
2020-01-29 01:53:53 -05:00
David Korth
b44f938d38 [rpcli] properties.cpp: Fix escaping of double-quotes.
It was printing a backslash, but not the actual '"' character.

This broke printing the Spanish language version of Sonic'06's
achievements list, which uses double-quotes.
2020-01-25 21:19:30 -05:00
David Korth
e351672dd9 [libromdata] Fixed GameTDB downloads for CHN and TWN region games.
Systems: Nintendo DS, Nintendo 3DS, GameCube, Wii
2020-01-25 12:50:03 -05:00
David Korth
4f9daf7cc1 [libromdata] NEResourceReader: Convert VS_VERSION_INFO from its specified code page.
Windows 3.2 (Simplified Chinese localization of Windows 3.1) uses
code page 936 for its VS_VERSION_INFO sections, but they don't
actually have text outside of the ASCII range. The text still decodes
properly, so at least that part isn't broken.

TODO: Find an executable that doesn't use cp1252 *and* has non-ASCII
text in order to test this properly.
2020-01-25 10:52:12 -05:00
David Korth
f0673c19f8 [libromdata] WiiPartition: Calculate the used partition size correctly for unencrypted RVT-H Reader disc images.
Previously, GcnPartition was always multiplying by 32/31, regardless of
the encryption status.

The Last Story (PAL) v2340 has ~4.70 GiB of data when extracted, including
the FST and main.dol. rpcli was previously showing 4.85 GiB used; now it
shows 4.70 GiB, which includes the FST, main.dol, and partition header.

Also check if the DOL is after the FST, and if it is, use the DOL offset.
TODO: Get the DOL size if the DOL is located after the FST. This is
unlikely, though...
2020-01-25 10:28:55 -05:00
David Korth
b8b106333b [rpcli] properties.cpp: Use SYSNAME_REGION_LOCAL.
This might break unit testing, but I haven't implemented unit testing
with rpcli yet anyway. If/when I do, I'll add an option to disable
localized system names.
2020-01-25 00:14:36 -05:00
David Korth
2a9c67f059 NEWS.md: Mention the language dropdown box. 2020-01-24 23:35:05 -05:00