Jump to content
IGNORED

Intellivision Emulator?


opeygon

Recommended Posts

I use a Macbook and unfortunately there is no Intellivision Emu at all. :(

 

jzIntv does work on a Mac, but only if you care to run it from the command line. Actually, that's true on all of the platforms jzIntv runs on, mainly because I'm not GUI oriented. Arnauld Chevallier once put together a GUI front end for it, but I don't know the status on that.

 

I do tweak jzIntv from time to time. I've been meaning to push out a final 1.0. Maybe now that Space Patrol is shipped I'll have time to do that. Space Patrol swamped me the last year and a half in terms of wrangling releases.

Link to comment
Share on other sites

I use a Macbook and unfortunately there is no Intellivision Emu at all. :(

 

jzIntv does work on a Mac, but only if you care to run it from the command line. Actually, that's true on all of the platforms jzIntv runs on, mainly because I'm not GUI oriented. Arnauld Chevallier once put together a GUI front end for it, but I don't know the status on that.

 

I do tweak jzIntv from time to time. I've been meaning to push out a final 1.0. Maybe now that Space Patrol is shipped I'll have time to do that. Space Patrol swamped me the last year and a half in terms of wrangling releases.

 

Unfortunately I am new to Mac, so I don't know very much about the command line. Is there a manual somewhere how to get started?

Link to comment
Share on other sites

i've already used the nostalgia emu but i don't care for it that much. does anybody know of another intv emulator i can use? where to get it?

 

thanks in advance :cool:

 

What dont you like about it ? and there is a version 5.0 on the way but its been a long time.

Link to comment
Share on other sites

I use a Macbook and unfortunately there is no Intellivision Emu at all. :(

 

jzIntv does work on a Mac, but only if you care to run it from the command line. Actually, that's true on all of the platforms jzIntv runs on, mainly because I'm not GUI oriented. Arnauld Chevallier once put together a GUI front end for it, but I don't know the status on that.

 

I do tweak jzIntv from time to time. I've been meaning to push out a final 1.0. Maybe now that Space Patrol is shipped I'll have time to do that. Space Patrol swamped me the last year and a half in terms of wrangling releases.

 

Unfortunately I am new to Mac, so I don't know very much about the command line. Is there a manual somewhere how to get started?

 

 

I don't know of many Mac specific resources. The command line is very little different than BSD UNIX.

 

John Tanner had started to GUI-ify jzIntv, but that stalled and is largely dead. Perhaps sometime I should get a faster Mac so I can sit down and make a proper Xcode application around jzIntv. *sigh*

Link to comment
Share on other sites

  • 1 year later...

Since this seems to be the closest thing we have to a thread for Intellivision emulation on OS X, let me offer up a few tips for other Mac users who are struggling a bit with jzintv, since the documentation on this excellent emulator is still a bit thin. Apologies if any of this is too crude or simplistic -- I don't really know what I'm doing, but merely intend to share what got me up and running.

 

- The basic command-line format (i.e., via the Terminal) that seems to consistently work for me is:

 

jzintv -v1 example.int (or example.bin, or example.rom)

 

Note that as always, you can drag files directly into the Terminal if the path to jzintv or your ROM files is too complicated to type out.

 

- Once you have the game up and running, don't touch the command (Apple) key! I'm not sure what it's meant to do, but it seems to toggle between different keyboard layouts, and has frequently ended up confusing the hell out of me. On my setup, the left-hand Shift, Ctrl, and Option buttons are the default action keys, and the arrow keys do what you'd expect. Unfortunately the documentation on keyboard layouts is still opaque to me. On a brighter note, Intellivoice games seem to work beautifully!

 

- Other useful key commands: F1 to quit; F3 to toggle a sort of full-screen mode.

 

- If you have ROMs in .int or .bin format (which, by the way, are apparently exactly the same -- just a difference of suffixes), note that a bunch of games require .cfg configuration files in order to work. These are textfiles with a .cfg suffix that tell the emulator, among other things, which memory map to use for a particular game. There's an excellent post on the Intellivision developers' Yahoogroup that details the settings for many different games. Many games run fine without the .cfg file,, but certain ones definitely need it, i.e. Tower of Doom, which fails with a "CPU off in the weeds" error message if you try to run the bare .int or .bin file. Same deal with Demon Attack, IIRC.

 

- If your ROMs are in .rom format, they've already got the configuration files built in. Otherwise, if they're in .bin or .int format you'll need to create a .cfg file. This should have the exact same name as your .bin or .int, but ending in .cfg.

 

- However, I haven't tried using the .cfg files as standalone files. Instead I've used a tool that comes with jzintv, bin2rom, to meld the .cfg and .bin files into a .rom file. (If your file ends in .int, you'll need to rename it to .bin, I think.) Here's what my .cfg file looked like for Tower of Doom:

 

[mapping]
$0000-$1FFF=$5000
$2000-$3FFF=$9000
$4000-$4FFF=$D000
$5000-$5FFF=$F000

 

This combines the memory map given in the Yahoogroup post listed above (contained within <config> tags), and a one-line header to tell bin2rom what to do with this file. The syntax for bin2rom is quite simple:

 

bin2rom example.bin

 

Assuming that example.cfg is in the same directory as example.bin, it should then output an example.rom that will run swimmingly in jzintv. At first I wasn't able to get it to work and bin2rom complained of a "bus error", but it turned out that I'd left out the first line (with [mapping]). After that, it went brilliantly, and made me feel better about forgetting to bid on that Tower of Doom auction!

Link to comment
Share on other sites

Since this seems to be the closest thing we have to a thread for Intellivision emulation on OS X, let me offer up a few tips for other Mac users who are struggling a bit with jzintv, since the documentation on this excellent emulator is still a bit thin. Apologies if any of this is too crude or simplistic -- I don't really know what I'm doing, but merely intend to share what got me up and running.

 

- The basic command-line format (i.e., via the Terminal) that seems to consistently work for me is:

 

jzintv -v1 example.int (or example.bin, or example.rom)

 

...snip...

 

Thank you for the excellent summary!

 

BTW, additional flags you may want to use:

 

-z1 will bump the resolution up to 640x480. This will make the "full screen" mode more useful for most people.

-s1 will enable ECS support for games that use the ECS. Some home-brew games (such as Space Patrol) will use it for extra sound channels.

-x1 will tell it to start in full-screen mode

--help will list all the other flags jzIntv supports.

 

An occasionally fun flag is --macho=N where N is a number greater than 1. (Decimals supported.) What this does is speed up emulation by a factor of N. Try Astrosmash on --macho=5 for a laugh.

 

And as for that bus error you got... oops, my bad! It should have given a proper error message, not a bus error. I hope I've fixed that in my development version. (Yes, I still use it, find bugs and fix them as I go.)

 

I don't remember what I bound the Apple key to. It looks like I have it set to push into keymap 3 while pushed, and back to keymap 0 when released. In keymap 3, most keys are unbound, but a few have bindings. Could you try these?

 

Apple-R Reset emulator

Apple-W Toggle windowed / full-screen

Apple-S Take a screen shot

Apple-M Record a movie (use imvtogif to convert to animated GIF)

Apple-C Break out to debugger (only if debugger enabled with -d1 on command line)

Apple-P Pause/unpause the emulator

Apple-Q Quit

 

Thanks!

 

--Joe

Edited by intvnut
Link to comment
Share on other sites

Thank you for the excellent summary!

Hey, sure thing, and thank you for the excellent emulator!

 

BTW, additional flags you may want to use:

Aha, those are all very helpful -- I'm pretty sure I'd found --help, but not the others.

 

Tangentially, many command-line programs offer a help file if you just call the app name on its own. That was the first thing I tried with jzintv -- just calling the program itself -- but I got an error message. Would it break anything to have the bare call be equivalent to --help?

 

And as for that bus error you got... oops, my bad! It should have given a proper error message, not a bus error. I hope I've fixed that in my development version. (Yes, I still use it, find bugs and fix them as I go.)

Ah, good deal! I'm also curious about the "CPU off in the weeds" error message. Is that basically synonymous with "jzintv crashed for unknown reasons"?

 

I don't remember what I bound the Apple key to. It looks like I have it set to push into keymap 3 while pushed, and back to keymap 0 when released. In keymap 3, most keys are unbound, but a few have bindings. Could you try these?

All of them worked just fine, though the debugger was a little tricky to figure out. Is the correct flag for that -d, rather than -d1? I wasn't able to get -d1 to work. I love the way it says "OUCH!" in response to multiple Control-C's!

 

I don't know why I was having so many problems with the Command key -- at the moment, it doesn't seem to be causing the kind of havoc I was experiencing on earlier attempts. Perhaps I was mistaking my own fumblings for some sort of keyboard map swap? Of course, I'm using a laptop keyboard with no numeric keypad, so that complicates matters a bit...

 

...hmmm, I just fired up a game of Utopia (a game I know well on real hardware), and some strange things are happening. Right now the documentation (jzintv.txt) says that LShift, LAlt, LControl are all "top action buttons" for the right controller (and vice versa -- RShift, etc. -- for the left controller), and that F6 should swap that. I assume that's a mistake, and some of those should be "bottom action buttons". Even so, no matter what I do, it seems that I'm only getting the action buttons (top and bottom) for the right controller. Is this an issue with jzintv's mappings to the reduced PowerBook G4 keyboard, or am I missing something?

 

(What I'm seeing right now: LShift or RShift = top action buttons, LOption aka LAlt = bottom left action button, LCtrl = bottom right action button. All are controller 2, at least in Utopia, whether or not I've hit F5/F6.)

Edited by thegoldenband
Link to comment
Share on other sites

Tangentially, many command-line programs offer a help file if you just call the app name on its own. That was the first thing I tried with jzintv -- just calling the program itself -- but I got an error message. Would it break anything to have the bare call be equivalent to --help?

Well, jzIntv's output for --help is rather verbose. What I currently have it do is output the following if given no flags:

 

jzIntv v1.0
Copyright 2007, Joseph Zbiciak
Portions copyright 2007:  Tim Lindner, John Tanner, Rick Reynolds
					  Pedro Giffuni, Joe Fisher, Frank Palazzolo

This program is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the Free
Software Foundation; either version 2 of the License, or (at your option)
any later version.

This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
more details.

You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
675 Mass Ave, Cambridge, MA 02139, USA.

Run "jzintv --help" for usage information.

Legal note:
Intellivision(TM) is a trademark of Intellivision Productions.  Joe
Zbiciak and jzIntv are not affiliated with Intellivision Productions.

So, while it doesn't give the --help info directly, it does tell you how to get it. Were you getting a different message?

 

Ah, good deal! I'm also curious about the "CPU off in the weeds" error message. Is that basically synonymous with "jzintv crashed for unknown reasons"?

It means that the Intellivision's CPU is executing nonsense code. A real Intellivision would just flash colors after awhile and maybe make the occasional weird noises in this situation. In jzIntv, I detect it and exit out. For games that otherwise should work (ie. all of the classic games and debugged homebrew games), this usually means that the config file is missing or incorrect or the binary is otherwise corrupted. The .ROM format files have internal checksums, so such errors are rare with that format.

 

Sometimes it means you have incompatible peripherals enabled. For example, Pac-Man and a couple other games are incompatible with the ECS.

 

I don't remember what I bound the Apple key to. It looks like I have it set to push into keymap 3 while pushed, and back to keymap 0 when released. In keymap 3, most keys are unbound, but a few have bindings. Could you try these?

All of them worked just fine, though the debugger was a little tricky to figure out. Is the correct flag for that -d, rather than -d1? I wasn't able to get -d1 to work.

You would be correct. At one time, -d did allow an argument, and the nonsense -d0 did what you might expect: it disabled the debugger (which is its default state anyway). I guess I cleaned that up at some point.

 

I love the way it says "OUCH!" in response to multiple Control-C's!

:-)

 

That reminds me, I've beefed up the debugger in the development version. I'm going to have to publish something on this at some point. My 80+hr weeks at work are dying down, thankfully. As a teaser, this is what the online help from the development version of jzIntv:

 

> ?
jzIntv Debugger Commands

Running the game:
  r<#>		'R'un <#> cycles.  <#> defaults to "infinity"
  s<#>		'S'tep <#> cycles showing disassembly as it runs.
		   <#> defaults to 1 cycle. -1 means "forever."
  t<#>		'T'race-over a JSR.  Similar to "step" except it attempts
		   to step over functions called by JSR.
  [enter]	 [enter] with no command is the same as "s1" or "t1",
		   depending on whether "s" or "t" was used most recently
  f<#>		'F'ast forward to <#>.  When running in fast-forward mode,
		   the debugger skips all breakpoints and will only stop at the
		   target address or when the user pushes the BREAK key.  <#>
		   defaults to the current program counter
  z		   Toggle showing timestamps during 'step'
  x		   Toggle showing CPU reads and writes during 'step'
  b<#>		Set a 'B'reakpoint at <#>.  <#> defaults to the current PC.
  n<#>		u'N'set a breakpoint at <#>.  <#> defaults to the current PC

>> Note:  Pressing the BREAK key while running or stepping will drop jzIntv
>>		back to the debugger prompt.  BREAK is usually bound to F4.

Viewing / changing state:
  u<#1> <#2>  'U'nassemble <#2> instructions starting at <#1>.  <#2>
		   defaults to 10.  <#1> defaults to the current PC after 'r'un
		   or 's'tep, or to the next address after 'u'nassemble.
  m<#1> <#2>  Show <#2> 'm'emory locations starting at <#1>.  <#2> defaults
		   to 40 (hex).  <#1> defaults to the first undisplayed location
		   after the last 'm' command.
  g<#1> <#2>  Write the value <#2> to re'G'ister <#1>.
  e<#1> <#2>  'E'nter the value <#2> to memory location <#1>.
  p<#1> <#2>  'P'oke the value <#2> to memory location <#1>.  'P'oke can
		   always write to GRAM and STIC registers whereas 'E'nter
		   has the same restrictions as the CPU.
  w<#1> <#2>  Toggle write 'w'atching on range from <#1> through <#2>,
		   inclusive.  If <#2> is omitted, it toggles the watch flag for
		   a single location
  @<#1> <#2>  Toggle read watching on range from <#1> through <#2>,
		   inclusive.  If <#2> is omitted, it toggles the watch flag for
		   a single location

Statistics / History tracking:
  d		   Dump CPU and memory state to a series of files.  Requires
		   history or attribute logging to be enabled.
  h		   Toggle history logging.  Use "d" to dump to "dump.hst"
		   and "dump.cpu"
  a		   Toggle memory attribute logging.  Use "d" to dump to
		   "dump.atr"

Miscellaneous commands:
  l<path>	 Load symbol table from <path>.  Format must be same as that
		   output by as1600's -s flag
  /<string>   Look for symbols containing <string>.  If <string> is also a
		   valid hex number, look for symbols at that address.  To only
		   look for symbols at an address use /$<addr>
  q		   Quit jzIntv
  ?		   Print this usage information

>> Most commands that take an address can also take a symbol defined by a
>> symbol table file.  These are output by as1600's -s flag.  You can load a
>> symbol table into jzIntv with the --sym-file=<path> command line flag or
>> with the 'L'oad command shown above

 

I don't know why I was having so many problems with the Command key -- at the moment, it doesn't seem to be causing the kind of havoc I was experiencing on earlier attempts. Perhaps I was mistaking my own fumblings for some sort of keyboard map swap? Of course, I'm using a laptop keyboard with no numeric keypad, so that complicates matters a bit...

I know I went back and added a bunch of Mac-specific bindings at one point, including bindings on the Cmd key. If you had tried an earlier version before I had added these, you may have run into that.

 

...hmmm, I just fired up a game of Utopia (a game I know well on real hardware), and some strange things are happening. Right now the documentation (jzintv.txt) says that LShift, LAlt, LControl are all "top action buttons" for the right controller (and vice versa -- RShift, etc. -- for the left controller), and that F6 should swap that. I assume that's a mistake, and some of those should be "bottom action buttons". Even so, no matter what I do, it seems that I'm only getting the action buttons (top and bottom) for the right controller. Is this an issue with jzintv's mappings to the reduced PowerBook G4 keyboard, or am I missing something?

 

(What I'm seeing right now: LShift or RShift = top action buttons, LOption aka LAlt = bottom left action button, LCtrl = bottom right action button. All are controller 2, at least in Utopia, whether or not I've hit F5/F6.)

You know what, I wrote a program just for this purpose. If you look in jzintv-1.0-beta3/rom directory, there should be an "event_diag.rom" program. When you press keys on your keyboard, jzIntv will print out the name of the event it received. The program is actually an Intellivision program that uses a special hook in jzIntv to get raw events. :-) This way you know you're running in the exact environment a game would see. Here's what it looks like in action:

 

event_diag_example.gif

 

You can then see precisely what event names are getting sent to jzIntv on your laptop. I wrote this specifically for working with oddball keyboards that take unexpected short cuts, as well as unusual input devices such as Saitek's gaming keyboards, and new platforms such as the GP2X and Pandora. The D and U before each event name mean "down" and "up," to distinguish key-down vs. key-up events.

 

Once you know the names of the various input events, you can write a "keyboard hack file". I call it a hack file, because I literally hacked the facility in there. Someday I want something more elegant. Anyway, the documentation in jzintv-1.0-beta3/doc/jzintv/kbdhackfile.txt should explain how to configure your keyboard however you like. The --kbdhackfile command line flag lets you pick which file to load, so you can customize your keyboard however you like for each game.

 

Enjoy!

Edited by intvnut
Link to comment
Share on other sites

So, while it doesn't give the --help info directly, it does tell you how to get it. Were you getting a different message?

Yes indeed, all I get is:

 

$ /Applications/jzintv-1.0-beta/bin/jzintv

Could not find any of these candidate files:
 game.rom

Search path:
 .
 /Applications/jzintv-1.0-beta/bin/../rom

ERROR:  Failed to initialize game

 

That reminds me, I've beefed up the debugger in the development version. I'm going to have to publish something on this at some point. My 80+hr weeks at work are dying down, thankfully. As a teaser, this is what the online help from the development version of jzIntv:

Very interesting -- I'd imagine those things could be exceedingly helpful! I'm a neophyte programmer but an experienced musician, and have written some music for the 2600's TIA. I may try my hand at some INTV sound programming, which will no doubt lead me to spend more time in debug world.

 

Out of curiosity -- and forgive me if I overlooked something that should be clear -- is there a command in the debugger that translates to "Run this game normally until I call the debugger again via Command-C (or the equivalent)"? I tried "run until JSR/run for x cycles", but I'm guessing they're not intended for quite that purpose.

 

80+ hour work weeks?! Yikes! It's very kind of you to answer my questions while under that kind of workload.

 

I know I went back and added a bunch of Mac-specific bindings at one point, including bindings on the Cmd key. If you had tried an earlier version before I had added these, you may have run into that.

I believe the only version I've tried is 1.0 beta, which looks to date from 2006-07-05.

 

You know what, I wrote a program just for this purpose. If you look in jzintv-1.0-beta3/rom directory, there should be an "event_diag.rom" program.

Hey, that's very cool! It confirms that my LShift, LCtrl, and LAlt buttons are doing what they should be, but interestingly, my right-hand shift button is being recognized as LShift. I did some investigating, and it appears that both shift keys on the PowerBook G4 are equivalent to LShift. (There is no right-hand Option or Control key.)

 

Then I tried running Utopia with a full-sized keyboard plugged in, and found that LShift, LCtrl and LAlt are always mapped to controller 2, and RShift etc. are mapped to controller 1. This persists even if I change to Map 1 by hitting F6. The docs say "Map 1 just moves right controller mappings to left", so it's not clear to me whether switching between Map 0 and Map 1 is supposed to make the controllers switch places, or just double things up on the controller 1 mapping so that RShift, etc. function for both controllers -- which would be a problem for many laptop users, I suspect -- but either way it doesn't seem to be working...?

 

I know I can remap this, but unless I'm misunderstanding, it looks like the key binding switcher via F5/F6 is misbehaving somehow, and isn't changing the action buttons. It is, however, changing the directional pad input, so that keyboard input via [WERSDZXC] and [uIOJKNM,] can be switched back and forth.

 

Also, am I correct that jzintv.txt should say (changes in bold) --

 

Left Shift - Right controller top action buttons

Left Alt - Right controller bottom left action button

Left Control - Right controller bottom right action button

 

-- and the equivalent thing for the left controller?

 

Finally, the event_diag.rom file is great, but given the nature of the problem I'm having, I'd also love to have the equivalent for real hardware -- i.e. "Button 2 on right keypad down", etc. Is there a hardware test ROM floating around that would do the trick? I have files called "IMI Test Cart (1978) (Mattel) [!].int" and "Intellivision Test Cartridge and Baseball (1978) (Mattel).int", but the former crashed jzintv and the latter just looks like Baseball. EDIT: See addendum below.

 

Thanks so much for your replies and your patience!

Edited by thegoldenband
Link to comment
Share on other sites

Addendum:

 

Sorry, IMI Test Cart works, it just needed a .cfg file! F5 and F6 still don't seem to be switching the action buttons, though they switch everything else including the keypad. Oddly, whereas in Utopia the left-hand buttons map to the right-hand controller, in the IMI Test Cart I'm getting the opposite result.

 

In case the IMI Test Cart in .rom format is useful to anyone reading this thread, let me add it as an attachment, since the form in which I think it's most frequently found (.int/.bin format) won't work without a .cfg file. I hope no one has any objections.

 

IMI_Test_Cart__1978___Mattel_____.rom.zip

Edited by thegoldenband
Link to comment
Share on other sites

  • 1 month later...

intvnut, I don't know if you're still watching this thread -- or if you're still working 80+ hour weeks! But I'd love your feedback on my previous (actually next-to-last) post when you get a chance.

 

Well... not 80 hour weeks any longer, but still a rather draining schedule.

 

And yes, that's an error in jzintv.txt. I'll fix it now. It now reads:

 

    Left Shift      Right controller top action buttons
   Left Alt        Right controller lower right action button
   Left Control    Right controller lower left action button

   Right Shift     Left controller top action buttons
   Right Alt       Left controller lower left action button
   Right Control   Left controller lower right action button

 

Also, don't be fooled by the IMI or MTE-201 test cart. It displays the left controller on the right, and the right controller on the left. My own hand-controller demo (attached) doesn't suffer this fault.

 

On my machine, F6 does seem to push everything to the left controller--a single player mode, as the documentation suggests. That is, when I hit F6, after that point, both left and right modifier keys control the left controller. When I push F5 it goes back to the default map.

Have you tried running the "event_diag.rom" to see what keyboard events are getting sent for your modifier keys? I've attached a copy. One should also have come with jzIntv.

 

Edit: I should've read your lined-through text more completely. :-) The output from event_diag.rom will be useful for figuring out what rows of jzIntv's event mapping table it's hitting, and perhaps allow you to hack around it with a "kbdhackfile". The Hand Demo should help you figure out which hand controller events the game sees.

handdemo.zip

event_diag.zip

Edited by intvnut
Link to comment
Share on other sites

ok, I'm going to more thoroughly answer your post now. :-) I should kick myself for just quickly scanning. Oy.

 

So, while it doesn't give the --help info directly, it does tell you how to get it. Were you getting a different message?

Yes indeed, all I get is:

 

$ /Applications/jzintv-1.0-beta/bin/jzintv

Could not find any of these candidate files:
 game.rom

Search path:
 .
 /Applications/jzintv-1.0-beta/bin/../rom

ERROR:  Failed to initialize game

 

Well, that should be fixed now. Can I talk you into trying the latest and greatest build? I'd be embarrassed (but not entirely surprised) if the issue you're seeing is fixed. I'll go grab my wife's MacBook and make a build.

 

That reminds me, I've beefed up the debugger in the development version. I'm going to have to publish something on this at some point. My 80+hr weeks at work are dying down, thankfully. As a teaser, this is what the online help from the development version of jzIntv:

Very interesting -- I'd imagine those things could be exceedingly helpful! I'm a neophyte programmer but an experienced musician, and have written some music for the 2600's TIA. I may try my hand at some INTV sound programming, which will no doubt lead me to spend more time in debug world.

 

Out of curiosity -- and forgive me if I overlooked something that should be clear -- is there a command in the debugger that translates to "Run this game normally until I call the debugger again via Command-C (or the equivalent)"? I tried "run until JSR/run for x cycles", but I'm guessing they're not intended for quite that purpose.

 

You should be able to do "r" with no argument to "run forever." I do it all the time. It will stop only at the next breakpoint, or when you hit F4 (the break key). Why F4? Because that's what the TI-99/4A used. (The TI-99/4A was my first computer of my own, and so FCTN-4 holds a special place in my nostalgia banks.)

 

You know what, I wrote a program just for this purpose. If you look in jzintv-1.0-beta3/rom directory, there should be an "event_diag.rom" program.

Hey, that's very cool! It confirms that my LShift, LCtrl, and LAlt buttons are doing what they should be, but interestingly, my right-hand shift button is being recognized as LShift. I did some investigating, and it appears that both shift keys on the PowerBook G4 are equivalent to LShift. (There is no right-hand Option or Control key.)

And that was an important part of your comment that I missed when I posted my hasty reply a moment ago. My apologies. It's not too surprising that the laptop doesn't distinguish the two sides. If we can't get to the bottom of why F6 doesn't work (ie. is MacOS grabbing it from me?) then we may have to solve this with a kbdhackfile in the short run. I may have to add an additional Mac-specific binding too.

 

Then I tried running Utopia with a full-sized keyboard plugged in, and found that LShift, LCtrl and LAlt are always mapped to controller 2, and RShift etc. are mapped to controller 1. This persists even if I change to Map 1 by hitting F6. The docs say "Map 1 just moves right controller mappings to left", so it's not clear to me whether switching between Map 0 and Map 1 is supposed to make the controllers switch places, or just double things up on the controller 1 mapping so that RShift, etc. function for both controllers -- which would be a problem for many laptop users, I suspect -- but either way it doesn't seem to be working...?

That sounds really weird. The current code in jzIntv is very clear:

/* ------------------------------------------------------------------------ */
/*  Action buttons.                                                         */
/* ------------------------------------------------------------------------ */
{ "RSHIFT", {   "PD0L_A_T",     "PD0L_A_T",     "KEYB_SHIFT",   "NA"        }},
{ "RALT",   {   "PD0L_A_L",     "PD0L_A_L",     "NA",           "NA"        }},
{ "RCTRL",  {   "PD0L_A_R",     "PD0L_A_R",     "KEYB_CTRL",    "NA"        }},

{ "LSHIFT", {   "PD0R_A_T",     "PD0L_A_T",     "KEYB_SHIFT",   "NA"        }},
{ "LALT",   {   "PD0R_A_L",     "PD0L_A_L",     "NA",           "NA"        }},
{ "LCTRL",  {   "PD0R_A_R",     "PD0L_A_R",     "KEYB_CTRL",    "NA"        }},

 

The PD0R_xxx are right controller and PD0L_xxx are left controller. The first column is the Map 0 binding (right modifier keys go to left controller, left modifier keys go to right controller), and the second column is the Map 1 binding (both left and right modifier keys go to left controller). Oh, and I had goofed something in my previous post. The corrected text in jzintv.txt says:

   Left Shift      Right controller top action buttons
   Left Alt        Right controller lower left action button
   Left Control    Right controller lower right action button

   Right Shift     Left controller top action buttons
   Right Alt       Left controller lower left action button
   Right Control   Left controller lower right action button

I had somehow swizzled the left/right association for the right controller. I forgot that Alt/Ctrl are swapped between the left and right sides of my keyboard.

 

Thanks so much for your replies and your patience!

 

Certainly! And my apologies for not getting back to you sooner on this. I was traveling on a (much needed) vacation the week you posted that, and I never remembered to come back here and reply.

Link to comment
Share on other sites

That sounds really weird. The current code in jzIntv is very clear:

/* ------------------------------------------------------------------------ */
/*  Action buttons.                                                         */
/* ------------------------------------------------------------------------ */
{ "RSHIFT", {   "PD0L_A_T",     "PD0L_A_T",     "KEYB_SHIFT",   "NA"        }},
{ "RALT",   {   "PD0L_A_L",     "PD0L_A_L",     "NA",           "NA"        }},
{ "RCTRL",  {   "PD0L_A_R",     "PD0L_A_R",     "KEYB_CTRL",    "NA"        }},

{ "LSHIFT", {   "PD0R_A_T",     "PD0L_A_T",     "KEYB_SHIFT",   "NA"        }},
{ "LALT",   {   "PD0R_A_L",     "PD0L_A_L",     "NA",           "NA"        }},
{ "LCTRL",  {   "PD0R_A_R",     "PD0L_A_R",     "KEYB_CTRL",    "NA"        }},

I have some MASSIVE egg to wipe off my face. I just looked at the source archive I have on my webserver for the 1.0 beta 3. Apparently I had fixed this bug after Beta 3 went out, because when I look in the mapping file, what do I see?

 

/* ------------------------------------------------------------------------ */
/*  Action buttons.                                                         */
/* ------------------------------------------------------------------------ */
{ "RSHIFT", {   "PD0L_A_T",     "PD0L_A_T",     "KEYB_SHIFT",   "NA"        }},
{ "RALT",   {   "PD0L_A_L",     "PD0L_A_L",     "NA",           "NA"        }},
{ "RCTRL",  {   "PD0L_A_R",     "PD0L_A_R",     "KEYB_CTRL",    "NA"        }},
                                                               
{ "LSHIFT", {   "PD0R_A_T",     "PD0R_A_T",     "KEYB_SHIFT",   "NA"        }},
{ "LALT",   {   "PD0R_A_L",     "PD0R_A_L",     "NA",           "NA"        }},
{ "LCTRL",  {   "PD0R_A_R",     "PD0R_A_R",     "KEYB_CTRL",    "NA"        }},

*facepalms*

 

I'll go make a new build with these fixes (and all the other new goodies). Wanna try it?

Edited by intvnut
Link to comment
Share on other sites

I'll go make a new build with these fixes (and all the other new goodies). Wanna try it?

 

Anticipating a "yes", I've put it here:

 

jzIntv for MacOS X, built Sep 13, 2009 from the latest and greatest source.

 

I actually built this on my old OS X 10.4 machine (an old B&W G3 box), rather than my wife's shiny MacBook Pro. For one thing, she doesn't have Xcode on there, and for another, I'm not sure if 10.5.8 will still build binaries that run on G4s, and I wasn't gonna find out the hard way. Apple's been pushing toward Intel only for awhile, and with Snow Leopard, not so subtly pushing toward 64-bit only.

Link to comment
Share on other sites

Just a quick post before bed, but as for your final question, of course -- how could I say no?!

 

Thanks so much for your replies, and for all your efforts! Will this new build be 1.0b4?

 

Oops, I didn't see you'd replied when I posted. I haven't given it a particular version number. It reports itself as 1.0. I don't anticipate many changes between this and 1.0. Then again, I didn't anticipate many changes between Beta 3 and 1.0.

 

And in case you missed the link, here it is.

 

Edit: And right after I post that I notice a minor bug in jzIntv's usage info. It says the -d and --debugger flags take an argument. I've fixed that, but it's not fixed in the binary I linked above. I just mention it so that you know you don't need to report it.

Edited by intvnut
Link to comment
Share on other sites

  • 3 weeks later...

For the record, the bugfixes mentioned above are working great!

 

If there are any Intellivision fans who have yet to do so, I highly recommend you check out this excellent emulator. Once you get the hang of the command line, it's really quite straightforward to get up and running. And let me thank intvnut once again for continuing to support my legacy OS (OS X 10.4.11) and platform (PPC).

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