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
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".
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.
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.
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.
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.
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?
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.
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.
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.
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.
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.
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;
^ ~~~~~~~~~~
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.
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.
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.
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.
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...)
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.
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.
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).
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.
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.
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.
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.
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.
These are STFS containers with different file extensions.
Fixes#303: Xbox 360 containers .fxs and .exs not showing metadata #303
Reported by @60fpshacksrock.
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.
"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.
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
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.
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
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?)
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.
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.
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.
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.
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.
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/.
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.
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)
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.
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.
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.
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).
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.
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.
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.
'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.)
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.
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
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...
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)
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.
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.
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...
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.
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.
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.
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?)
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
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
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.
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.
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...
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
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.
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.
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.
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'.
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.
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.
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...
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.