Sonic and Sega Retro Message Board: ROM Properties Page shell extension - Sonic and Sega Retro Message Board

Jump to content

Hey there, Guest!  (Log In · Register) Help
  • 3 Pages +
  • 1
  • 2
  • 3
    Locked
    Locked Forum

ROM Properties Page shell extension v0.9-beta2 now available!

#31 User is offline GerbilSoft 

Posted 14 October 2016 - 09:59 AM

  • RickRotate'd.
  • Posts: 2668
  • Joined: 11-January 03
  • Gender:Male
  • Location:USA
  • Project:Gens/GS
  • Wiki edits:5,000 + one spin
More distraction. :v: I implemented banner and icon display in the property sheet window:

Posted Image

The icon is animated if the file has an animated icon (e.g. GameCube save files and Nintendo DSi ROM images). This isn't normally doable in the file browser because none of them support animated icons AFAIK, but it's doable in the property sheet. Currently only supported on the KDE build; will add Windows support later today.

#32 User is offline GerbilSoft 

Posted 18 October 2016 - 01:48 PM

  • RickRotate'd.
  • Posts: 2668
  • Joined: 11-January 03
  • Gender:Male
  • Location:USA
  • Project:Gens/GS
  • Wiki edits:5,000 + one spin
Finally getting close to a release. I fixed the last major blocker (installing the shell handlers on Windows even if the user has a custom file association), so here's what's left:
  • Finish TextFuncsTest. I've occasionally hit issues where some changes to the text encoding functions resulted in massive breakage on certain configurations. A comprehensive test suite for every function will make sure this gets caught by failing in 'make test'.
  • Set up CPack to handle .deb packaging on Linux. I'm going to use one .deb per frontend (that is, one for KDE4, one for KDE5) rather than lump all of them in a single .deb package.
  • Write a script to combine the Win32 and Win64 builds into one .zip archive. CMake unfortunately doesn't support building for multiple architectures at once on anything but Mac OS X, so I'll need to build Win32 and Win64 separately, then combine the two. I already wrote some custom batch files to register and unregister the DLLs using regsvr32. On 32-bit systems, it only registers rom-properties-i386.dll; on 64-bit systems, it also registers rom-properties-amd64.dll. Generally, users aren't going to be using standalone 32-bit Windows Explorer on 64-bit systems, but they might use it as part of the standard file dialogs in a 32-bit application.

I also added some infrastructure to use gcov/lcov in gcc builds to graph code coverage. I'll add this to the travis-ci build later. (Slightly annoyingly, the code I'm using will fail if any of the tests fail, but then again, the tests shouldn't fail, so that's a bit of an incentive to fix the tests.)
This post has been edited by GerbilSoft: 18 October 2016 - 02:03 PM
Reason for edit: +gcov/lcov

#33 User is offline GerbilSoft 

Posted 23 October 2016 - 10:24 PM

  • RickRotate'd.
  • Posts: 2668
  • Joined: 11-January 03
  • Gender:Male
  • Location:USA
  • Project:Gens/GS
  • Wiki edits:5,000 + one spin
v0.8 (Beta 1) is now available! Check the original post for download links.

#34 User is offline GerbilSoft 

Posted 26 October 2016 - 11:04 PM

  • RickRotate'd.
  • Posts: 2668
  • Joined: 11-January 03
  • Gender:Male
  • Location:USA
  • Project:Gens/GS
  • Wiki edits:5,000 + one spin
Today's hax:

Posted Image

Support for Dreamcast VMS icons. VMI and DCI files aren't supported yet, nor are ICONDATA_VMS files. (VMI will require some extra work because it has to load the icon from the VMS file.)

#35 User is offline GerbilSoft 

Posted 28 October 2016 - 02:16 PM

  • RickRotate'd.
  • Posts: 2668
  • Joined: 11-January 03
  • Gender:Male
  • Location:USA
  • Project:Gens/GS
  • Wiki edits:5,000 + one spin
Finally figured out a derpy bug that was causing some thumbnails to appear slightly offset to the top-left on Windows.

