LocalH, on 15 July 2015 - 09:29 PM, said:
After you do bugtesting and get your initial release out, wanna work in some PYL MD?

I've completely forgotten about that. Maybe I could do some stuff on it. (Getting initial tiles for the squares and shuffling working would be a nice start.)
Anyways, a status update:
- The Qt menu system has been completely rewritten to use Qt Designer. This makes it easier to maintain. This won't have any effect on the Tech Preview, which is SDL only, but it was something that was bugging me.
- Screenshots are now saved with a fairly extensive set of metadata. (More on that in a bit.)
- Initial Pico support has been merged back into gens-sdl-basic-frontend. Pen support is still missing; it will be added in before release.
- D-pad constraints have been reimplemented. When enabled, this prevents U+D or L+R from being pressed at the same time. Some games get confused by this. In the Gens/GS II implementation, if e.g. U is held down and then D is pressed, U will remain held. D will only be "pressed" once U is released. Gens' implementation always had U and L beat out D and R. Note that this does not affect the Pico controller, since Pico has four discrete buttons instead of a D-pad.
- Fixed a timing issue on Windows that caused the framerate to be reported as 50-56 fps while the actual game ran too fast. This was caused by a rounding error with QueryPerformanceCounter; the frequency was divided by 1,000,000 before dividing the counter in an attempt to prevent overflow. Since it's using integer arithmetic, this caused significant rounding errors on most machines. (My XP VM has a 3.58 MHz frequency; a Windows 7 PC I was using for testing has a 3.25 MHz frequency.) This issue didn't occur on Wine because Wine has a hard-coded frequency of 10,000,000.
- Fixed various errors found by cppcheck.
For PNG metadata, I've added the following fields (with an example from a screenshot I just took locally):
- sBIT: Significant bits per sample: R=8, G=8, B=8
- pHYs: Pixel size: 4x4 per unit
- tIME: Last modification time: 25 Jul 2015, 00:34:08 UTC
- tEXt: Text data: "Description"
- tEXt: Text data: "Creation Time" = "2015:07:24 20:34:08"
The "pHYs" field indicates the aspect ratio. For H40 (320px) mode, this is 4x4. For H32 (256px) mode, this is 5x4, since the pixels should be rendered wider. Note that most image viewers simply ignore this field, so don't expect H32 images to be stretched to the correct aspect ratio when viewing them.
The "Creation Time" chunk is used for Windows 7, which shows it in Windows Explorer. Note that it's in local time, whereas the tIME chunk is UTC.
The "Description" field has much more data. (I might change it to "Comments", since Windows XP doesn't show "Description" but appears to show "Comments".)
Emulator: Gens/GS II
Version: 0.0.0 (git: gens-sdl-basic-frontend/fb58bc07)
OS: Linux 4.1.2-gs_laptop
System: MD
ROM: Sonic 2 (Rev.01)
ROM CRC32: 7B905383
Currently, there's no way to configure what fields are set, but the Qt UI will add some options. Among other things, there's code to save the system username (and/or display name), but this is disabled by default. I will probably also add an option for a "custom" username instead of using the system username.
A good chunk of the metadata is there for debugging purposes. For example, if someone posts a screenshot of a game not working properly, but has no idea how to determine what revision of a ROM they have, the metadata will indicate the CRC32, which can then be looked up.