Jump to content
IGNORED

Aquarius Graphics Editor and "SuperFont" Upgrade Idea


Recommended Posts

In the Aquarius Multi-Cart thread, I mentioned that I've been working on a project to help improve the Aquarius's graphics capabilities, and I've finally made enough progress on it to be able to share my results.

 

As I'm sure many of you know, the Aquarius's graphics were limited to its built-in character set, with no ability to create sprites or other pixel-oriented graphics. When Mattel licensed the system from Radofin, they attempted to remedy this deficiency by expanding the character set to include a few game-oriented characters (a running man, robots, explosions, symbols, etc) in addition to the standard alphanumerics. They also added a series of 2x3 block patterns which, if put together correctly, could create the illusion of individually programmable pixels, at a resolution of about 80x72. Using this limited palette of characters, they were able to pull off passable versions of their most popular Intellivision games, but the system's meager graphics capabilities remained its weakest characteristic: not only are you limited to character-mode graphics, but you are limited to the characters that Mattel chose to include.

 

Another difficulty is that the characters are stored in a separate 2K ROM which is only accessible to the graphics hardware; it is not directly readable by the programmer. This meant that the contents of this chip could not be dumped to a PC by writing software on the Aquarius side, the way that the BASIC and cartridge ROMs have been dumped by Aquarius users over the years. As a result, all of the Aquarius emulators in existence (Virtual Aquarius, AqEmu, and the Aquarius driver in MESS) have had to use re-drawn "approximations" of the original characters, which always contained small but noticeable inaccuracies. Upon learning this, I wondered why nobody had tried desoldering the chip and dumping it through an EPROM programmer, so I did it myself about three weeks ago. To the best of my knowledge, and according to the Aquarius users I've spoken to, this was the first time that the original character ROM had ever been dumped.

 

My 16-in-1 Aquarius multi-cart uses manual bankswitching, which allows the user to manually select the active bank in the ROM through a series of toggle switches. It's very crude, and I might switch to a more sophisticated design before everything's settled, but it works very well for simple applications. The thought suddenly occurred to me one day: if I can bankswitch the cartridge ROM with toggle switches, why can't I bankswitch the character ROM, too? Why can't I create multiple character sets, each one designed for a different purpose, and switch from one to the other to give myself a wider selection of graphics?

 

underthehood.jpg

 

I first tried this idea by putting two copies of my ROM dump together into a 4K EPROM: I changed a few characters in the first copy using a hex editor, and the second was identical to the original. I plugged it into my Aquarius with a toggle switch on the top address line, and surely enough, both banks worked as expected: the characters I changed looked different when I used the modified character set. I then tried flipping the switch while the computer was on, and to my delight, I saw that the characters on the screen switched immediately from one set to the other, with no negative side-effects.

 

This discovery really got me thinking: if I could use a PLD to control the bankswitching instead of a manual switch ... and if the PLD could be mapped into the Aquarius's address space ... it would be easy to bundle a very large number of character sets together into one ROM (up to 32 unique sets in one 64K chip, for example), and the programmer could switch from one to the other entirely in software just by writing a number to a specific memory location (or by POKE-ing it in BASIC). This would make it possible to create different character sets for different types of software: action games, arcade games, puzzle/strategy games, space games, specialized applications, and so on. Or, to take it a bit further: if one were to add bankswitched RAM to the design for additional character data storage, it could be shadowed into a location that the programmer can read and write, which would finally give the Aquarius truly reprogrammable character graphics.

 

I'm going to develop this idea further when I get the multi-cart finished. In the meantime, I wanted to explore its potential, but I quickly decided that creating a new character set in the hex editor would be too cumbersome. So, I created a graphics editor, which I've attached below in case any Aquarius owners out there want to play around with it. I wanted something that could be used with multiple operating systems, so I implemented the editor in Java. If you already have Java installed, you can launch it simply by extracting the archive and double-clicking the "AquariusCharacterBuilder.jar" file, or by typing "java -jar AquariusCharacterBuilder.jar" at the command line.

 

editor.png

 

