ROM Properties Page shell extension v0.9-beta2 now available!
Posted 11 August 2016 - 11:27 AM
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.
Reason for edit: +opening.bnr
Posted 26 August 2016 - 08:32 AM
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.
Posted 31 August 2016 - 11:37 PM
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.
Posted 07 September 2016 - 02:33 PM
- 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?
Reason for edit: +keys
Posted 14 September 2016 - 12:03 PM
- 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
Posted 19 September 2016 - 01:23 PM
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
Reason for edit: 32, not 16.
Posted 21 September 2016 - 12:15 PM
- 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 ), so that shouldn't be a problem.
Posted 28 September 2016 - 12:11 PM
- 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).
Posted 05 October 2016 - 10:41 AM
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.
Posted 12 October 2016 - 01:26 AM
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.
Reason for edit: +Eternal Darkness derp