Jump to content
IGNORED

6MB Cartridge - DIY options?


phoboz

Recommended Posts

Going back to this for a moment:

19 hours ago, batari said:

It's a basic flash board designed solely for AA homebrew releases.

 

Can you or @Albert tell more about the status of the design?

  • Is it "fully-closed" - something made specifically for AA, with no public technical details?
  • Is it "partially-open" - while the boards themselves are only made by AA for AA, some/all of the technical details are public?
  • Is it "fully-open" - the design is owned by AA, but someone would be allowed to make compatible boards?
  • Something else?

The answer will impact future projects for me, and possibly others. Especially regarding compatibility (or incompatibility, if you want to prevent AA code from running on a non-AA board, to thwart certain sleazy individuals making pirate copies.)

 

Thanks.

Link to comment
Share on other sites

1 hour ago, Zerosquare said:

Going back to this for a moment:

 

Can you or @Albert tell more about the status of the design?

  • Is it "fully-closed" - something made specifically for AA, with no public technical details?
  • Is it "partially-open" - while the boards themselves are only made by AA for AA, some/all of the technical details are public?
  • Is it "fully-open" - the design is owned by AA, but someone would be allowed to make compatible boards?
  • Something else?

The answer will impact future projects for me, and possibly others. Especially regarding compatibility (or incompatibility, if you want to prevent AA code from running on a non-AA board, to thwart certain sleazy individuals making pirate copies.)

 

Thanks.

I guess it will be "something else" as the boards are made by AA for AA, but it sounds like there could be a way for people to program blank boards (such as BJL and software running on the Jag), and if so then Al may also be willing to sell blank boards to some. That is entirely up to him.

 

Or you could say partially open, given that I am willing to accept help from some so I don't have an issue sharing with some.

 

And also, there isn't anything really special about this board that I can think of: it uses a standard 3.3v, 16-bit, 29-series flash chip with 5v-to-3.3v level conversion. There is really nothing stopping anyone from creating such a board even without an open design. All of the information to create a similar board is out there, publicly posted online, for anyone to create their own similar board. Anyone with enough technical skill can figure it out from available resources, just as I did.

 

Currently on AA homebrew releases, there's absolutely nothing stopping pirates from dumping the games, or from using DIP EPROM boards to pirate them. In the interest of economy, there is no additional hardware to validate binaries running on this flash board as that would make it too costly to be feasible. Building hardware protections onto a homebrew board may have been a concern years ago but I want to think we are way past that now.

 

But, that is not to say there isn't *some* protection, mostly from obscurity:

  • You can't use unmodified Jaguar binaries on it due to the 16-bit memory interface
  • BJL sounds like a pain to use, and almost nobody has parallel ports anymore?
  • Although I did figure out how to design the board from publicly posted resources, it wasn't *that* easy
  • The standalone programmer is closed and proprietary as I don't want to encourage using up any more Jag connectors than necessary

Still, it's sounding like if anyone wants to program (or re-program) blank boards then they will need to use BJL. BJL sounds like a bit of a pain to use and I am sure most don't have parallel ports anymore. And since the Jagtopus BJL programming method is yours, I wouldn't be sharing it unless it is already open.

  • Like 1
Link to comment
Share on other sites

1 hour ago, Zerosquare said:

The CS pin is active-high for Microwire, but active-low for SPI (and it needs to remain active while you're transferring the command and data bits).

And you can't control the state of the CS signal from the Jaguar directly, you can only trigger a short low pulse on it.

So you need an inverter on this signal to make SPI work.

 

Here's a basic test program:

SPI EEPROM read test.s 1.53 kB · 1 download

It reads the first 64 bytes of the EEPROM and sends them to the serial port at 9,600 bps. I used an EEPROM that was already programmed, so there's no code to write to it, but it shouldn't be difficult to add by following the steps described in the EEPROM datasheet.

 

I wouldn't recommend hot-swapping Jaguar carts :D

And it wouldn't work anyways, unless you modify your Jaguar not to power-off when there's no cartridge.

 

So, BJL, indeed. Or JagCD, if you're crazy and only need to program the cart once (as after it's programmed, the Jaguar will boot from the cart, not the CD).

 

For BJL, I have some software made for the Jagtopus, as well as an USB adapter to connect to modern PCs which don't have parallel ports. There's a high chance that the software would work with your cart, either as-is (the programming commands are the same on most Flash chips) or with minor modifications. It's not really user-friendly, more like a developer tool, but it works. Let me know if you're interested. (We can discuss the details in private if you prefer.)

Thanks, and yes I was aware of the "pulse" issue so my solution was to latch the GPIO signal for SPI CS, because the bankswitch signals needed to be latched anyway so the resources were otherwise available. Therefore SPI CS will basically have the opposite sense and the code will need to be rewritten. But that sounds like a pretty minor issue?

Link to comment
Share on other sites

2 hours ago, batari said:

In the interest of economy, there is no additional hardware to validate binaries running on this flash board as that would make it too costly to be feasible. Building hardware protections onto a homebrew board may have been a concern years ago but I want to think we are way past that now.

That was exactly the mindset I had when the Jagtopus was designed back in 2010.

Unfortunately, since then, there have been several cases of people making and selling counterfeits of Jaguar homebrew releases.

And at least one of them apparently spent money creating a (poor) custom board just for this:

I'm not saying that your decision is wrong, just that piracy is unfortunately still a problem.

 

2 hours ago, batari said:
  • BJL sounds like a pain to use, and almost nobody has parallel ports anymore?

There is an USB-based BJL adapter for modern computers:

834592925_Catnipcablev2.thumb.jpg.165f180d24c5703893cb9b025f794461.jpg

