Yes, of course I was referring to the "external" icons only. The problem doesn't exist at all if the icons are readily available in the ROM files themselves.
ROM Properties Page shell extension v1.2 now available!
#18
Posted 11 August 2016 - 11:27 AM

Techokami, on 11 August 2016 - 10:45 AM, said:
Why aren't save banners being used from Gamecube/Wii games?
For GameCube, the 96x32 banner is present in opening.bnr, and will be available as an option later on. (Changing the type used for thumbnails will require clearing the system thumbnail cache.)
For Wii, the save banner/icon isn't easily accessible, since it's not in a fixed location on disc. You can see this in Dolphin - it only loads the banner once the save file is created.
This post has been edited by GerbilSoft: 11 August 2016 - 11:30 AM
Reason for edit: +opening.bnr
Reason for edit: +opening.bnr
#19
Posted 26 August 2016 - 08:32 AM

Yesterday I looked into writing the file properties page for the Windows port. On Windows, a property page consists of a dialog resource, which means that you either have to use a hard-coded dialog in a resource script or generate one programmatically. There's basically zero documentation on the latter, and MSDN's description of DLGTEMPLATEEX is totally broken. In addition, if there's even the slightest error with the generated dialog, the property sheet will merely hide your tab once you click it without any explanation. No errors are logged anywhere.
I ended up using a commented hexdump of a DIALOGEX resource from The Old New Thing. This will eventually become the basis of a "dialog generator" class, which can be used to generate an arbitrary dialog resource in memory.
I ended up using a commented hexdump of a DIALOGEX resource from The Old New Thing. This will eventually become the basis of a "dialog generator" class, which can be used to generate an arbitrary dialog resource in memory.
#20
Posted 31 August 2016 - 11:37 PM

And now, some more screenshots!


The ROM Properties tab, which was the first thing I implemented in the Linux/KDE version, is now available in the Windows version. I probably need to pick a better monospaced font; right now, it's using Lucida Console with the same font size as the rest of the dialog, which looks a bit out of place.


The ROM Properties tab, which was the first thing I implemented in the Linux/KDE version, is now available in the Windows version. I probably need to pick a better monospaced font; right now, it's using Lucida Console with the same font size as the rest of the dialog, which looks a bit out of place.
#21
Posted 07 September 2016 - 02:33 PM

