Jump to content


  • Content Count

  • Joined

  • Last visited

  • Days Won


Posts posted by RevEng

  1. Maybe possible, but not feasible for this project. The connector/splitter would need to be custom, mapping jag rows and column lines to different pins in each db9 port. Alternatively, a microencoder could be used to read and multiplex or serial-encode the jag controller output, sending it to a single db9, but again, not feasible for this project. A custom adapter is too big a lift.

    • Thanks 1

  2. Yeah, don't think you'll do better than Eagle's and SmittyB's countdown suggestion, without unrolling. (which would be ridiculous)


    If you're not already, you can run the radar clear+build during the visible screen, after the radar itself is displayed. You could also get away with splitting the radar clear+update into strips, and update each strip on different frames. At the coarse resolution of the radar, even 1 zone per frame would likely work.

    • Like 2

  3. 5 hours ago, batari said:

    I admit, using email was a mistake, as security policies are so strict these days, I never heard back from some and I had no other way of contacting them.

    I feel your pain. As someone who runs a couple small domains for small family businesses, I've had to request whitelisting with large mail hosting services (microsoft, different telcos, etc) because they blacklisted entire ranges of IPs due to spammers having an address within. This is even with all of the good-mailhost practice (domain keys, spf, etc.) setup on my end. Worse yet, often these hosting companies will just spambox your mail for no obvious reason, and not formally reject it, so you don't even know there's a problem.

    • Like 2

  4. 2 hours ago, BrianC said:

    There's currently no 7800 specific SNAC, but that explains why AtariVox+ works only on the 2600 SNAC in the WIP core and not the Genesis/SMS SNAC. 

    Yeah. And there likely won't be a 7800 specific SNAC. The 7800 does some odd things to the controller lines in 7800 mode, when two-button mode is enabled. But single-button games and AtariVox should work just fine in 7800 mode too, with the 2600 SNAC adapter.

    • Like 1

  5. It's been a while since I looked at connecting to AtariVox though a serial adapter, but there's a couple things that I believe would need to line up here fo stelladaptor atarivox to work...

    • the serial port device presented to the Linux OS would need to be chosen in the UI (or somehow auto-detected), and it would need to be setup with a particular baud rate and flow control.
    • the 7800 core would then need to pass though the bit-banged joystick port bits to that Linux serial port.

    I have no idea if either of these are already implemented or not. Doubtlessly SNAC is easier, since the bit-banged joystick port lines are right there on the SNAC adapter, as if it were a real 7800.

    • Like 1

  6. A few thoughts... 


    I'd make sure that crashing in your dynamic code is a result of timing, rather than something else. Unless you're completely starved by DMA, you should be able to pump out a fair bit more than a dozen sprite updates (2x DL updates per sprite) within any given frame. Without double-buffering, the dynamic DL generation in 7800basic manages around 24 moving sprite updates. (on a 160A tiled background. Maybe a little more with no background. Definitely much more with double-buffering, but that's another kettle of fish)


    The thing is, 7800basic has it's DL update running outside of the NMI. (when objects need to updated, I check for a flag that indicates the end of the visible zones has been reached, and wait if it's not yet good.) That architecture is pretty forgiving for missing a frame here and there, since it will never clobber itself due to too many objects being pumped to the screen. Worst case result of taking too long for a frame is you get a mostly duplicated frame with a few sprites missing and one corrupted. Typical case result is you get the duplicated frame, and as long as it doesn't happen too frequently, nobody notices.


    Hopefully there's something useful in there for you.

    • Like 4

  7. It's nothing I've run into before... if this is the only code accessing the YM at the same time (i.e. there isn't access happening on both interrupts and the main code loop) then it would seem to be a timing quirk.


    Try throwing a single NOP before each BIT test loop. Maybe it takes a few more cycles to chew on the last input before the YM realizes it needs to raise it's busy flag. Something to try anyway.


    (Adding @tep392 in case he's seen it before)

    • Thanks 1

  8. 4 hours ago, Karl G said:

    I spoke too soon. Some of the soft switch code in there checked for trakball, mouse, or the softresetpause option, but other parts only checked for mouse support to disable it. Here's a patch (diff -buN) that adds those checks for the other parts as well, if you would like it.

    soft-switch-fix.patch 1014 B · 1 download

    Yeah, that 7800basic option was just to disable the soft-reset acting as a pause, when pause isn't disabled. It sounds complicated, but basically it means the soft-reset button can start a game (reset when pausing is disabled, as it should be during a title screen), and then act as a pause during a game when pause isn't disabled.


    I don't actually have a full disable for the soft-switches yet (aside from compiling in a mouse or trackball) but I'll add one in before the next release.

    • Like 1

  9. An excerpt from atarimuseum.com (courtesy of the wayback machine)...


    The 7800 keyboard package would also include two software titles.    Most likely those two titles would have been Atari 7800 PRO System BASIC and Atari 7800 PRO System VideoWriter.

    And another one from Curt, from the forums here...


    Steve [Golson] and I fired up a lot of equipment and even got the original prototype computer enhancement running, I got OSS/Atari 7800 Basic running, VideoWriter and some Atarilab modules running,


    • Like 4

  10. Pretty sure you're triggering the 7800basic soft-reset/pause code. 7800basic implements these via impossible joystick directions. This code is disabled compile-time if the game uses a 7800basic controller driver that can generate these directions.


    It looks like I need to update the manual with this. (I've posted about it a few times in the forums, including the 7800basic thread.)

  11. There's a bit of jitter inherent in paddle controllers, since they work in a polling loop that competes for 6502 time with Maria's DMA. I do some position smoothing, which works wonders, but if you have heavy/irregular DMA in a particular zone you may still get jitter at certain positions.


    I think in your case the heavy/irregular zone in question happened to line up with the paddle position near the extreme, and rearranging the timer setting location basically moved the jitter spot to somewhere less noticeable.

  12. 3 hours ago, PacManPlus said:

    I know, kind of a rookie mistake; you'd never know that I've been doing this for almost 20 years now. 😡

    Each game is a new problem landscape, and iteration of the approach is going to happen as you learn the terrain. This is doubly true for arcade conversions, where you're striving to match the arcade experience on dissimilar hardware, and usually starting with a naive barebones test to ensure the display will work as intended.


    If you didn't make bad turns in your designs, it would mean you're doing the same kind of game over and over again.


    • Like 6
    • Thanks 2

  13. 14 hours ago, -^CrossBow^- said:

    My only question is if the Atari can recognize more than one keypad press at a time. My guess it that it can't or it might do weird things when you do so. That being the case, it would make movement difficult since you wouldn't be able to press but one button at a time.

    You can press any two buttons held simultaneously, without a decoding problem at the console end. There's a ghosting issue that can occur with 3 buttons being held at once, depending on the buttons, but that shouldn't be a problem here.

    • Like 3

  14. For sure. The 7800basic github would be a good place to start...


    The hiscore.asm file has the upper level hi-score table load/save. The link will bring you directly to the bits you're probably most interested in. The code earlier in the file is involved in the hiscore display and controls.

    The 7800vox.asm has some convenience functions. (reading a series of bytes, writing a series of bytes to the vox, and detecting a vox)

    i2c7800.inc is the low-level avox serial eeprom driver written by Alex Herbert, and minimally tweaked by me.


    Instead of using regular atarivox eeproms per-game allocations, the driver uses a chunk of memory that Al put aside for the 7800, so we can use it like an HSC. i.e. the driver will search that chunk of memory for the game's ID+difficulty when loading/saving.

    • Like 5
  • Create New...