Jump to content

Recommended Posts

I'm calling it a success. Hopefully everyone agrees.

 

Could always enhance the driver to include a "fast jump" feature.

 

JMP FastJump would be detected and the 2 byte address is pulled from ARM memory instead of the ROM. Similar to how fast fetch works.

  • Like 1

Tested on my Best AV modded 7800 using a pre-release Concerto cart loaded with Harmony 1.06 BIOS:

post-33189-0-85105500-1490930379_thumb.jpg

post-33189-0-62708600-1490930395_thumb.jpg

post-33189-0-83932300-1490930414_thumb.jpg

post-33189-0-37301200-1490930430_thumb.jpg

 

As you can see, there are lines missing on the Sports Car screengrab, but not the "High" Test. Currently I am unable to test the demos on my 4-switch VCS as my old Harmony cart is MIA and the Concerto PCB won't fit without permanent alteration of the board.

Tested on my Best AV modded 7800

Looks good! Toggle the Right Difficulty switch to change the colors in the first image, set the way you have it lets you see which player is used to draw which part of the image.

 

As you can see, there are lines missing on the Sports Car screengrab, but not the "High" Test.

Actually, my car looks just fine. Those lines aren't caused by faulty bus stuffing - they're a side affect of having to use flickerblinds to draw 96+ pixels on the Atari. You can see them in these photos from my 7800:

post-3056-0-22939100-1490968054_thumb.jpg post-3056-0-90335300-1490968070_thumb.jpg

 

 

you can see the source of the lines here, where I modified the chronocolour demo to display all pixels and to use a single color. One image is the even frame, the other odd:

post-3056-0-34098200-1490968108_thumb.png post-3056-0-29736200-1490968111_thumb.png

^^I honestly don't know. One really impressive effect however is when the full color blend image, the RGB 20Hz flicker is pretty gross to the naked eye, yet it blends smoothly with the longer exposure setting on my digital camera, which can have a longer persistence of image than the human eye under low lighting conditions.

 

Not shown, the RPG demo had dark lines between vertical tiles, so it may or may not be bit 7 again like another user posted. Cool to have full motion; the graphics looked almost Coleco quality.

  • Like 1

^^I honestly don't know.

I do know, if it was a bus stuffing issue you'd see the problem repeating every 8 pixels.

 

One really impressive effect however is when the full color blend image, the RGB 20Hz flicker is pretty gross to the naked eye, yet it blends smoothly with the longer exposure setting on my digital camera, which can have a longer persistence of image than the human eye under low lighting conditions.

Yep, that's how I took my earlier photo of it.

 

Not shown, the RPG demo had dark lines between vertical tiles, so it may or may not be bit 7 again like another user posted. Cool to have full motion; the graphics looked almost Coleco quality.

 

The RPG demo uses a different player layout than the 128 pixel demo - take a look at the road, swamp, or water - every 8 pixels is up/down a row from the 8 pixels to the left:

post-3056-0-52759600-1476934156.png post-3056-0-28741800-1476934152.png

 

Like the car demo, the pixels drawn alternate every frame. With the player layout in RPG you'll see 8 pixels, gap, 8 pixels, gap, ... repeated across the screen - thus the problem is every "9" pixels, not 8, so it's not bus stuffing. This gap is noticeable on all 2600s I've seen, I think the difference in just how noticeable is due to some combination of console type(sixer/4-switch/junior/7800), connection type (rf, S-Video, composite), and display. Here's a closeup from my 2600 with CyberTech S-Video mod on my C= 1084S - four gaps are noticeable in the horizontal section of bricks:

post-3056-0-77417600-1491051198_thumb.jpg

 

Represented as text, the player (sprite) layout is this with 0 and 1 representing the 2600's two players for the RPG demo:

0 1 0 1 0 1 
 0 1 0 1 0 1


and this for the car demo:

0 0 1 1010 0   1
 0 0 1    0 010 


The gap occurs when players are not drawn next to each other, thus the car demo is does not have gaps in the sections drawn using 1010 and 010.

  • Like 2

It works! Eventually. I tested the ROM after cleaning the Harmony and the cartridge port, and one bit wasn't being stuffed, but it corrected itself in about 30-45 seconds top to bottom. Strange.

 

attachicon.gifgoing-high.jpg

