First Spear Posted December 17, 2020 Share Posted December 17, 2020 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. Quote Link to comment Share on other sites More sharing options...
+DZ-Jay Posted December 17, 2020 Share Posted December 17, 2020 I don't see the "-s1" to enable ECS in jzIntv ... -dZ. Quote Link to comment Share on other sites More sharing options...
intvnut Posted December 17, 2020 Share Posted December 17, 2020 (edited) 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 December 17, 2020 by intvnut enh req for IntyBASIC, clarifications 5 Quote Link to comment Share on other sites More sharing options...
+DZ-Jay Posted December 17, 2020 Share Posted December 17, 2020 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! ? Quote Link to comment Share on other sites More sharing options...
intvnut Posted December 17, 2020 Share Posted December 17, 2020 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. Quote Link to comment Share on other sites More sharing options...
First Spear Posted December 17, 2020 Author Share Posted December 17, 2020 2 hours ago, intvnut said: ASM CFGVAR "ecs_compat" = 2 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. 1 Quote Link to comment Share on other sites More sharing options...
First Spear Posted December 17, 2020 Author Share Posted December 17, 2020 3 hours ago, intvnut said: ... 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. ... I forgot about the LUIGI doc. Thanks for the reminder! Quote Link to comment Share on other sites More sharing options...
Zendocon Posted December 18, 2020 Share Posted December 18, 2020 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. 2 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.