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 v1.0 now available!

#16 User is offline nineko 

Posted 11 August 2016 - 08:20 AM

  • I am the Holy Cat
  • Posts: 5524
  • Joined: 17-August 06
  • Gender:Male
  • Location:italy
  • Project:I... don't even know anymore :U
  • Wiki edits:5,251
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.

#17 User is offline Techokami 

Posted 11 August 2016 - 10:45 AM

  • For use only on NTSC Genesis systems
  • Posts: 1227
  • Joined: 19-November 05
  • Gender:Male
  • Location:HoleNet!
  • Project:Sonic Edge
  • Wiki edits:63
Why aren't save banners being used from Gamecube/Wii games?

#18 User is offline GerbilSoft 

Posted 11 August 2016 - 11:27 AM

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

View PostTechokami, 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

#19 User is offline GerbilSoft 

Posted 26 August 2016 - 08:32 AM

  • RickRotate'd.
  • Posts: 2705
  • Joined: 11-January 03
  • Gender:Male
  • Location:USA
  • Project:Gens/GS
  • Wiki edits:5,000 + one spin
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.

#20 User is offline GerbilSoft 

Posted 31 August 2016 - 11:37 PM

  • RickRotate'd.
  • Posts: 2705
  • Joined: 11-January 03
  • Gender:Male
  • Location:USA
  • Project:Gens/GS
  • Wiki edits:5,000 + one spin
And now, some more screenshots!

Posted Image

Posted Image

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 User is offline GerbilSoft 

Posted 07 September 2016 - 02:33 PM

  • RickRotate'd.
  • Posts: 2705
  • Joined: 11-January 03
  • Gender:Male
  • Location:USA
  • Project:Gens/GS
  • Wiki edits:5,000 + one spin
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)
  • 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

#22 User is offline GerbilSoft 

Posted 14 September 2016 - 12:03 PM

  • RickRotate'd.
  • Posts: 2705
  • Joined: 11-January 03
  • Gender:Male
  • Location:USA
  • Project:Gens/GS
  • Wiki edits:5,000 + one spin
Today's status update:
  • 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 User is offline GerbilSoft 

Posted 15 September 2016 - 11:50 PM

  • RickRotate'd.
  • Posts: 2705
  • Joined: 11-January 03
  • Gender:Male
  • Location:USA
  • Project:Gens/GS
  • Wiki edits:5,000 + one spin
All that work on decryption, and here's what I have to show for it. :v:

Posted Image

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

#24 User is offline Overlord 

Posted 16 September 2016 - 01:35 PM

  • Substitute Meerkovo IT Chief
  • Posts: 16133
  • Joined: 12-January 03
  • Gender:Male
  • Location:Berkshire, England
  • Project:VGDB
  • Wiki edits:3,204
Looks like it's coming along nicely.

#25 User is offline GerbilSoft 

Posted 19 September 2016 - 01:23 PM

  • RickRotate'd.
  • Posts: 2705
  • Joined: 11-January 03
  • Gender:Male
  • Location:USA
  • Project:Gens/GS
  • Wiki edits:5,000 + one spin
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)
  • 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.

#26 User is offline GerbilSoft 

Posted 21 September 2016 - 12:15 PM

  • RickRotate'd.
  • Posts: 2705
  • Joined: 11-January 03
  • Gender:Male
  • Location:USA
  • Project:Gens/GS
  • Wiki edits:5,000 + one spin
Today's update:
  • Added support for the little-used GameCube/Wii CISO sparse image format. It's significantly simpler than WBFS, but no one uses it. :v: (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 :v:), so that shouldn't be a problem.

#27 User is offline Overlord 

Posted 21 September 2016 - 03:55 PM

  • Substitute Meerkovo IT Chief
  • Posts: 16133
  • Joined: 12-January 03
  • Gender:Male
  • Location:Berkshire, England
  • Project:VGDB
  • Wiki edits:3,204
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:

Posted Image

#28 User is offline GerbilSoft 

Posted 28 September 2016 - 12:11 PM

  • RickRotate'd.
  • Posts: 2705
  • Joined: 11-January 03
  • Gender:Male
  • Location:USA
  • Project:Gens/GS
  • Wiki edits:5,000 + one spin
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 User is offline GerbilSoft 

Posted 05 October 2016 - 10:41 AM

  • RickRotate'd.
  • Posts: 2705
  • Joined: 11-January 03
  • Gender:Male
  • Location:USA
  • Project:Gens/GS
  • Wiki edits:5,000 + one spin
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.

#30 User is offline GerbilSoft 

Posted 12 October 2016 - 01:26 AM

  • RickRotate'd.
  • Posts: 2705
  • Joined: 11-January 03
  • Gender:Male
  • Location:USA
  • Project:Gens/GS
  • Wiki edits:5,000 + one spin
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.

Posted Image

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

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

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