Jump to content

Recommended Posts

Posted (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 by jenergy
Typos
  • Like 1

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites
Posted (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 by jenergy
Typos

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites
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.

  • Like 1

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites
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

 

 

  • Like 1

Share this post


Link to post
Share on other sites
Posted (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 by Zendocon
Other ECS games write to tape as well without filenames. The Jetsons just does it automatically without asking.

Share this post


Link to post
Share on other sites
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?

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites
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.

  • Like 2

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...