Windows 7's IThumbnailProvider interface will not resize thumbnails, so for small icons I use nearest-neighbor resizing. It turns out GDI+'s resize algorithm uses a weird setup: by default, the center of a pixel is (0, 0). This is supposedly "faster" than keeping the center of the pixel at (0.5, 0.5), but it results in weird shenanigans for nearest-neighbor resizing.

The solution:
Gdiplus::Graphics g(/*blah*/);
g.SetPixelOffsetMode(Gdiplus::PixelOffsetModeHalf);


This sets the correct pixel center. According to MSDN, PixelOffsetModeHalf (aka PixelOffsetModeHighQuality) results in a higher-quality image at the cost of being slightly slower. I'll take "correct rendering for nearest-neighbor resizing" over "it's faster but why is it shifted", thanks.

EDIT: Strangely, the Windows headers claim PixelOffsetModeHalf "offsets" the pixel by (-0.5, -0.5) for "fast anti-alias perf". This contradicts MSDN. :specialed:
This post has been edited by GerbilSoft: 28 October 2016 - 02:19 PM
Reason for edit: yay contradictions

#36 User is offline GerbilSoft 

Posted 19 November 2016 - 06:58 PM

  • RickRotate'd.
  • Posts: 2668
  • Joined: 11-January 03
  • Gender:Male
  • Location:USA
  • Project:Gens/GS
  • Wiki edits:5,000 + one spin
And now for something completely different:

Posted Image

amiibo NFC dump parsing and thumbnails, courtesy of amiibo.life.

Special thanks to CheatFreak since he suggested amiibo parsing and provided some useful information and data files.
This post has been edited by GerbilSoft: 19 November 2016 - 07:00 PM
Reason for edit: +thanks

#37 User is offline GerbilSoft 

Posted 05 December 2016 - 12:49 PM

  • RickRotate'd.
  • Posts: 2668
  • Joined: 11-January 03
  • Gender:Male
  • Location:USA
  • Project:Gens/GS
  • Wiki edits:5,000 + one spin
Quick update: I'm planning on releasing the next beta version (0.9) around Christmas. One major thing I want to have implemented by then that I haven't started yet is support for XFCE. This requires writing a property page plugin as well as an XFCE-compatible thumbnailer. (The thumbnailing interface on XFCE is the same as GNOME, so I should be able to support both with one project later on.)

Some other stuff that I've added recently:
  • Support for Wii RVT-R disc images. This doesn't do much, since the update partition doesn't have a full system menu, but it does at least identify the partitions as using the Debug key instead of Retail or Korean.
  • Added more amiibo entries and fixed a few that were incorrect.
  • Fixed a race condition in pngcheck that caused crashes on Windows 10 in some cases.

Things I also plan to have implemented for 0.9:
  • amiibo: Show owner and name. Requires the amiibo decryption key.
  • Wii: Display the opening.bnr game name.
  • Windows: Automatically pad icons so they're square, since Windows doesn't really like non-square icons. (It ends up being resized to be square, resulting in the wrong aspect ratio.)

Other stuff I've been working on that may or may not end up in 0.9:
  • Nintendo 3DS support. Currently handles .smdh, .3dsx, and unencrypted .cia files that have a META section. No support for .3ds/.cci or encrypted .cia yet. (Support for encrypted .3ds/.cci and .cia might not happen unless the protected boot ROM is dumped.)
  • Wii save files. Requires the SD common key, IV, and MD5 blanker. Contains a banner and icon similar to GameCube save files, but at a higher resolution. (Banner is 192x64; icon is 48x48.)

This post has been edited by GerbilSoft: 05 December 2016 - 12:51 PM
Reason for edit: +pngcheck race condition, windows icons

#38 User is offline GerbilSoft 

Posted 23 January 2017 - 03:09 PM

  • RickRotate'd.
  • Posts: 2668
  • Joined: 11-January 03
  • Gender:Male
  • Location:USA
  • Project:Gens/GS
  • Wiki edits:5,000 + one spin