The program is very crude, and there's a lot more that I'd like to do with it, but it's usable enough in its present form. It starts you off with the standard character set, and after you've made whatever modifications to it that you want, you can save it as a new character ROM image that can be loaded into the Virtual Aquarius emulator, or burned to an EPROM and plugged directly into your Aquarius! Some additional documentation is included in the archive.

 

Using my editor, I came up with an expanded character set designed specifically for games. Then, I used that to create a static mock-up of what one popular game might look like on the Aquarius:

 

atris.png

 

(This screenshot was taken in the Virtual Aquarius emulator. I've also tried it on my real Aquarius, and although it looks pretty much the same, the dark grey color in the background doesn't seem to show up. Just goes to show you how important it is to always test on the real hardware and not to trust the emulator too much. I later revised it and took some screenshots from a real Aquarius; see below.)

 

I decided that the character editor was important enough to warrant putting the multi-cart project on hold for a week or two, but now that I have it completed, I'm going to get the multi-cart project moving again. Eventually, I'll go back to the editor and add more features. Some of the things I'd like to add include: a "scratchpad" that you can use to see how different characters fit together, character animation cycles, the ability to copy and move characters, and the ability to create a printable ASCII chart that you can put next to your Aquarius for reference. But in the meantime, have fun with the editor, and let me know if you have any issues or additional feature requests!

 

AquariusCharacterBuilder.zip

Link to comment
Share on other sites

Wow, would something like Aquar-a-Tris really be possible on the stock hardware with just a 16K expansion? Incredible if it is, and incredible that no one was able to do something like that before. Great, great work!

You might be surprised. I actually got this working with only a 4K RAM expansion, and the only reason I needed that much was because I cobbled the mock-up screen together in BASIC, and thus had to enter all the screen data--the placement of the characters and colors--into RAM (I had 753 bytes left over when I was finished). Machine language programs running from a cartridge, and the extended character sets themselves, wouldn't require any extra RAM at all: they would already be resident in ROM.

 

I think the built-in RAM would be enough for a Tetris game; after all, there have been versions that ran on a lot less. The only thing you would need to do with a stock Aquarius would be to upgrade the built-in character ROM so you could have the new graphics, and ideally, you'd also want the mini-expander for the hand controllers and for some nice background music.

 

Of course, if I was to really do a game like this, I wouldn't require either of those things; I'd support them if the computer had them, but I'd do the best I could with the standard hardware if it didn't.

Link to comment
Share on other sites

I've had some homebrew ideas for the Aquarius, one question I would have is there a way not to have to modify the actual Aquarius hardware, but put an extra chip/programming in the software/cart and then have it take priority over the default Aquarius graphic set?

It would be nice, but unfortunately (at least as I understand it), the character ROM isn't visible in the Aquarius address space, and you can't point the graphics chip to another character set elsewhere in memory. This is where my idea of using shadowed RAM comes in: it would occupy the character ROM space, but would also be mapped to a writable location. This way, programmers could reprogram the character tables directly. The problem is that, since you can't copy the default character set from ROM into RAM and make only a few changes to it (again, because the old ROM isn't visible), you'd have to create an entire new character set every time, which would cost you an extra 2K in your program. That would be especially difficult in BASIC, since it would all have to be loaded into RAM first, and you don't even have 2K of free RAM under BASIC without a memory expansion.

 

That's why I'd also want to have a large variety of character sets in ROM to choose from: it may not be as good as completely reprogrammable graphics, but it wouldn't cost you any extra RAM, and it would still allow you to do much larger classes of games than the original characters would.

Link to comment
Share on other sites

I guess I should also post the extended character set that I created, in case anyone wants to crack it open in the editor to see what I did:

 

ExtendedCharacterSet01.zip

 

It's a little messy at the moment because I've got a lot of junk in there for other mock-ups I was thinking about (Pac-Man arcade graphics, some outdoor shapes for maps and landscapes, etc). I decided against the other mock-ups because creating them manually in BASIC is such a cumbersome process; the Tetris screen required about three printed pages' worth of DATA statements (it's the first time in about twenty years that I've had to use line-numbered BASIC, yuck!). That experience made me realize that I really need a companion utility, a "Screen Builder," which would take the character sets created in Character Builder and would allow you to design sample screens by laying out characters and color maps. I'm thinking of something akin to the old TheDraw for DOS.

