Jump to content
IGNORED

IntyBASIC vs jzIntv and ECS Support?


First Spear

Recommended Posts

Hi all. 

An IntyBASIC program with music uses 2 voices, compiled this way:

 

intybasic --title mustemp   mustemp.bas mustemp.asm "." 
as1600 -o  "mustemp" -l "mustemp.lst" -j "mustemp.smap" -s "mustemp.sym" mustemp.asm"
jzintv  --gfx-palette=jzintvpalette01.txt --rand-mem  -b10 -v1 -z "800x600,8"  -e "C:\Program Files (x86)\jzIntv\bin\exec.bin" -g "C:\Program Files (x86)\jzIntv\bin\grom.bin" mustemp.bin

 

This executes as expected.

 

Adding additional ECS channels to the music, compiled with the same commands above, makes jzIntv report this:

 

Loading:
  .\mustemp.bin
  .\mustemp.cfg
Compatibility:
  ECS                    Requires
  Intellivoice           Tolerates
  Intellivision II       Tolerates
  Keyboard Component     Tolerates
  TutorVision            Tolerates
JLP Support:
  JLP Accel              Disabled
  JLP Flash Sectors      0

ECS ROM: No such file or directory
ERROR:  Could not read ECS ROM image 'ecs.bin'

 

I expected the .bin to launch and play music but only with the first AY chip not including the ECS music. I think I am forgetting something because I have been away from my code for so long, but IIRC this used to work in previous versions of IntyBASIC and/or jzIntv, where if the ECS was not present then only the first AY chip would be used, but if the ECS was present then both would be used. 

 

All ideas appreciated on what is/not happening here. I think I'm missing a compilation switch somewhere?

 

 

Thanks.

 

 

Link to comment
Share on other sites

Part of the problem is right here:

ERROR:  Could not read ECS ROM image 'ecs.bin'

Ordinarily, jzIntv requires the ECS ROM image in order to enable ECS support.  If you supply an ecs.bin file, jzIntv will fire up with the ECS enabled, just as the game requested. 

 

However, it sounds like you would like to fire up with ECS disabled, to hear how the ECS-enhanced music would sound when the ECS is absent.  What you really want is ECS disabled, and so the complaint about ecs.bin is really a symptom, not a cause.

 

So, how did the game request the ECS?  Why does jzIntv say the ECS is required?

 

jzIntv looks at the metadata in the CFG file, and/or .ROM files to decide whether to enable the ECS.  Older versions didn't do that.  Over the last few years, I've been trying to make jzIntv "smarter" in this regard.

 

One detail is that IntyBASIC outputs the CFG variable "ecs = 1", which jzIntv interprets as "ECS is required."  Unfortunately, there's only two values for that variable, 0 or 1.  There isn't a third state, "optional."  So, I defined an additional variable, ecs_compat, which has four possible values:

  • 0 means incompatible.  Pac-Man, for example, conflicts with ECS.
  • 1 means tolerates.  ECS present or absent makes no difference.
  • 2 means enhanced by.  ECS present enhances the game, ECS absent doesn't break it.
  • 3 means requires.  The game won't play without the ECS attached.

So, you could add this at the end of your IntyBASIC program, and it'll probably help:

ASM CFGVAR "ecs_compat" = 2

See also jzintv/doc/utilities/as1600.txt, which describes some of the CFG variables.  Or, if you prefer a fancier document, I also describe them in an appendix of the LUIGI doc.

 

With ecs_compat set to 2, jzIntv will fall back to "no ECS" when 'ecs.bin' is missing.  It'll print a message saying it's done so.  (Thanks to @Lathe26 for suggesting the feature.)

 

You can also explicitly override jzIntv's heuristic by adding the flag -s0 to the jzIntv command line.  If the game says "ECS required", it'll print a warning that you're overriding that setting.  If it's merely "ECS enhanced," it won't warn.  Either way, it will proceed with out ECS.

 

@nanochess:  Enhancement request for IntyBASIC:  Could it output "ecs_compat = 2" rather than "ecs = 1" when you use the ECS music features?

Edited by intvnut
enh req for IntyBASIC, clarifications
  • Like 5
Link to comment
Share on other sites

39 minutes ago, intvnut said:

jzIntv looks at the metadata in the CFG file, and/or .ROM files to decide whether to enable the ECS.  Older versions didn't do that.  Over the last few years, I've been trying to make jzIntv "smarter" in this regard.

 

I did not know that, thanks! ?

Link to comment
Share on other sites

1 hour ago, intvnut said:

One detail is that IntyBASIC outputs the CFG variable "ecs = 1", which jzIntv interprets as "ECS is required."

One additional thought:  The reason jzIntv does this is to retain backward compatibility with existing CFG files.  INTVPC (used on the Intellivision Lives! CD-ROM) used voice = 1 and ecs = 1 to turn Intellivoice and ECS on, respectively.  

Link to comment
Share on other sites

16 hours ago, First Spear said:

 

Perfect. That is exactly what is needed. Thanks for putting that here. Maybe something that could be added to the docs for the next version of IntyBASIC?

 

Thanks.

Right.  If I had known about that at the time, I would have put "ecs_compat = 2" into FUBAR, "ecs_compat = 0" into Blix & Chocolate Mine, and "ecs_compat = 1" into X-Ray & DILLIGAS.  I'll put it into my future titles.

  • Like 2
Link to comment
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.
Note: Your post will require moderator approval before it will be visible.

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...