ROM Properties Page shell extension

Discussion in 'Technical Discussion' started by GerbilSoft, Jul 20, 2016.

  1. GerbilSoft

    GerbilSoft

    RickRotate'd. Administrator
    2,895
    24
    18
    USA
    rom-properties
    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.
     
  2. GerbilSoft

    GerbilSoft

    RickRotate'd. Administrator
    2,895
    24
    18
    USA
    rom-properties
    (reposting because the stupid "Delete" button has no confirmation -_-)

    Getting close to a 1.0 release. I'm probably going to postpone the configuration UI, but the actual functionality is there. You'll just need to edit the config file manually.

    For 1.1, I'd like to add a set of "generic" icons for the systems to use if images aren't available. These should be in multiple sizes with alpha-transparency, starting with 128x128 or 256x256 as the largest, plus a small version at 16x16 and/or 24x24. (The small versions may need adjustments; for 32x32 and larger, downscaling should work.) If anyone would like to contribute these icons, please let me know. (The images must have a free redistribution license, e.g. CC-BY-SA or GPLv2.)

    Icons needed: (listed by ROM Properties class)
    • Sega Mega Drive (JP and US variants), Sega CD[sup]3[/sup], Sega 32X, Sega Pico
    • GameCube, Wii[sup]3[/sup], Triforce
    • Nintendo DS, DSi[sup]1[/sup]
    • Nintendo Game Boy, Game Boy Color
    • Nintendo Game Boy Advance
    • Nintendo 64
    • Super NES (JP/PAL and US variants)
    • Sega Dreamcast save file (VMU image?)
    • PlayStation save file
    • Virtual Boy
    • Nintendo amiibo
    • Nintendo Entertainment System (JP and Intl variants)
    • Wii U[sup]3[/sup]
    • Nintendo 3DS[sup]1[/sup]
    • EXE[sup]2[/sup]
    [sup]1[/sup]For DS(i) and 3DS, I can probably reuse the image from TWLoader.
    [sup]2[/sup]For EXE, I can reuse the image from one of KDE's icon sets. There will be multiple variants for the different operating systems that use EXE and related formats, e.g. MS-DOS, Win16, OS/2, Win32, Xbox, and EFI. There will also be variants for the different subtypes, e.g. DLLs and Win16 drivers.
    [sup]3[/sup]For 120mm disc-based systems, I might end up using a transparent overlay on top of the system's optical disc icon. This won't work too well for GameCube, though.
     
  3. GerbilSoft

    GerbilSoft

    RickRotate'd. Administrator
    2,895
    24
    18
    USA
    rom-properties
    rom-properties 1.0 is out now. See the OP for changes and downloads.

    Among other things, it now supports encrypted 3DS ROMs, thanks to last week's Boot9Strap release. Keys are NOT included; you'll need to add them to keys.conf yourself.

    I'm working on a Key Manager UI for v1.1 that will allow importing most keys from boot9.firm and aeskeydb.bin. I don't think there's any way to get the key scrambler constants or Slot0x3DKeyY keys other than searching for them on the Internet, though interestingly Decrypt9WIP (and other tools) has the Slot0x3DKeyY keys hard-coded, so maybe I could include them as well...

    EDIT: Obligatory screenshot.

    [​IMG]
     
  4. GerbilSoft

    GerbilSoft

    RickRotate'd. Administrator
    2,895
    24
    18
    USA
    rom-properties
    I'm getting close to a 1.1 release. Major new features in 1.1 include:
    • The configuration UI, rp-config, is now available in the KDE plugins.
    • XFCE thumbnailing is now supported.
    • A KeyManager UI is now included in rp-config for configuring encryption keys.
    • Encrypted DSiWare CIAs are now supported. (Requires Slot0x3D keys.)
    • MegaDrive: The ROM header for ROMs locked onto Sonic & Knuckles is now displayed in a separate tab.
    I will probably not be porting rp-config to GTK+ because, among other things, the Glade UI builder tool is absolutely terrible. The KDE version works on GTK+ desktops, though.

    Does anyone have any recommendations and/or suggestions for anything else to add to 1.1 or future versions?
     
  5. biggestsonicfan

    biggestsonicfan

    Model2wannaB Tech Member
    1,155
    113
    43
    Formerly Sonic the Fighters
    I am going to combo break you Gerbil to compliment you on this wonderful and useful software you have developed. I remember using your hacking tool suite a lot in the day and it amazed me then and I have had this installed for about 2 weeks now and have to say I am easily identifying what some roms are in very, very old folders and am organizing them from there.

    I doubt feature requests exist but I manipulate the Nebula Model 2 roms frequently and would love to see support for them.
     
  6. MainMemory

    MainMemory

    Have no fear...Amy Rose is here! Tech Member
    4,445
    79
    28
    SonLVL
    He actually does take requests sometimes, you might want to post it as an issue on GitHub to make it more formalized. Details of the format would probably also be helpful.
     
  7. biggestsonicfan

    biggestsonicfan

    Model2wannaB Tech Member
    1,155
    113
    43
    Formerly Sonic the Fighters
    It'd be fun in theory, but I can't really follow up on anything like that so posting there would be kinda useless.
     
  8. GerbilSoft

    GerbilSoft

    RickRotate'd. Administrator
    2,895
    24
    18
    USA
    rom-properties
    Pre-2000s arcade titles are a bit problematic, since they usually don't have any sort of meta info that would be useful for rom-properties. The file formats are also a pain; MAME occasionally changes the filenames, and they usually have split odd/even ROM chips.

    Disc-based arcade titles might be doable, though. Triforce titles should be handled as if they're GameCube right now, and NAOMI titles might be doable later when I add support for Dreamcast disc headers.
     
  9. GerbilSoft

    GerbilSoft

    RickRotate'd. Administrator
    2,895
    24
    18
    USA
    rom-properties
    v1.1 is up; see the first post for changes.

    EDIT: Lines of code statistics provided by sloccount:
    Code (Text):
    1.  
    2. SLOC    Directory       SLOC-by-Language (Sorted)
    3. 24587   libromdata      cpp=24587
    4. 17636   librpbase       cpp=17052,ansic=584
    5. 7187    win32           cpp=7064,ansic=123
    6. 3301    libwin32common  cpp=2752,ansic=549
    7. 3189    kde             cpp=3189
    8. 2527    gtk             cpp=2415,ansic=78,xml=34
    9. 1230    rpcli           cpp=1230
    10. 660     libcachemgr     cpp=660
    11. 540     svrplus         cpp=540
    12. 395     rp-stub         ansic=395
    13. 255     top_dir         ansic=255
    14.  
    15.  
    16. Totals grouped by language (dominant language first):
    17. cpp:          59489 (96.72%)
    18. ansic:         1984 (3.23%)
    19. xml:             34 (0.06%)
    20.  
    The librpbase directory includes a modified copy of pngcheck, which is 7,279 lines of code. The XML file in gtk/xfce/ is 34 lines, and is a copy of the FreeDesktop.org Specialized Thumbnailer specification. Everything else was written by either me or other rom-properties contributors.
     
  10. GerbilSoft

    GerbilSoft

    RickRotate'd. Administrator
    2,895
    24
    18
    USA
    rom-properties
    v1.2 will be the "Dreamcast" release. Notable features planned for v1.2:
    • Sega PVR/GVR/PVRX thumbnailing.
    • Sega Dreamcast property page and thumbnailing for games that have a preview image, which is normally displayed in the CD player.
    • Sega Saturn property page, since its disc header is similar to Dreamcast.
    • General ISO-9660 property tab for Saturn, Dreamcast, and Sega CD.
    On another note: Over the past few months, I've had certain people on this site and others bash me for using C++, claiming it's "obsolete" and only "unstable Linux software" uses it. Therefore, I offer a challenge: Write a program that handles at least one property page and/or thumbnailing function in one of the following languages that you seem to think is so great:
    • Game Maker (any version)
    • Multimedia Fusion (or Clickteam Fusion)
    Limitations:
    • You may not use third-party extensions written in C++ (because that defeats the purpose).
    • You may use system libraries, e.g. SHELL32.DLL and GDI32.DLL.
    • The extension must integrate into Windows Explorer to provide system thumbnailing and/or a property page in the standard file properties dialog.
    • You must release both the binaries and the source code of your resulting program.
    The winner may receive a prize, but that is to be determined, assuming it happens at all.

    EDIT: Changed Game Maker from "Studio" to "any version" because apparently GMS restricts access to files outside of the program's directory.
     
  11. Covarr

    Covarr

    Sentient Cash Register Member
    4,233
    2
    18
    Trapped in my own thoughts.
    Two stageplays, a screenplay, and an album
    This might be the single most ridiculous thing I've read so far this year.

    Really glad 1.1 is out. I dunno why I haven't installed this extension yet, but it seems like now is as good a time as ever.
     
  12. GerbilSoft

    GerbilSoft

    RickRotate'd. Administrator
    2,895
    24
    18
    USA
    rom-properties
    Feel free to report any bugs and/or feature suggestions on the GitHub issue tracker.
     
  13. GerbilSoft

    GerbilSoft

    RickRotate'd. Administrator
    2,895
    24
    18
    USA
    rom-properties
    And now, time for a file format that isn't exactly a ROM image, but is very common with hacking Sega titles on Dreamcast and newer systems:

    [​IMG]
    Currently only supports GVR textures with RGB5A3 or DXT1 encoding. (The above textures are from SA2 PC.) I plan on adding the rest of the GVR and all of the PVR encodings as well.
     
  14. GerbilSoft

    GerbilSoft

    RickRotate'd. Administrator
    2,895
    24
    18
    USA
    rom-properties
    Some more stuff in progress:
    • Dreamcast PVR is now supported. All encodings except 4-bit, 8-bit, and small VQ can be decoded. I'm not sure if the 4-bit and 8-bit ones can be supported because those usually require an external palette. Also, the 8-bit textures I have don't seem to be right. (32x32 = 1024 bytes, but the file is 560 bytes.)
    • Preliminary support for DirectDraw Surfaces (*.dds) with DXT1, DXT2, DXT3, DXT4, and DXT5 encodings. There's also a compile-time option to disable S3TC and use S2TC instead for patent reasons. (The relevant patent expires in October.) DXT2 and DXT4 haven't been fully tested yet.
    • Need to add support for uncompressed RGB and ARGB DirectDraw surfaces, then PVRX (which is basically DDS with a PVR header; used by Sega's Xbox games).
     
  15. GerbilSoft

    GerbilSoft

    RickRotate'd. Administrator
    2,895
    24
    18
    USA
    rom-properties
    And now, building on the PVR decoder:

    [​IMG]

    Thumbnailing for Dreamcast track03.bin files! This loads the 0GDTEX.PVR file from the disc image and decodes it.

    Current limitations:
    • Only supports standalone track03.bin files. (or track03.iso)
    • Some games (ChuChu Rocket!) have two data tracks: track03.bin, a bunch of audio tracks, then track19.bin. 0GDTEX.PVR is listed in track03.bin's directory, but it's actually located in track19.bin. This isn't supported at the moment. I may add .GDI/.CUE support later, though IThumbnailProvider on Windows doesn't provide absolute paths, which makes this harder.
    EDIT: Another new thing for the next version:

    [​IMG]

    Nintendo Badge Arcade parsing. Currently supports PRBS and CABS files, as well as Mega Badges. (Tested with a 1x2 badge; other sizes should work as well, but aren't tested yet.)

    I'll probably release v1.2 once I add a few more disc image formats to the Dreamcast parser.
     
  16. GerbilSoft

    GerbilSoft

    RickRotate'd. Administrator
    2,895
    24
    18
    USA
    rom-properties
    Due to some issues, I had to reset my GitHub repository. All of the code is still there, though I need to reupload the releases.

    If you were previously watching the repo or had it starred, you'll need to rewatch/restar it.
     
  17. GerbilSoft

    GerbilSoft

    RickRotate'd. Administrator
    2,895
    24
    18
    USA
    rom-properties
    1.2's almost ready for release. Just need to clean up a few things and then remember how to publish to an Ubuntu PPA.

    For 1.3, I'm either going to focus on internationalization or PS Vita.

    For internationalization, this will be done with GNU Gettext. Gettext only works properly with UTF-8, so I'll have to drop the native UTF-16 code and convert text on-the-fly. This might lead to a slight performance drop on Windows, but nothing too significant. (Most Linux software has to handle UTF-8 anyway.)

    For PS Vita, there's two main formats: VPK (which is basically a ZIP file), and more recently, 1:1 image dumps. The 1:1 dump has a custom MBR and exFAT file system, which makes things easier to deal with than e.g. Nintendo 3DS ROMs, which have multiple custom file systems.
     
  18. RibShark

    RibShark

    Member
    86
    0
    6
    I love this extension, but any chance of updating the ubuntu PPA to support Artful?
     
  19. GerbilSoft

    GerbilSoft

    RickRotate'd. Administrator
    2,895
    24
    18
    USA
    rom-properties
    I'll do that once I get around to finishing the 1.2 release.

    The Zesty package should work on Artful, unless for some reason they removed one of the dependencies.
     
  20. nineko

    nineko

    I am the Holy Cat Tech Member
    Even if I don't have a use for this, it goes without saying that I'll be more than glad to help with the Italian translation when the time comes. I'm not familiar with the mentioned tools at hand, but as long as I can get a list of strings in some way it should be fine.