It hasn't been publicly released, since more convenient options for development (Skunkboard and JagGD) became widespread, and production mostly used a dedicated programmer.

But the design is complete and functional. It could probably be reused with AA carts if there's a demand for it.

 

2 hours ago, batari said:

Thanks, and yes I was aware of the "pulse" issue so my solution was to latch the GPIO signal for SPI CS, because the bankswitch signals needed to be latched anyway so the resources were otherwise available. Therefore SPI CS will basically have the opposite sense and the code will need to be rewritten. But that sounds like a pretty minor issue?

One advantage of using an inverter is that it's completely separate from the bankswitching, so it can be used even if the bankswitching logic isn't populated because the game is small enough not to need it. It could even be used on traditional ROM boards, by putting the SPI EEPROM and the inverter on a small PCB that would be soldered where the Microwire EEPROM normally is.

But yeah, it's a pretty minor difference. And depending on how you latch the signals, it may even be possible to write code which supports both schemes transparently.

  • Like 1
Link to comment
Share on other sites

On the sega genesis side I've tried to politely ask board makers to add anti piracy features.  But, I also prefer self programmable boards for on demand publishing.  Helps offset the risk if a title doesn't sell.  Or, enabling custom/personalized editions.

 

It seems like those two features (anti piracy + developer flashable) are not possible at this stage in retro gaming.

Link to comment
Share on other sites

48 minutes ago, Gemintronic said:

It seems like those two features (anti piracy + developer flashable) are not possible at this stage in retro gaming.

Even if you disregard the technical and financial aspects, it boils down to this: you want some piece of knowledge to be available to certain people (legitimate developers, who need to know how the technical protections work), but not to other people (pirates, who would use this knowledge to duplicate games).

 

How do you achieve this?

On which criteria do you decide "this person is/isn't a legitimate developer"?

What happens if someone you trusted turns rogue?

 

Commercial companies solve this problem by making people sign Non-Disclosure Agreements, which are legal contracts which allows them to sue people who don't respect them.

But you can't do that with homebrew developers.

 

(Note: this is a bit of a simplification. There are also technical means to try to solve the problem, but they're too heavyweight to make sense for homebrews.)

Edited by Zerosquare
  • Like 2
Link to comment
Share on other sites

1 hour ago, phoboz said:

How would a PCB that uses 2x 27C322 differ from the original one that can use 2x 27C160 EPROMs?

 

PS. 2x 27C322 is actually 8 MB, but you could only use the lower 6MB (e.g. 2x3MB)

compare the pin outs of the two. It could be that it is just the extra address line.

Yepp, on a PCB for 27C160, pin 32 it likely pulled up, so if you use a 322 directly, you only have 2MB as pin32 == A20.

Edited by 42bs
  • Thanks 1
Link to comment
Share on other sites

39 minutes ago, 42bs said:

compare the pin outs of the two. It could be that it is just the extra address line.

Yepp, on a PCB for 27C160, pin 32 it likely pulled up, so if you use a 322 directly, you only have 2MB as pin32 == A20.

So it could actually be possible to patch an original cartridge PCB by re-routing pin32:s to the correct cartridge connector?

Link to comment
Share on other sites

What confuses me is that the Jaguar cartridge connector has one additional address pin to the left of the one I marked as PIN #4 in the image above.

 

That corresponds to EA23 in this image.

jaguar_cart_conn.thumb.gif.4dcec52bbbb0d92330dacbca5cda38ab.gif

 

If this is connected, why can't the Jaguar have 16 MB cartridges?

 

Edited by phoboz
Link to comment
Share on other sites

TOM does no generate an OE outside the card range (my 99% sure guess).

Remember: C0.0000 is Butch, E0.0000 is BIOS, F0.0000 are the internal registers.

Maybe it is possible to use the 2MB range of Butch. IIRC JagGD does so as well as SKUNK for communication with the controllers. So there must be a chip select. Or one has to decode

it oneself.

Link to comment
Share on other sites

39 minutes ago, 42bs said:

TOM does no generate an OE outside the card range (my 99% sure guess).

Remember: C0.0000 is Butch, E0.0000 is BIOS, F0.0000 are the internal registers.

Maybe it is possible to use the 2MB range of Butch. IIRC JagGD does so as well as SKUNK for communication with the controllers. So there must be a chip select. Or one has to decode

it oneself.

Yes, the ROM is between 80.0000 to E0.0000, which is 6MB.

 

Then Butch is inside the ROM range, thus treated as read only memory above 4 MB?

 

General Jaguar Memory Model:
===========================

$000000  +------------------------+ 
         |                        | 
         |          RAM           | 
         |                        | $1FFFFF 
$200000  +------------------------+ 
         |         shadow         | 
         |   of $000000-$1FFFFF   |    with 2MB 
         |          RAM           | $3FFFFF
$400000  +------------------------+ 
         .                        .
         .           ...          .
         .                        .
         .                        . $7FFFFF
$800000  +------------------------+ 
         |                        |
         |          ROM           |
         |                        | $DFFFFF
$E00000  +------------------------+
         |       BOOT-(EP)ROM     | $E1FFFF
$E20000  +------------------------+
         .                        .
         .           ...          .
         .                        . $EFFFFF
$F00000  +------------------------+
         |           TOM          |
$F10000  |------------------------+
         |          JERRY         |
         +------------------------+ $F1FFFF
         .                        .
         .           ...          .     ????
         .                        .
         ..........................

 

Edited by phoboz
Link to comment
Share on other sites

3 hours ago, phoboz said:

I guess. Can't test. Don't have a JagCD. Don't want one.

 

2 hours ago, 42bs said:

Side note: Why are the video init datas calculated at run time? These are fixed, so no need to waste memory to do all the shifting.

Ask Atari. That code is from them.

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