jenergy Posted June 29, 2020 Share Posted June 29, 2020 (edited) Hi all, here in attachment a working demo of a jzintv GUI that I made using Dear ImGui. You can launch it by jzintvImGui.exe Its default style is a little "developer oriented", but I don't exclude that it's possible to turn it to a more "final user" style oriented. There's a configuration file called jzintvGui.ini, where you can configure some parameters (for example: roms folder) and some roms settings (crc32, game name, screenshot file name, description) I filled it with a couple of configurations, you can have fun to fill it with all missing data ? For the moment, this file is used in read-only mode, so you have to manual edit the file (and restart all) in order to change settings. There's a default not-yet-configurable folder, "Assets", which contains all the image files. There's a subfolder "Boxes", because I'm thinking to manage multiple kind of images (boxes, screenshots etc..), but it's just an idea. Bios files must be (for the moment..) in the same folder of roms. If they're present, they are recognized from the gui. Actually, gui is a separate process than jzintv, that means that you need to have also jzintv.exe in the same folder of the gui (it is already in the package, the SDL2 with fix version posted by joe in the "jzintv Christman update" thread) but actually you can provide the one you want. I'm working to merge sources, in order to have a single all-in-one executable file, so it can be easily ported to other platform. This would have the disadvantage that it needs to be recompiled every time a new version of jzintv is out. I leaved the Dear Imgui demo window to be shown on demand, so you can see a lot of the potential of the product, and maybe you can suggest some widgets/functionalities that can be useful for this frontend. For the moment, command line parameters are configured statically in the ini file (see "General" section in property file), but next step is to find a strategy to implement and configure them. I'm thinking at the classical approach, "General options", which are shared by all games, and "Custom options", where you can override global option for every single game. I'm thinking about 4 main Sections, Audio, Video, Controls and Misc., and some meta data type assignable to every option. Example for parameters resolution (-z) ( in ini file): [Parameters_Video] option_1_name=Resolution option_1_param=z option_1_type=integer option_2_name=... ... [Parameters_Audio] option_1_name=Intellivoice option_1_param=v option_1_type=boolean ... This can be easy for 'standard' parameters, not for complex ones (example: the ones you have to provide external files). What do you think about it? I've read somewhere that there's the load/save functionality for games with ecs, and not for the 'normal' ones. Is that true? In this case, that would be nice to make that part of code to 'cooperate' with gui, so you can resume a saved game from the gui. I have to understand the part of code to 'catch'. Any suggestions Joe? ? As already mentioned, suggestions are welcome ? I hope you can enjoy with it. P.S. I called it temporarily jzinvImGui, but I can obviously change the name. jzintvImGui.zip Edited June 29, 2020 by jenergy Typos 2 Quote Link to comment Share on other sites More sharing options...
mr_me Posted June 29, 2020 Share Posted June 29, 2020 I don't think jzintv has any save game support unless it was implemented in the original cartridge. For example jzintv emulates the ecs cassette interface, so basic csav/clod should work and maybe world series baseball save game and save rosters should work. It also emulates the save game feature of homebrew jlp cartridges. Quote Link to comment Share on other sites More sharing options...
Zendocon Posted June 29, 2020 Share Posted June 29, 2020 So you used Dear ImGui. I started working on a frontend myself in my own Development Environment, and I came across Dear ImGui while shopping around for something to develop in. I was also thinking of Zenity, which simply adds GUI elements to be used within BASH scripts, but Termux didn't have a package readily available. So I went with GTK+. The good news is that it should be portable when it's ready. Quote Link to comment Share on other sites More sharing options...
jenergy Posted June 29, 2020 Author Share Posted June 29, 2020 (edited) 19 minutes ago, Zendocon said: So you used Dear ImGui. I started working on a frontend myself in my own Development Environment, and I came across Dear ImGui while shopping around for something to develop in. I was also thinking of Zenity, which simply adds GUI elements to be used within BASH scripts, but Termux didn't have a package readily available. So I went with GTK+. The good news is that it should be portable when it's ready. Hi, I spent years without watching news on atariage, then I've seen in the "jzintv christmas update" thread that some people said that there were not yet an updated interface, so I decided to play with some c++ code and to write it ? Maybe I was wrong, I've seen now that you wrote something about it, but I didn't understand that you were talking about a gui. There's no reason to double efforts, while maybe it's better eventually to share them. What I (personally) need is something that can work also on the nintendo switch and android, with minimum changes between versions, and minimum cross compiling issues. Do you know if your interface is portable on thoose platforms? If yes, maybe I can stop my work, and waiting for your ports. ? If not, maybe I can go on with my work, but just with the only perspective to find the best trade-off for make it work on these platforms. Edited June 29, 2020 by jenergy Typos Quote Link to comment Share on other sites More sharing options...
Zendocon Posted June 29, 2020 Share Posted June 29, 2020 Since my whole Portable Intellivision Development Environment runs within Termux and XServer XSDL in Android, I'm pretty confident that my GUI will work natively in Android when it's ready. As for other platforms like the Nintendo Switch, I've never developed there, but I'm pretty confident that GTK+ will keep the cross-platform issues to a minimum. Stay tuned. Quote Link to comment Share on other sites More sharing options...
jenergy Posted June 29, 2020 Author Share Posted June 29, 2020 1 hour ago, Zendocon said: Since my whole Portable Intellivision Development Environment runs within Termux and XServer XSDL in Android, I'm pretty confident that my GUI will work natively in Android when it's ready. As for other platforms like the Nintendo Switch, I've never developed there, but I'm pretty confident that GTK+ will keep the cross-platform issues to a minimum. Stay tuned. Uhm..ok, I think I'm gonna turn my efforts to try to make my demo GUI (as it is now) work on that two platforms, to be ready in the case there will be difficulties porting yours . As you said, no difficults shouldn't appear, so when you'll have a definitive answer about that ports of your GUI, please let me know. I'm curious to see your work, it seems awesome. 1 Quote Link to comment Share on other sites More sharing options...
Zendocon Posted June 29, 2020 Share Posted June 29, 2020 I don't know whether you've seen the document for my actual environment. I try to document everything I'm doing, so anybody should be able to follow along. I built it two years ago because I had been bogged down for a long time, not having the free time to finish a couple games, and so I wanted to put everything onto an Android tablet and just use the cracks in my schedule to do more development. I'm very happy with the result, and I was able to follow my own documentation and set up the whole environment onto a new phone and tablet a couple months ago with hardly any issues. Once I've got this GUI built, I'll probably post it on my github account, and include the steps to install that onto this environment as well. Quote Link to comment Share on other sites More sharing options...
jenergy Posted June 29, 2020 Author Share Posted June 29, 2020 10 minutes ago, Zendocon said: I don't know whether you've seen the document for my actual environment. Guilty, not. But now yes. Just discovered your "Midnight Blue International". Huge and impressive work, congratulations! I'll keep waiting for the evolution of your work 1 Quote Link to comment Share on other sites More sharing options...
Zendocon Posted June 29, 2020 Share Posted June 29, 2020 (edited) 6 hours ago, jenergy said: I've read somewhere that there's the load/save functionality for games with ecs, and not for the 'normal' ones. Is that true? In this case, that would be nice to make that part of code to 'cooperate' with gui, so you can resume a saved game from the gui. I have to understand the part of code to 'catch'. Any suggestions Joe? ? Actually, I had trouble getting those params for jzintv to work with my launch scripts, so I just stuck with the defaults. The params are "--ecs-tape=path" and "--ecs-printer=path". The Jetsons' Ways With Words automatically writes to "ecs_tape.ecs", if you create your own word list. I know World Series Major League Baseball also supports saving to tape, along with Melody Blaster and probably Mind Strike as well. As for the BASIC stuff, including Mr. BASIC Meets Bits & Bytes, you save to a 4-character file using the CSAV instruction, ex "CSAV ABC1", and then you get a file called "ecs_tape_ABC1.ecs". Right now, I'm just planning my GUI to be a graphical extension of my launch script for commercial games with minimal options, such as between NTSC and PAL, or to add the Intellivoice and/or ECS. Later, I might use the same logic jzintv uses to fetch the title for commercial games or fetch the metadata for indie games, and know what to enable by default. If I build graphical controls for every single option jzintv uses, I'll probably bury the uncommon ones into an "Advanced" menu. Edited June 29, 2020 by Zendocon Other ECS games write to tape as well without filenames. The Jetsons just does it automatically without asking. Quote Link to comment Share on other sites More sharing options...
jenergy Posted June 29, 2020 Author Share Posted June 29, 2020 9 hours ago, mr_me said: I don't think jzintv has any save game support unless it was implemented in the original cartridge. For example jzintv emulates the ecs cassette interface, so basic csav/clod should work and maybe world series baseball save game and save rosters should work. It also emulates the save game feature of homebrew jlp cartridges. 3 hours ago, Zendocon said: Actually, I had trouble getting those params for jzintv to work with my launch scripts, so I just stuck with the defaults. The params are "--ecs-tape=path" and "--ecs-printer=path". The Jetsons' Ways With Words automatically writes to "ecs_tape.ecs", if you create your own word list. I know World Series Major League Baseball also supports saving to tape, along with Melody Blaster and probably Mind Strike as well. As for the BASIC stuff, including Mr. BASIC Meets Bits & Bytes, you save to a 4-character file using the CSAV instruction, ex "CSAV ABC1", and then you get a file called "ecs_tape_ABC1.ecs". That's clear now, my knowledge on ECS features is strictly basic. 3 hours ago, Zendocon said: Right now, I'm just planning my GUI to be a graphical extension of my launch script for commercial games with minimal options, such as between NTSC and PAL, or to add the Intellivoice and/or ECS. Later, I might use the same logic jzintv uses to fetch the title for commercial games or fetch the metadata for indie games, and know what to enable by default. If I build graphical controls for every single option jzintv uses, I'll probably bury the uncommon ones into an "Advanced" menu. So your GUI will be a separate process than jzintv, and you will replicate this logic? Quote Link to comment Share on other sites More sharing options...
Zendocon Posted June 29, 2020 Share Posted June 29, 2020 7 minutes ago, jenergy said: So your GUI will be a separate process than jzintv, and you will replicate this logic? That's the plan. I just want a launcher that displays a list of ROM files and draws the associated box images if they are available, and passes a string back to the shell and executes that. Right now, my launch script requires the ROM file as an argument, and then displays a menu within the terminal, allowing for any combination of: Intellivoice or not, ECS or not, and PAL or not. It works, but having a GUI launcher would make my environment that much more appealing. Quote Link to comment Share on other sites More sharing options...
intvnut Posted June 30, 2020 Share Posted June 30, 2020 21 hours ago, mr_me said: I don't think jzintv has any save game support unless it was implemented in the original cartridge. For example jzintv emulates the ecs cassette interface, so basic csav/clod should work and maybe world series baseball save game and save rosters should work. It also emulates the save game feature of homebrew jlp cartridges. There was, for a few versions, the ability to save/reload the emulator state. It was broken, so I've disabled it again. The feature was an outside contribution. At some point, I need to rewrite it and get it working again. 2 Quote Link to comment Share on other sites More sharing options...
jenergy Posted August 27, 2020 Author Share Posted August 27, 2020 (edited) Just for fun, and to have something working on the Switch too, I finished to develop a stable version, which I'd like to share with community. It now works on: - Windows - Nintendo Switch - Linux I'm starting work to port it on android devices too. In the package, I will include sources and binaries, but before I post it.. @intvnut It's an all-in-one package, which includes jzIntv too. In other words, you don't need to have the external jzIntv executable, because latest sources are compiled with it. I've choosen this approach in order to make easy the port. Is this a problem? I mean, does this break any copyright rules of jzIntv? Edited August 27, 2020 by jenergy Bad english :-) 1 1 Quote Link to comment Share on other sites More sharing options...
dalves Posted December 29, 2020 Share Posted December 29, 2020 Hi, I was just wondering if there are any specific OS requirements for this GUI? I tested it on my Windows 10 machine and it seems to work fine. I put it on my laptop which is still Windows XP, and it won't launch. I get the generic old Windows Crash Error. Just wondering if there may be some other software I may need to get it to launch on XP? Quote Link to comment Share on other sites More sharing options...
dalves Posted December 30, 2020 Share Posted December 30, 2020 It works on my desktop running Windows XP. So I assume I need to add either an updated version of Visual C++ or .NET Framework to my laptop. 1 Quote Link to comment Share on other sites More sharing options...
jenergy Posted December 30, 2020 Author Share Posted December 30, 2020 Good to know! I changed and improved a lot of things, now it works on Windows (10 and winXp ? ), Linux, Nintendo Switch and I'm tuning something on Android..I hope to have the stable version before the end of January 1 Quote Link to comment Share on other sites More sharing options...
jenergy Posted January 28, 2021 Author Share Posted January 28, 2021 (edited) It became very nice for me. I'm adding virtual joystick on android, then after some general tests I'll share it (for interested people ? ) Android screenshots: Landscape Portrait: Edited January 28, 2021 by jenergy 2 Quote Link to comment Share on other sites More sharing options...
jenergy Posted March 19, 2021 Author Share Posted March 19, 2021 (edited) - Added on-screen keys: - Added on-screen global and custom configuration management for keys and screen, you can now choose to move, hide, change transparency as you wish, and save your configuration: This is useful in Android I planned about 20 hours of develop left, then I'll release it here for curiouses ? Edited March 19, 2021 by jenergy Typos 1 Quote Link to comment Share on other sites More sharing options...
mr_me Posted March 20, 2021 Share Posted March 20, 2021 Looks good. I'd like a simple toggle that puts the disc on the right, buttons on the left. Quote Link to comment Share on other sites More sharing options...
jenergy Posted March 21, 2021 Author Share Posted March 21, 2021 In the shown context, configuration is thought on single intellivision button, not for the whole block. I quickly can add another configuration button to x-flip single button, so you can easily flip any of them, and when you're done you can save configuration as default for all the games. That will take 20 seconds once-in-a-life, because after saving you'll always have your new configuration. Or you need a continuous flip management of the controls? I can also think to add a 'global' option (in the main interface window), that is when it's enabled, all the controls in the game will be x-flipped automatically (with forced normalization when needed, in order to be always visible on the screen). Otherwise, of course a 'x flip all buttons' button can be added there, but I need to think where to put it, in order to not introduce mental mess ? Quote Link to comment Share on other sites More sharing options...
mr_me Posted March 21, 2021 Share Posted March 21, 2021 (edited) If the keypad is made of twelve individual buttons I wouldn't want to mirror them. Just create a second set of default button/disc locations. Edited March 21, 2021 by mr_me Quote Link to comment Share on other sites More sharing options...
jenergy Posted March 21, 2021 Author Share Posted March 21, 2021 ? When you start app for the first time, you'll have a popup allowing you to choose the desired layout. And you'll be able to change it later too. Quote Link to comment Share on other sites More sharing options...
jenergy Posted March 24, 2021 Author Share Posted March 24, 2021 Ok, too many developments to implement came in my mind, so it's better to release now a stable version, because I'm gonna refactor a lot of stuff and who knows when another stable release will come ? Here the 2.0 version, only for desktop : Windows and Linux For Linux, you have to install libsdl2-image-dev, which should automatically include libsdl2-dev ('sudo apt-get --assume-yes install libsdl2-image-dev') There's a 'resource' folder in the package, keep it in the same folder of executables (jzIntvImGui for Linux, jzIntvImGui.exe for Windows) By default, application looks for roms in 'Roms' folder of 'Resources'. If you want change that path, edit 'roms_folder' property in ini file (you will see it after first launch). This is needed until I will implement an "Option window", to avoid manual edit of ini file. In the list of games: - Green games are the games configured in ini files that have been found in roms folder (by crc32) - Red games are the games configured in ini files that have NOT been found in roms folder (by crc32) - Yellow games are the games NOT configured in ini files, but found in roms folder. There's a button "Add to config" to basically add it in the ini file. This will be improved with the "Option window", where you will be able to configure all the stuff you need. Put bioses in the same folder of roms. By default I configured in ini file two jzIntv commands for all the games: custom_command_1 = -z3 custom_command_2 = --enable-mouse (---> used for simulating jzIntv controls in desktop, when "show_controls" option is enabled) And a keyboard hack file: keyboard_hack_file = hackfile.cfg And a palette file: palette_file = intycolors.cfg They're included in resource folder. You can change these, or you can override them in the single game section (see Lock'n' chase 8k (0x1603E3F8) section for an example) If you wan't to disable a custom_command, a hackfile or a palette for a single game, set it with "NONE" in the game section. Example: custom_command_1 = NONE All this stuff will become easier when the "Options window" will be implemented, in order to avoid manual edit in ini file. Next develops: - "Info Window" will become "Options window", where you'll be able to easily change settings, with an embedded check for compatible options. Actually you have to manually change ini files, be careful :-) If you want to see on-screen controls in action, enable "show_controls" in the ini file (you will see it after first launch). For the on-screen configuration, enable property "show_configuration_controls". Don't enable mobile mode on destkop...I warned you ? - Add double layout of controls, as @mr_me suggested - Manage little fixes and glitches on android. Scrollbar has some problems, audio is choppy, I have to find a way to manage audio samples correctly. - Add external jzIntv management, so you will be able to launch this interface with a newer version of jzIntv, without wait a recompilation (only for desktop). By using the external jzIntv you will loose some features (like on-screen controls) that I added by changing original jzIntv code. - Create a good readme file, with also development support informations, since I will release sources too. - Bugfix ? Feel free to increment database of games and screenshots/boxes ? Hope you will enjoy it. jzIntvImgui2.0.zip Quote Link to comment Share on other sites More sharing options...
jenergy Posted March 24, 2021 Author Share Posted March 24, 2021 On_screen_controls on windows need libpng dlls too, extract attached files in the same folder of app if you want them libPng.zip Quote Link to comment Share on other sites More sharing options...
jenergy Posted May 29, 2021 Author Share Posted May 29, 2021 For interested people.. several improvements this time! I rewritten/refactorized a lot of code, now there's no more need to manual edit config file Added configuration window to customize interface and to config standard and custom commands You can also override options for single game, to have a complete jzIntv experience And a LOT of bug fixed. And I added a surprising loading animation.. ? Linux users must also include gtk dependency (apt-get install libgtk-3-dev) in order to have the file/folder chooser dialog working Time to fix android last stuff... jzIntvImgui2.1.zip 2 1 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.