Link to comment
Share on other sites

Just because it was bothering me, I decided to change the dark gray background that wasn't showing up on the real hardware, and I rebalanced some of the colors and graphics accordingly. Here's how it looks now in the emulator:

 

atris.png

 

Here's how it looks running on the real hardware. Besides my alternate character ROM, this is nothing but a standard Aquarius with a 4K RAM cartridge installed. I had to go through a VCR to get this to my capture card, so I apologize if it's a little dark/grainy (it looks better on a real TV):

 

atris_realhw.png

 

And, just for the sake of completeness, let me show you what it looks like with the standard character set (I just switched the ROM to the default bank before taking this picture). This reveals the original characters that I replaced with the new graphics:

 

atris_realhw_funky.png

Link to comment
Share on other sites

Great googly-moogly! Jay, you are single handedly revolutionizing the Aquarius platform into a new viable homebrew paradise. I know that not a lot of people have adopted an Aquarius because of the limitations, but with the character rom upgrade and the ability to create homebrew carts on the horizon because of your multi-cart project, I can see a ton of people jumping on board.

 

It will be cool to see the Aquarius getting a little respect!

Link to comment
Share on other sites

Agreed, but Im trying to look for someway to address it without having to have the end user having to do hardware modifications to their rebadged Radofins'. Keep the idea in mind as you go, in case something comes up.

Well, I'll see what I can do. Having lived in the hacker-happy Atari world my whole life, I've long since gotten used to the idea of socketing chips in my machines, but I have noticed that Aquarius owners generally seem much more reluctant to tinker with their hardware than Atari owners are. I'm not sure why, but I suppose one reason is that the Aquarius hardware is more scarce.

 

Unfortunately, some sort of hardware modifications will be necessary to remedy what I see as the three biggest limitations or flaws of the Aquarius as a gaming platform: the limited character set is the first (and the most serious), the lack of composite/S-Video output is the second, and the lack of an external keyboard interface is the third. With those three problems fixed, and with a mini-expander and a set of hand controllers (which every serious Aquarius owner should really have already anyway), the Aquarius would make a nice little gaming computer with some interesting potentialities.

 

Those three are the only important upgrades I can think of that would require modifications to the hardware; everything else (such as persistent data storage) can be added through the cartridge slot.

Link to comment
Share on other sites

  • 1 month later...

Well, I'll see what I can do. Having lived in the hacker-happy Atari world my whole life, I've long since gotten used to the idea of socketing chips in my machines, but I have noticed that Aquarius owners generally seem much more reluctant to tinker with their hardware than Atari owners are. I'm not sure why, but I suppose one reason is that the Aquarius hardware is more scarce.

 

Unfortunately, some sort of hardware modifications will be necessary to remedy what I see as the three biggest limitations or flaws of the Aquarius as a gaming platform: the limited character set is the first (and the most serious), the lack of composite/S-Video output is the second, and the lack of an external keyboard interface is the third. With those three problems fixed, and with a mini-expander and a set of hand controllers (which every serious Aquarius owner should really have already anyway), the Aquarius would make a nice little gaming computer with some interesting potentialities.

 

Those three are the only important upgrades I can think of that would require modifications to the hardware; everything else (such as persistent data storage) can be added through the cartridge slot.

 

Seeing what you have been able to achieve has been interesting to me as the Aquarius was my first computer and I learned to program basic it on it. Have you noticed the TRS-80 postings lately particularly this TRS-80 hi-res demos. I always find it amazing what can be achieved on what is generally considered limited hardware. It may be that techniques like this and maybe some of the tricks used on the ZX-81 can give pointers in the right direction of pseudo hi-res on the Aquarius without hardware mods.

 

Note: I've found that the Virtual Aquarius works well on Wine for those that use Linux :) , however it doesn't support interrupts which would be one of the requirements to at least attempt the above techniques for those that don't have real hardware.

 

 

