Jump to content
IGNORED

"Dragonfly" my version of the Atari 7800 SD cartridge


rj1307

Recommended Posts

39 minutes ago, Eagle said:

Yes. But not plugged in A7800

Thanks, but five minutes too late :) Have powered Dragonfly with a 9V/2A power adaptor outside of the A7800 and everything went well:

Quote

Info (209060): Started Programmer operation at Thu Aug 25 11:10:38 2022
Info (209018): Device 1 silicon ID is ALTERA99 (0)
Info (209020): Blank-checking device 1
Info (209024): Programming device 1
Info (209021): Performing verification on device(s)
Info (209011): Successfully performed operation(s)
Info (209061): Ended Programmer operation at Thu Aug 25 11:10:43 2022

Going to update the AVR now.

Anyway, thanks for reading and any help!

 

EDIT: All is good, v1.08 installed and working fine.

Edited by larryleffaovell
  • Like 1
Link to comment
Share on other sites

Okay, I was able to get my DF programing updated and the firmware updated to 1.08 without too much issue. Biggest hurdle aside from getting a USB Blaster was that it took about 30 for the software to download. And just over 30min for it to install. While waiting on that, I soldered the pin headers to my DF cart's JTAG location to get it ready.

 

Under Windows 10 (Didn't test my Win 11 PC), it worked fine but I also had to manually search for updated drivers for the USB Blaster. I had to point it to the drivers folder in the Quartus software before Windows could see the USB programmer. Once that was done, the PDF instructions that RJ has provided in his downloads is essentially spot on.

 

One other caution on this, the software required a license to use it. You get a 30day trial to use it so don't dilly dally on updating your DF carts once you install the programming software.

 

@rj1307 I have found a small bug in the new 1.08 FW. The DF cart NO longer turns off the 7800 as it used to when you navigate and choose a different rom image. It will just try and load it up causing havoc in the process. So currently, before loading up a different ROM, you have to manually power off the 7800. This wasn't required previously as the DF cart would handle the power shut down automatically and I only had to power on the 7800 when the DF cart was ready and asking me to turn on the 7800.

 

  • Like 3
Link to comment
Share on other sites

On 8/21/2022 at 10:53 AM, rj1307 said:

- adding POKEY support at $800 and DualPokey at $810 (write only, RANDOM will not work). Dragonfly will automatically recognize whether DualPokey is to address at $440 or $810

 

The purpose of POKEY@$0800 (mirrored up to $0FFF) is to minimize decoder logic. To add a second POKEY to this scheme, the sensible address is $0C00 (making one POKEY mirrored from $0800 to $0BFF and the other mirrored from $0C00 to $0FFF).

OTOH if anybody just wants two POKEYs without regard to decoder complexity, just use the existing $0440 and $0450 scheme.

Link to comment
Share on other sites

Can someone explain to me (because I probably don't understand A7800) how can I minimize the logic to detect $800 address?
Additionally, how do you use simple logic to bypass RAM testing along with this address when booting the NTSC console? Because without disabling POKEY during this test, the console has a data bus conflict.

Link to comment
Share on other sites

Just because, why not?

 

Here's the PentaGo Demo, with POKEY at $800. I had an $800 version for testing, so I diff'd it with the most current.

 

The sound works on Dragonfly, but it does not work on A7800. I assume A7800 isn't updated for that.

 

I was able to play a full game. I had a couple crashes in attract mode. I don't have this issue with the regular version, so I am not sure if it was a fluke (cart needed re-seated??). It happened twice, but I haven noticed it since.

 

PengoDemo(POKEY800).a78

Link to comment
Share on other sites

11 hours ago, darryl1970 said:

The sound works on Dragonfly, but it does not work on A7800. I assume A7800 isn't updated for that.

POKEY sound works in A7800 (v5.2), when a base console is ran.

 

If the XM module (a7800 a7800 -cart1 xm), or highscore cart (a7800 a7800 -cart1 hiscore) is present, there is an issue; consequently, no background POKEY melody while in-game.

  • Like 1
Link to comment
Share on other sites

3 hours ago, rj1307 said:

Can someone explain to me (because I probably don't understand A7800) how can I minimize the logic to detect $800 address?
Additionally, how do you use simple logic to bypass RAM testing along with this address when booting the NTSC console? Because without disabling POKEY during this test, the console has a data bus conflict.

I am probably not the best person to answer these questions, but since I sense this is directed towards me, I'll answer as best as I can.

 

Regarding address detection logic, the idea is that for $080x mirrored up to $0FFx, a hardware implementation can generate the chip select signal from only 5 address bits, whereas for $045x it must read 12 address bits. For the device chosen for bankset cartridges, that apparently was an important consideration.

 

After my previous post I realized you could mirror 32 bytes for 2 POKEYs, which would work just as well as mirroring each POKEY individually, so maybe I shouldn't have said anything about 2nd-POKEY-at-$081x. It's not really any worse than 2nd-POKEY-at-$0C0x. But as long as it's only for Dragonfly and emulators, dual-POKEY developers (a small group!) should just use the existing $04xx scheme IMO.

 

As for RAM testing at boot, I have no idea. Does the NTSC BIOS access these addresses?

  • Like 1
Link to comment
Share on other sites

19 hours ago, rj1307 said:

Can someone explain to me (because I probably don't understand A7800) how can I minimize the logic to detect $800 address?
Additionally, how do you use simple logic to bypass RAM testing along with this address when booting the NTSC console? Because without disabling POKEY during this test, the console has a data bus conflict.

A7800 doesn't need to deal with this, because it doesn't accurately emulate how the cart is switched away (by hiding A12+A14+A15) so it's not worth studying in this regard.

 

Honestly, the bios threw batari and I a curve ball on the $800 access, and we haven't had a lot of time to look at it, due to other pressing hobby stuff. At this point it looks like batari will just require a bank switch or whatnot to enable pokey at $800. That way it will be invisible until the cart activates it. When that's settle upon, I'll implement the same in a7800.

 

15 hours ago, Pat Brady said:

But as long as it's only for Dragonfly and emulators, dual-POKEY developers (a small group!) should just use the existing $04xx scheme IMO.

100% this. The $4xx scheme is the domain of devices with precise decoding logic. The $8xx (and up) should be the loose-decoding area, so to speak.

 

When I get around to it, a7800 will get double-pokeys at the expected $4xx addresses, and at the same time, I'll loosen up the decoding for the $8xx pokey.

 

15 hours ago, Pat Brady said:

As for RAM testing at boot, I have no idea. Does the NTSC BIOS access these addresses?

The BIOS hits the internal $18xx RAM addresses during the console testing phase, while the BIOS is switched in. Because the BIOS switched in, the A12 line appears low to the cart-port device, so the $18xx accss looks like $8xx. If the cart device responds to $8xx, we have bus conflict.

  • Like 1
Link to comment
Share on other sites

2 hours ago, RevEng said:

A7800 doesn't need to deal with this, because it doesn't accurately emulate how the cart is switched away (by hiding A12+A14+A15) so it's not worth studying in this regard.

 

Honestly, the bios threw batari and I a curve ball on the $800 access, and we haven't had a lot of time to look at it, due to other pressing hobby stuff. At this point it looks like batari will just require a bank switch or whatnot to enable pokey at $800. That way it will be invisible until the cart activates it. When that's settle upon, I'll implement the same in a7800.

 

100% this. The $4xx scheme is the domain of devices with precise decoding logic. The $8xx (and up) should be the loose-decoding area, so to speak.

 

When I get around to it, a7800 will get double-pokeys at the expected $4xx addresses, and at the same time, I'll loosen up the decoding for the $8xx pokey.

 

Th BIOS hits the internal $18xx RAM addresses during the console testing phase, while the BIOS is switched in. Because the BIOS switched in, the A12 line appears low to the cart-port device, so the $18xx accss looks like $9xx. If the cart device responds to $8xx, we have bus conflict.

IIRC, the scheme we came up with was that the cartridge starts in the highest numbered bank and POKEY is disabled in that bank. Supposing there are 8 banks numbered 0-7, POKEY is disabled in bank 7 and enabled in all other banks. So, until the user code runs, the cart should remain in the highest bank until it is switched into a lower bank.

 

In a bankswitched cartridge, bank 7 is not really useful. Because bank 7's data is always available at $C000-$FFFF, there is no real utility having a copy of it appear at $8000-$BFFF, Therefore a programmer is not likely to need this for anything, so its main purpose is to lock out POKEY from powerup until the first bankswitch to bank 0-6. And existing programs will likely do a bankswitch anyway before using the POKEY, so the scheme is expected to be transparent to existing code.

 

I may have missed something, but this is what I remember talking about, but I am not sure it was made official.

  • Like 2
Link to comment
Share on other sites

12 hours ago, Trebor said:

POKEY sound works in A7800 (v5.2), when a base console is ran.

Pokey in Pengo is not working for me as well (v5.2)

Also BlackLamp$800 is not playing well on A7800 but is working on DF 😕

 

edit: PokeyTester800 is not working as well. 

Edited by Eagle
  • Like 1
Link to comment
Share on other sites

1 hour ago, rj1307 said:

As I understand correctly, the inclusion of POKEY will only take place after changing the bank from 7 to any other. So it won't work for 32kB and 48kB cartridges?
Was POKEY $800 invented as a specific banking cartridge and not as a universal solution? 

Its purpose was to simplify the address decoding hardware for released cartridges, and was not necessarily proposed as a universal solution.

 

For 32k and 48k, though, $0800 and $0450 are not useful for games that will be released on cartridge. A better approach is to use $4000, as the hardware for non-bankswitched games is very simple and decoding $0450 or $0800 for these games is too complex. Current cartridges that are being produced use a write-only POKEY at $4000 for 48k, and the address decoding for the 48k itself and the write-only POKEY can be done with a single TTL chip.

  • Like 4
Link to comment
Share on other sites

Thanks for the clarification  :)

 

1 hour ago, batari said:

For 32k and 48k, though, $0800 and $0450 are not useful for games that will be released on cartridge.

Yes for 32kB, but for 48kB you won't use POKEY for $4000 ;) 

Edited by rj1307
Link to comment
Share on other sites

1 hour ago, rj1307 said:

Thanks for the clarification  :)

 

Yes for 32kB, but for 48kB you won't use POKEY for $4000 ;) 

You can use $4000 for a 48k POKEY, and I have produced a board that does just that. Enable the EPROM during reads and the POKEY during writes of that area.

Link to comment
Share on other sites

1 hour ago, rj1307 said:

Understood, DF handles it too, but you can't use RANDOM. But this is a rare case.

This is true, but I would guess that a software RNG should be able to handle probably 99.9% of the use cases and it does not require a lot of cycles or code space.

Link to comment
Share on other sites

1 hour ago, Beeblebrox said:

This is rather a large post to find the purchasing details.. Tried a search within it.  So forgive me for asking probably the same question loads of others have likely already asked but.... being in the UK where can I buy and how much?  Do I just PM the OP? Thanks.  

 

That entire thread is where the orders were being done....The post linked is the last status update from @rj1307 .

 

  • Thanks 1
Link to comment
Share on other sites

11 hours ago, Eagle said:

Pokey in Pengo is not working for me as well (v5.2)

Also BlackLamp$800 is not playing well on A7800 but is working on DF 😕

 

edit: PokeyTester800 is not working as well. 

Just tested all three attached files again, under a clean install utilizing "Standard Console" with A7800 v5.2.

All three work with POKEY being heard without issue.

 

PentaGo (Demo) (POKEY 800) (20220831).a78Black Lamp Music Demo (800) (20220821).a78POKEY Tester (800) (20220821).a78

  • Thanks 2
Link to comment
Share on other sites

57 minutes ago, Beeblebrox said:

Thanks.. Unfortunately the thread is locked at present. 

That's because the Dragonfly isn't currently available for purchase. Hopefully the global supply chain issues will ultimately get sorted out and RJ can resume building them. 

  • Like 1
  • Thanks 1
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...