6Bit.net :: Forums
neobrain's screenshots - Gekko on Linux and Qt GUI! - Printable Version

+- 6Bit.net :: Forums (http://6bit.net/forums)
+-- Forum: Hosted Project: Gekko (/forumdisplay.php?fid=10)
+--- Forum: Gekko Screenshots & Videos (/forumdisplay.php?fid=14)
+--- Thread: neobrain's screenshots - Gekko on Linux and Qt GUI! (/showthread.php?tid=45)

Pages: 1 2 3


neobrain's screenshots - Gekko on Linux and Qt GUI! - neobrain - 03-15-2012 01:53 AM

Ever wondered how the next generation Gekko GUI would look like? Wait no longer Wink
Over the past week I worked on getting Gekko run on Linux and coded a new Qt based user interface and, well, it's working amazingly well already.

[Image: gekko-zww-linux-x64.png]
This one is the first ever 64 bit gekko build running on Linux. Only Interpreter mode works for now since dynarec will many some 64 bit and linux fixes. Apart from that, emulation seems to work just as well as on Windows.



[Image: gekko-qtwin.png]
After getting Gekko work on Linux I started working on a Qt based GUI. Qt is a powerful cross-platform collection of libraries used for creating user interfaces. My previous programming experience with Qt was very positive, so I figured it would do the job of getting a functional GUI working as soon as possible best. The only problem with Qt is that, alas, it's kinda tricky to set up on Windows. So the most work of this screenshot basically happened behind the scenes; the actual GUI - showing off a simple file system tree and a nonfunctional menu - barely took half an hour to create. Note that the "Image Info" always shows the same data for now (it's hardcoded and just a proof of concept).



[Image: gekko-qtwin2.png]
Still the same non functional proof of concept GUI, but the "Emulation->Start" menu action can start the default iso file now. Again, lots of behind the scenes work happened here, since before there was basically no core-startup code existent.



[Image: gekko-qtwin3.png]
More proof of concept! This one actually has some functionality. It reads the CPU instructions from memory and disassembles them, thus properly displaying the instruction mnemonics. However, it's not really useful as a debugging tool since it lacks more powerful features like stepping or function detection.



[Image: gekko-qtwin4.png]
Added a functional CPU register list. Not much to say about this one Big Grin



[Image: gekko-qtwin5.png]
This is the first Gekko-qt build running on Linux. As expected, setting the Qt build up on Linux was a matter of 10 minutes (thanks to CMake!) and thus no problem at all. I also added a simple call stack which basically works, but still lacks the necessary debugger interface implementations.



[Image: gekko-qtwin6.png]
Added a disassembler view! This usually would've taken me at least a week to implement from scratch and wouldn't have been nearly as well done as seen in the screenshot. Luckily, megazig told me about qhexedit which is an awesome library which I could reuse for the hex editor seen in the screenshot. And, well, I'm happy about it because it works incredibly well without costing me too much time Wink


RE: neobrain's screenshots - Gekko on Linux and Qt GUI! - ShizZy - 03-15-2012 02:10 AM

Awesome!!! :-D Keep up the awesome work. I'm sure non-developers will be VERY greatful for this, taking into consideration the fact that I completely gutted out all old win32 code Smile

Saving screenshots of your fantastic debugger until it's ready? ^^


RE: neobrain's screenshots - Gekko on Linux and Qt GUI! - neobrain - 03-15-2012 02:30 AM

Hehe, you're answering too fast Wink

Another screenshot:

[Image: gekko-qtwin7.png]
Current (3/14/2012) status of the Qt GUI. Starting games from the game list works now and, after hours of debugging, the disassembler finally supports CPU stepping.


RE: neobrain's screenshots - Gekko on Linux and Qt GUI! - Starscream - 03-15-2012 03:09 AM

Looking forward to this, great job.


RE: neobrain's screenshots - Gekko on Linux and Qt GUI! - ShizZy - 03-15-2012 05:00 AM

Yeah.. Last one is really fantastic. Can't wait until we have banners Smile


RE: neobrain's screenshots - Gekko on Linux and Qt GUI! - neobrain - 03-15-2012 12:20 PM

Ugh, tough day! I coded the render window logic from scratch using QtOpenGL instead of SDL which took me... long. Using QtOpenGL and doing the actual GL rendering in a separate stuff isn't particularly well-documented :/

http://i1104.photobucket.com/albums/h325/no_cluez/gekko-qtwin8.png
The first success of the day. Took me long enough to get some content show up in the render window, believe it or not Wink


http://i1104.photobucket.com/albums/h325/no_cluez/gekko-qtwin9.png
After I got it working well enough (for testing purposes, anyway), I played around a bit and implemented a render-to-main-window mode.


http://i1104.photobucket.com/albums/h325/no_cluez/gekko-qtwin10.png
.. and even more playing around. The render window can now be freely docked next to the disassembler dock widgets. Not that's really cool!


http://i1104.photobucket.com/albums/h325/no_cluez/gekko-qtwin12.png
And the last one: I enabled dock nesting, which allows to layout the dock widgets in a more flexible way.


RE: neobrain's screenshots - Gekko on Linux and Qt GUI! - ShizZy - 03-15-2012 02:10 PM

Awesome stuff. That's actually going to be really helpful when debugging, IMO. I'm imaging stepping through graphics/GX routines and seeing *exactly* how the GPU handles it, alongside a realtime graphics debugger Big Grin


RE: neobrain's screenshots - Gekko on Linux and Qt GUI! - ExodusC - 03-15-2012 10:25 PM

Things have started moving so fast on Gekko since the relaunch.

Pulling together a GUI suitable for testing in a matter of days is awesome... As well as the ton of work that has gotten put in on the back end already!


RE: neobrain's screenshots - Gekko on Linux and Qt GUI! - Matt - 03-16-2012 02:07 AM

neobrain, exactly what I wanted! Output window and render docked with disasm all next to each other is awesome.


RE: neobrain's screenshots - Gekko on Linux and Qt GUI! - neobrain - 03-20-2012 09:33 PM

More updates...
http://i1104.photobucket.com/albums/h325/no_cluez/gekko-qtwin13.png
Changed the render window to be the central widget of the main window (instead of being a dockable window).



http://i1104.photobucket.com/albums/h325/no_cluez/gekko-qtwin15.png
Added hotkey support, including a hotkey settings dialog! Read-only at the moment, but I really managed to get the underlying code as clean and flexible as possible Smile