A quick update, since I haven't posted about it in over a month:
  • I've added property page functionality for Nautilus 3.x (GNOME/Unity) and Thunar (XFCE).
  • Thumbnailing is also supported on Nautilus.
  • Thumbnailing has not been implemented yet for Thunar, and I probably won't have it ready for 0.9. (It requires writing a D-Bus service, which is painful.)
  • I have a work in progress (not committed yet) for "fallbacks" on Windows. This will allow rom-properties to be registered for files like .bin and .iso, which would otherwise cause conflicts. Basically, if rom-properties is called for a .iso file, but that file isn't supported (or it is supported but not for thumbnailing), the request will be forwarded to the previously-registered handler.
  • DSi age ratings are now displayed, and ratings for ESRB, CERO, and AGCB are decoded into the corresponding letter values.

I've received a suggestion about making a GitHub pages site for rom-properties, but I kinda suck at web design. If anyone would like to contribute, please let me know on IRC.
This post has been edited by GerbilSoft: 23 January 2017 - 03:11 PM
Reason for edit: +pages

#39 User is offline GerbilSoft 

Posted 07 February 2017 - 11:25 PM

  • RickRotate'd.
  • Posts: 2668
  • Joined: 11-January 03
  • Gender:Male
  • Location:USA
  • Project:Gens/GS
  • Wiki edits:5,000 + one spin
v0.9-beta2 is out now. Check the OP for download links.

#40 User is offline GerbilSoft 

Posted 07 March 2017 - 03:40 PM

  • RickRotate'd.
  • Posts: 2668
  • Joined: 11-January 03
  • Gender:Male
  • Location:USA
  • Project:Gens/GS
  • Wiki edits:5,000 + one spin
So here's what I've been working on since v0.9-beta2:
  • Parser for Windows/DOS EXEs, DLLs, and other executable files. This includes NE, LE, LX, and PE formats. For NE and PE, the header flags are shown, and if a version resource is present, the version resource is displayed in a subtab. Not yet implemented is icon thumbnailing (for non-Windows platforms only) and manifest parsing (for PE).
  • The Nintendo DS, GameCube, and Wii parsers now support downloading cover scans. The user configuration program for determining which type of scan to use has not been started yet, but it will be included for v1.0.
  • Parser for Wii U disc images. (*.wud) Currently only shows the basic product information, including game ID, region, and system version; everything else is encrypted using a per-disc key. GameTDB downloads of disc and cover scans are available.
  • Support for multiple sizes of external images. This will allow e.g. downloading the "default" image for small thumbnails, and then downloading "large" images if the thumbnail size is increased. Supported for Nintendo DS and Wii U; support for internal images (e.g. Windows executables) will be added later. An option to control downloading of large images will be added to the user configuration program, since that might not be wanted on low-bandwidth connections.

Some other stuff in progress:
  • Windows: Property tab for actual CD-ROM drives, e.g. if you insert a Wii DVD-R. Icon handling probably won't be added initially, since I don't want to conflict with the default CD-ROM icon handler.
  • Nintendo 3DS parser. Currently only supports standalone .smdh and .3dsx files, and I think unencrypted .cia files that have a META section. Will be adding support for encrypted .cci/.3ds for GameTDB image downloading and partition table viewing; for decrypted .cci/.3ds and .cia, it will parse the icon as well.

EDIT: I'm still looking for feature suggestions and/or code contributions. If you have any ideas, feel free to reply.

#41 User is offline GerbilSoft 

Posted 18 April 2017 - 11:03 AM

  • RickRotate'd.
  • Posts: 2668
  • Joined: 11-January 03
  • Gender:Male
  • Location:USA
  • Project:Gens/GS
  • Wiki edits:5,000 + one spin
I'm almost ready for the 1.0 release. The last part is writing the configuration UI, which I'll have to do three times (one for Windows, one for KDE, one for GTK+).

I'm still looking for code contributors and/or suggestions for new functionality. In particular, anyone well-versed in Windows programming who can, among other things, help me reduce the line count in the Windows UI, since right now it's more than double the GTK+ UI, and almost 4x the KDE UI.

  • 3 Pages +
  • 1
  • 2
  • 3
    Locked
    Locked Forum

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users