Barnie

Edited by barnieg
Link to comment
Share on other sites

Seeing what you have been able to achieve has been interesting to me as the Aquarius was my first computer and I learned to program basic it on it. Have you noticed the TRS-80 postings lately particularly this TRS-80 hi-res demos. I always find it amazing what can be achieved on what is generally considered limited hardware. It may be that techniques like this and maybe some of the tricks used on the ZX-81 can give pointers in the right direction of pseudo hi-res on the Aquarius without hardware mods.

 

Note: I've found that the Virtual Aquarius works well on Wine for those that use Linux :) , however it doesn't support interrupts which would be one of the requirements to at least attempt the above techniques for those that don't have real hardware.

 

Barnie

Thanks for pointing me to those TRS-80 posts! It's interesting to see what George Phillips has been able to do with such limited display hardware. If I understand his methods, he is taking advantage of the reprogrammable graphics capabilities provided by the TRS-80. Unfortunately, the Aquarius provides no such capabilities: the character data is stored in a 2K ROM, and the original Aquarius design provided no way to change it directly or to repoint the graphics hardware to a new character set in RAM. It's a very closed system, as far as its graphics capabilities are concerned.

 

I've set the SuperFont project aside for now in order to concentrate on finishing my multi-cart (I'll have an announcement on that shortly, by the way), but when I get back to it, I'll investigate other possible methods of changing the character graphics. I don't think it will be possible to do this without hardware modifications, but fortunately, these will only involve socketing a single 24-pin chip and running some wires to other parts of the board, which should take only a few minutes to do. SuperFont will probably be configured to use two of the Aquarius's unused I/O ports: the first will control the bankswitching hardware (switching from one character set to another), and the second will provide direct read/write access to the character data. I plan to include a 64K ROM and an 8K RAM in the design, which will give the programmer 32 built-in character sets to choose from, as well as four fully writable character sets for reprogrammable graphics. Among other things, the latter will make it possible to create some interesting animation effects by switching rapidly from one set to another.

Link to comment
Share on other sites

 

Thanks for pointing me to those TRS-80 posts! It's interesting to see what George Phillips has been able to do with such limited display hardware. If I understand his methods, he is taking advantage of the reprogrammable graphics capabilities provided by the TRS-80. Unfortunately, the Aquarius provides no such capabilities: the character data is stored in a 2K ROM, and the original Aquarius design provided no way to change it directly or to repoint the graphics hardware to a new character set in RAM. It's a very closed system, as far as its graphics capabilities are concerned.

 

What in theory I was thinking may be possible is to use interrupts in the process of displaying the screen at every line of pixels that build up characters by row, switch characters effectively slicing characters down the screen - I think this is partly how George produced his demo's. It would be a pseudo hi-res and quite resource intensive. However as the graphics output has to be built up line by line (due to how CRT'S work) it might work. Unfortunately their is limited information around (that I can find) about the Aquarius

 

Another off the wall idea would be to put something like a 6845 CRT controller on a Cartridge along with RAM and composite out!

 

Barnie

Link to comment
Share on other sites

What in theory I was thinking may be possible is to use interrupts in the process of displaying the screen at every line of pixels that build up characters by row, switch characters effectively slicing characters down the screen - I think this is partly how George produced his demo's. It would be a pseudo hi-res and quite resource intensive. However as the graphics output has to be built up line by line (due to how CRT'S work) it might work. Unfortunately their is limited information around (that I can find) about the Aquarius

 

Another off the wall idea would be to put something like a 6845 CRT controller on a Cartridge along with RAM and composite out!

 

Barnie

Well, as you rightly point out, there isn't much documentation out there about the Aquarius, and none that I've found so far that describes the graphics hardware in detail. The Aquarius uses a PLA to implement its CRT controller, so it's all proprietary logic, and there's currently no way of knowing what's going on inside that chip. I wish we had that kind of documentation, because I'd love to see if a technique such as the one you're describing would be possible on the Aquarius.

 