So I'm getting close to preparing a release build. Here's a short list of what I want to finish up before releasing rom-properties-0.8 (Beta 1): (mostly copied from the GitHub issues page)
I have a few other TODOs not currently published, and I'll probably add issues for those tonight.
Systems and images currently supported:
Does anyone else have any other suggestions for "must-have" functionality in the first release?
- Use a modified version of pngcheck to verify that downloaded PNG images are valid. While there aren't any known PNG exploits at the moment, historically libpng (and other image format libraries) have had several remote execution exploits. (The TIFF format was notorious for this, as most PSP hackers know.) pngcheck verifies each chunk by itself without using libpng, so if any chunk is invalid, the image will be discarded.
- Implement a system-specific backend class for rp_image. Currently, rp_image works as a "system-independent" image class. It stores the format type and raw data of the image, plus a palette for 256-color images. It then has to be copied over to a system-specific image class (QImage, HBITMAP), which adds overhead. By using a system-specific backend, I can have the image data stored in a QImage or GDI+ bitmap directly without any extra conversion steps. (GDI+ is needed for proper alpha-transparency on Windows.)
- Fix an issue on Windows XP where thumbnail downloading causes Explorer to freeze.
- Add a system logo to the properties page. Currently, there's no actual indication as to what system the ROM is for. Adding a logo (which may be region-specific depending on implementation) will help, plus the game icon (for ROMs that support it) and internal title(s).
- Wii: Identify the system update version. This requires decrypting the update partition and looking for the system menu WAD file. (The decryption keys will not be included in the main distribution, but I'll post a configuration file with them later.)
- Use std::unique_ptr instead of std::auto_ptr.
- Identify the specific system type for MD ROMs, e.g. 32X, Pico, MCD. Also decode SMD-format ROMs for MD only.
- Use manual "activation contexts" in the Windows build when compiling with gcc/MinGW-w64.
I have a few other TODOs not currently published, and I'll probably add issues for those tonight.
Systems and images currently supported:
- Sega Mega Drive
- Nintendo Game Boy (Color)
- Nintendo Game Boy Advance
- Nintendo DS(i) (DS game icon is displayed)
- Nintendo GameCube (Disc scan is downloaded from GameTDB)
- Nintendo Wii (Disc scan is downloaded from GameTDB)
Does anyone else have any other suggestions for "must-have" functionality in the first release?
This post has been edited by GerbilSoft: 07 September 2016 - 02:45 PM
Reason for edit: +keys
Reason for edit: +keys
#22
Posted 14 September 2016 - 12:03 PM

Today's status update:
I set up a tracker bug for the first beta release (0.8) here: https://github.com/G...rties/issues/16
- Wii decryption is almost done. Just need to have it go through the FST for the Update Partition and determine which System Menu version is present.
- I have some preliminary code for localized system names. For Mega Drive ROMs, if a ROM is single-region, then it will display "Sega Genesis" for US or "Sega Mega Drive" elsewhere. If it's multi-region, then it will check the system locale to see what the closest match is. Currently, I'm assuming that any country in North America uses "Sega Genesis" branding, countries listed on Mega Drive consoles in Asia with JP branding use JP, and everywhere else uses PAL/EU branding. (With an exception for South Korea, which has Samsung branding due to various restrictions in the 80s and 90s.) This will be extended to logos later on, which will be slightly more complicated due to Brazil having its own distinct Mega Drive branding.
- Somewhat hackish support for alpha transparent thumbnails on Windows XP. IExtractImage doesn't fully support it, so I'm now using COLOR_WINDOW as the background color. IThumbnailProvider (Vista+) does fully support alpha transparency, and I plan on implementing it before the first release.
- More unit tests for image loading and AES decryption to make sure nothing breaks with future updates.
I set up a tracker bug for the first beta release (0.8) here: https://github.com/G...rties/issues/16
#23
Posted 15 September 2016 - 11:50 PM

All that work on decryption, and here's what I have to show for it. 

It now parses the update partition and determines the System Update version. It also shows the partition sizes now.


It now parses the update partition and determines the System Update version. It also shows the partition sizes now.
#25
Posted 19 September 2016 - 01:23 PM

I'm looking into decoding the "age ratings" section of Wii disc images. Wiibrew unfortunately doesn't list what each value corresponds to, though I suspect it's an age value. (Mapping the age to ESRB and CERO might be tricky.)
If anyone has Wii disc images available (e.g. from an HDD used for USB Loader GX), can you dump the following ranges from your disc images and post them here in a code block? (including the game's name, region, and rating on the box)
If you're using Linux or have a Cygwin environment installed, you can run one of these commands:
If anyone has Wii disc images available (e.g. from an HDD used for USB Loader GX), can you dump the following ranges from your disc images and post them here in a code block? (including the game's name, region, and rating on the box)
- 1:1 dump ("ISO"): 0x4E000 - 0x4E01F
- WBFS: 0x24E000 - 0x24E01F
If you're using Linux or have a Cygwin environment installed, you can run one of these commands:
- dd if=wii-disc.1-to-1.iso bs=1 skip=319488 count=32 iflag=binary oflag=binary | hexdump -C
- dd if=wii-disc.wbfs bs=1 skip=2416640 count=32 iflag=binary oflag=binary | hexdump -C
This post has been edited by GerbilSoft: 19 September 2016 - 01:24 PM
Reason for edit: 32, not 16.
Reason for edit: 32, not 16.
#26
Posted 21 September 2016 - 12:15 PM

Today's update:
With regards to PSP: I've never actually used a PSP, so I don't know if UMDs have a game icon like DS/3DS games or what. I do know that the discs use ISO-9660, and I wrote a simple ISO-9660 parser years ago (in VB6
), so that shouldn't be a problem.
- Added support for the little-used GameCube/Wii CISO sparse image format. It's significantly simpler than WBFS, but no one uses it.
(The PSP CISO format is completely different, as it uses zlib compression. I'll probably add support for that and Dolphin GCZ later.)
- Started an FST test suite. For this, I'll need to extract original FSTs from all partitions on GameCube and Wii discs. WiiXplorer can do the extraction, but one at a time and using a bit of a clunky interface. I should be able to hack on a quick and dirty UI that automatically dumps the FSTs in response to pressing a button.
With regards to PSP: I've never actually used a PSP, so I don't know if UMDs have a game icon like DS/3DS games or what. I do know that the discs use ISO-9660, and I wrote a simple ISO-9660 parser years ago (in VB6

#27
Posted 21 September 2016 - 03:55 PM

PSP games have an icon (I think these can be animated, from memory), a wallpaper (possibly optional?) and a music file, as well as some basic display text (seemingly optional). Here's the one from Wipeout Pure:
#28
Posted 28 September 2016 - 12:11 PM

Today's status update:
- I got a bit sidetracked with implementing CISO support in Nintendont. I'm also reworking some other parts of the menu to improve some things, including color-coding the disc image format in the game list.
- I re-ripped all of my GameCube discs in order to convert them to CISO format, so now I have a pretty good collection of GameCube FSTs. Need to rip the FSTs from all of my Wii discs next.
- A few of my GCN and Wii discs don't have disc scans in GameTDB. I uploaded D87E01 yesterday (GameCube Preview Disc), and will be getting to a few others today, including Sonic Heroes JPN (if I can figure out where I put the box).
#29
Posted 05 October 2016 - 10:41 AM

I finally started the FST test suite, and I found the directory parser was completely broken. I was interpreting the "next offset" field for directories as "index of the last entry in the directory". It's actually "index of the next entry *after* the directory". This ended up resulting in the parser showing directories containing lots of duplicated files.
This has been fixed, and I now have a test to ensure that no subdirectory has files that have the same name. Currently testing this on 40 GameCube FSTs.
This has been fixed, and I now have a test to ensure that no subdirectory has files that have the same name. Currently testing this on 40 GameCube FSTs.
#30
Posted 12 October 2016 - 01:26 AM

So I got a little bit distracted from finishing up the last few blockers and I was getting annoyed that my GameCube save files were all showing unknown file icons.

The ROM Properties extension now supports GameCube save files in GCI, GCS, and SAV formats. (Full memory card dumps aren't supported because they contain multiple files, though I may consider adding something like the folder previews that show multiple files on a single thumbnail later.)
EDIT: You might notice that the bottom two lines of the Eternal Darkness icon are missing. Turns out I derped a loop unroll optimization that broke CI8 GameCube icons on Windows. It's fixed in git now.

The ROM Properties extension now supports GameCube save files in GCI, GCS, and SAV formats. (Full memory card dumps aren't supported because they contain multiple files, though I may consider adding something like the folder previews that show multiple files on a single thumbnail later.)
EDIT: You might notice that the bottom two lines of the Eternal Darkness icon are missing. Turns out I derped a loop unroll optimization that broke CI8 GameCube icons on Windows. It's fixed in git now.
This post has been edited by GerbilSoft: 12 October 2016 - 02:17 AM
Reason for edit: +Eternal Darkness derp
Reason for edit: +Eternal Darkness derp