The sequence is actually a bit weirder than this. I ran the test again cold, within a couple seconds of turning on the Atari. At first both halves of the test, the 1- and 7-bit stuffing, fail on the same bit (D6). Within a minute the 1-bit stuffs to PF1 correct themselves (possibly top to bottom, but I don't know since I can only see one row correcting) and only some minutes later did the 7-bit stuffs to PF2 correct as I previously described. It's pretty sensitive to room temperature, it seems.

I do know, if it was a bus stuffing issue you'd see the problem repeating every 8 pixels.

 

Yep, that's how I took my earlier photo of it.

 

 

The RPG demo uses a different player layout than the 128 pixel demo - take a look at the road, swamp, or water - every 8 pixels is up/down a row from the 8 pixels to the left:

post-3056-0-52759600-1476934156.png post-3056-0-28741800-1476934152.png

 

Like the car demo, the pixels drawn alternate every frame. With the player layout in RPG you'll see 8 pixels, gap, 8 pixels, gap, ... repeated across the screen - thus the problem is every "9" pixels, not 8, so it's not bus stuffing. This gap is noticeable on all 2600s I've seen, I think the difference in just how noticeable is due to some combination of console type(sixer/4-switch/junior/7800), connection type (rf, S-Video, composite), and display. Here's a closeup from my 2600 with CyberTech S-Video mod on my C= 1084S - four gaps are noticeable in the horizontal section of bricks:

attachicon.gifIMG_8501.jpg

 

Represented as text, the player (sprite) layout is this with 0 and 1 representing the 2600's two players for the RPG demo:

0 1 0 1 0 1 
 0 1 0 1 0 1


and this for the car demo:

0 0 1 1010 0   1
 0 0 1    0 010 


The gap occurs when players are not drawn next to each other, thus the car demo is does not have gaps in the sections drawn using 1010 and 010.

So, the RPG demo is drawn in 8 pixel blocks every 9 pixels? Weird. So every ninth pixel being blacked out is an intended side effect. I did not realize that. :P

 

So it appears I have a "very good" 7800 when it comes to bus stuffing. That is positive news, given the ROM corruption issues I and others had with Concerto, prior to simply flashing the Harmony BIOS on it.

So, the RPG demo is drawn in 8 pixel blocks every 9 pixels? Weird. So every ninth pixel being blacked out is an intended side effect. I did not realize that. :P So it appears I have a "very good" 7800 when it comes to bus stuffing. That is positive news, given the ROM corruption issues I and others had with Concerto, prior to simply flashing the Harmony BIOS on it.

It is 8 pixel blocks with a gap of 8 pixels. The CRT is not very precise at switching the beam off and on, so you see a gap. The effect is less visible on some TVs and if the console has a svideo or rgb mod.

 

Chris

  • Like 2

As cd-w says, it's 8 pixels drawn, then 8 pixels not drawn. There's no 9th pixel, the gap's just a video artifact caused by using flicker.

 

You can even see it in Stella (BUS support added to 5.0.0-pre6) if you have the phosphor mode turned off:

post-3056-0-35639200-1491137908_thumb.jpg

 

While you can see it, it's clear in Stella that the gap is smaller than a pixel.

  • 2 months later...

BUS is a work in progress and we made a change that broke backwards compatibility in Stella. As such the demos would work on Stella 5.0.0-Pre6 and Pre7, but not on anything after that.

 

I've updated the RPG demo for the new spec, as well as the new C compiler we're using, so it can now be run in Pre8 or Pre9. I'll update the other demos to the current BUS driver over the next week.

rpg_20170616_NTSC.bin

rpg_20170616_PAL.bin

  • Like 7
  • 4 months later...

Fred has come up with a possible fix for bus stuffing on problematic 2600Jr consoles. Can someone with a problematic Jr run the attached binary from their Harmony cart and post a photo of the results?

 

Thanks,

Chris

 

bustester00_bin.zip

Edited by cd-w
  • Like 2

I ran this while my Atari was still cold. There was no change after warming up.

attachicon.gifbustester.jpg

 

That's a shame that it fails.

It will not happen, but games and demos should be made even if they only work on VCS/Vader systems.

 

Atari developed BUS for The Graduate computer attachment which they shelved.

The Graduate would fit the woody / Vader Atari 2600.

 

Atari the company changed hands, and released the 2600 Jr. 9 years after the VCS release.

Atari the company released the Atari Flashback Portable 39 years after the VCS.

This is how it looks on my PAL Jr. (on our LCD). It looks like bit 7 is stuck (as it was before on my machine), and the sprite used for the diagonal lines enters starfield mode on my TIA :P

 

post-47984-0-82326400-1508706400_thumb.jpg

Edited by DirtyHairy

I ran this while my Atari was still cold. There was no change after warming up.

 

This is how it looks on my PAL Jr. (on our LCD). It looks like bit 7 is stuck (as it was before on my machine), and the sprite used for the diagonal lines enters starfield mode on my TIA icon_razz.gif

 

Thanks for testing - it looks like we are not yet there :( Fred is now looking to obtain his own problematic Jr consoles to help him diagnose the issues.

 

Chris

This is how it looks on my PAL Jr. (on our LCD). It looks like bit 7 is stuck (as it was before on my machine), and the sprite used for the diagonal lines enters starfield mode on my TIA :P

That's interesting.

 

Maybe the research for bus stuffing could be also used for a more reliable/controlled starfield generation/emulation on all console types?

 

 

Thanks for testing - it looks like we are not yet there :( Fred is now looking to obtain his own problematic Jr consoles to help him diagnose the issues.

 

You're welcome. I am currently swamped in other things, so this won't happen soon, but I have been thinking about getting a cheap logic analyzer and looking at the bus myself.

 

Maybe the research for bus stuffing could be also used for a more reliable/controlled starfield generation/emulation on all console types?

 

I thought I understood pretty well how the startfield is triggered by now (not talking about the substructure), but obviously, something funky is going on with my TIA here. I'd like to play around a bit with the source of the test ROM to find out whether this is related to bus stuffing at all or rather a random find of a timing glitch.

Edited by DirtyHairy
  • 1 month later...

Here's another attempt which combines my prototype driver, stuffing high and low, detection of failures, and an idea Fred had to use multiple registers and illegal opcodes to correct up to 2 bits. Hopefully this will work on all the machines that previously ran into issues.

 

This must be run on a harmony cart. Emulators will not know how to load it.

 

Current build:

stuff-with-detection-and-correction4.bin

 

Previous builds:

stuff-with-detection-and-correction3.bin

stuff-with-detection-and-correction2.bin

stuff-with-detection-and-correction1.bin

 

When you first load the rom it will have some vertical lines on the sides, a test pattern in PF1 and PF2 should be black. A blue bar will sweep across part of the screen. This is the program using collision detection to determine if there are any bits which can't be stuffed low. The blue bar should turn red if a failure is detected.

 

Next pf2 should be all on. Any bits that were detected as low failures will now switch to being stuffed high. The blue bar sweeps the screen again to detect high failures this time and will turn red as soon as it finds any.

 

Once the detection is complete, the algorithm will find the optimal combination of stuffing low, high, and using different store instructions. It will then attempt to display the test pattern with this optimal combination. If all is well there should only be the vertical bars on the sides of the screen were PF0 is. The rest of it should look like the picture below.

 

The program will repeat a cycle of low detection, high detection, test pattern indefinitely. However, the correction values are retained, so there shouldn't be any more failures detected after the first iteration if it finds a correct combination to use.

 

post-40226-0-51406900-1513718580_thumb.png

 

Edit:

12/21 version 4 improves failure detection so stuffing high and low are checked with all 128 values for each data bit multiple times. Should now detect intermittent failures much better.

12/20 version 3 makes P0 positioning more robust, completely restarts detection each cycles, fixes stuff-high driver bug

Version 2 fixes bug that corrupted state in subsequent passes

 

Edited by ZackAttack
  • Like 5

Success... sort of :) On my PAL Jr. the first pass reliably ends with the correct test picture. All subsequent runs display two black bars (see my photo below) but, as the first test picture is fine, I suspect that this is not an issue with the algorithm itself, but merely a bug in the subsequent passes.

 

post-47984-0-63553800-1513727654_thumb.jpg

  • Like 1

Success... sort of :) On my PAL Jr. the first pass reliably ends with the correct test picture. All subsequent runs display two black bars (see my photo below) but, as the first test picture is fine, I suspect that this is not an issue with the algorithm itself, but merely a bug in the subsequent passes.

 

attachicon.gifIMG_20171219_233431.jpg

Would you post a video of the first few iterations? Hopefully it can help me find the bug.

 

This is exciting. We may be close to a workable solution.

  • Like 2

Would you post a video of the first few iterations? Hopefully it can help me find the bug.

 

This is exciting. We may be close to a workable solution.

 

 

I'll add it to my backlog, might take a few days though :) Agreed, very good work, I am confident that this nails the issue on my VCS.

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