One factor that motivated me to take the approach that I've taken is that most Aquarius owners seem to do all their programming in BASIC, which wouldn't be fast enough for the kind of resource-intensive screen manipulation that you're talking about. I wanted something simple enough and versatile enough to be useful to recreational programmers, since they are in the majority, and the I/O-based approach I'm considering would make it possible to do programmable graphics with only a few lines of code.

 

That's an interesting idea about the cartridge-based CRT controller. Mattel/Radofin must have had something like this in mind when they designed the cartridge interface, because the connector includes a composite sync signal. I've put together a simple composite circuit for the built-in graphics, which will allow the Aquarius to be plugged directly into composite inputs, and in the final design I'll probably bundle this together with the SuperFont hardware and a PS/2 keyboard interface (and maybe a few other goodies I'm thinking about) into one upgrade board.

Link to comment
Share on other sites

That's awesome news about the plug and play composite output. Any day we can get a rock solid RF-free signal out of a classic system without a mod is a good day. Would we still be able to use cartridges/the expander with this in place somehow?

The cartridge port includes a video synchronization timing signal, but it doesn't include chroma or luminance, so there aren't enough outputs to be able to pull the built-in graphics out to a cartridge-based composite adapter. It would be nice if we could, but it looks like a composite upgrade will require a mod kit. What I have in mind is to bundle the video hardware onto the SuperFont board; once this is installed, you'd only have to run two extra wires to the RF modulator, and you'd have a set of composite jacks that can be mounted in the Aquarius case for direct composite output. It will be much simpler than most Atari mod kits, which usually require installing many more wires.

Link to comment
Share on other sites

  • 1 year later...

I must say this item interests me even more than the multi-cart(although I want one too)! I have one question regarding the 32 built-in character sets. What will be the base for these, ZX Spectrum, Amstrad CPC, SharpMZ or are you going to make them from scratch? Maybe it would also be nice to ask other members to draw or give their own input for some of these graphics?

At least I am sure that the home-brew business for the Aquarius will eventually take of with so much extra power for the Aquarius.

 

Keep up the good work! You are really a magician for all of us out there.

Link to comment
Share on other sites

I must say this item interests me even more than the multi-cart(although I want one too)! I have one question regarding the 32 built-in character sets. What will be the base for these, ZX Spectrum, Amstrad CPC, SharpMZ or are you going to make them from scratch? Maybe it would also be nice to ask other members to draw or give their own input for some of these graphics?

At least I am sure that the home-brew business for the Aquarius will eventually take of with so much extra power for the Aquarius.

 

Keep up the good work! You are really a magician for all of us out there.

Thank you very much, and welcome to AtariAge!

 

The built-in character sets can contain any kind of graphics we want them to, as long as they will fit inside the 256 available cells of 8x8 pixels each. I can certainly include characters from other classic computers, including the ones you mentioned. I already plan to include the original IBM PC characters (including multiple code pages for different languages), and a set containing "arcade-style" alphanumerics that I ripped from a Ms. Pac-Man arcade ROM (you can see some of these in the demo screenshots I posted). There will also be some character RAM that Aquarius programmers can use to create their own graphics, so you certainly won't be limited to the characters included in the ROM.

 

I'd love to include character set submissions from other Aquarius users; in fact, one of the reasons I was so eager to release the first version of my character editing tool was so that other users could start experimenting with creating their own characters (I do have a better tool in the works; I just need to optimize it and clean it up a bit for general release). In a post in an Aquarius programming thread, I described how to use a copy of the original character set within the Virtual Aquarius emulator, and you can substitute your own sets within the emulator in the same way. The editing tool will save your characters in binary format, so no intermediate "conversion" process is needed: just create and save your characters, plug them into the emulator, and see how they look!

 

Once I get the Aquaricart project finished, I'll be able to turn my attention back to some of the other Aquarius projects I have in mind, including this one. I think that having reprogrammable character graphics, combined with more available RAM (via the new 32K RAM modules I'm working on), will open up some very exciting possibilities for Aquarius homebrew. I already have more game ideas than I'll ever find time to implement!

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