Jump to content
IGNORED

[AQUARIUS] - Aquarius Graphics Encoder


Recommended Posts

Hi,

 

As I am coming back to the Aquarius after a long hiatus, mostly due to the fact that MESS is providing a very good development tool, it will be even more so if @Pernod emulates @Bruce Abbott's Mini-Expander.  With support for @jaybird3rd's Super Cart in MESS and with Matt Pilz's Aquarius Draw tool we now have a lot of tools at our disposal for the lowly Aquarius.  Anyway, I went back and looked at a lot of the stuff I spent time on now more than a decade ago, and I am so thankful for everything that this forum has enabled me to learn.  It forced me to learn Freebasic (a powerful development tool that compiles Window 10 compatible code and is pretty fast), forced me to learn a bit of Z80 assembly and therefore got me a lot closer to the processer, and forced me to learn a lot about image manipulation.  My work on the Aquarius spawned a number of other cool bits here and there and some of that passion continues.  Anyway, when I saw that even now some people use the BMP2AQ tool and thinking through all of the things I have learned since then, I have decided to modernize the tool, make a proper Windows GUI for it and have a myriad of use selectable options.  In an ideal setup I would like to output files that can natively be pulled into Matt P's on-line editor for touch up and finalization.  This project is going to take me quite some time.  I will confess that I write really lazy code.  I have never made an application that makes calls to Windows routines outside of the file open dialog box.  I do not use proper subroutines.  I overuse the goto statement.  I write code in "FBLite" mode.  I'm not even really sure exactly what a pointer is, except that it "points" to a memory location.  In short, my code is an absolute jumbled mess - but it works.  For this project my goal is to do everything right.  Have a proper set of functions and sub-routines.  Utilize the Windows GUI.  Allow scalable windows.  Pop-up dialogues for important tasks.  A true "File, Options, About" menu bar.  Good solid commented code, AND, for the first time I am going to try to use GITHub as a repository for the code and the project with version control.   (That's another thing I am absolutely horrible at...)

 

In order to step up my game, I need some advice from the small but passionate Aquarius community.  (By the way, can you convince your Facebook Aquarius group friends to come hang out here, I don't have a Facebook, and I know the yahoo group used to be "the place" but it seems the FB group is the most active Aquarius users.)  Anyway, here are the features that I plan to implement and would like feedback, feature set asks.  I'll also post GUI mock ups, etc.  

 

Here are my preliminary design features that I would like to implement:

 

Open Image Formats

  • JPG
  • PNG
  • BMP
  • GIF

    
Preprocessing    

  • Brightness
  • Contrast
  • Red/Green/Blue (adjust RGB levels)
  • Bit Reduction (reduce incoming bit-depth)
  • Scale/Crop/Reposition (zoom in on a face for example)

    
Scaling

  • Nearest Neighbor  (pixels!)
  • Averaging (smooth downsample)
  • HQX (for upscaling)

    
Character Options

  • Full Character Set
  • 2x3 Bloxel Set
  • 2x2 Bloxel Set
  • Graphics Set (all non-alpha-numeric, symbolic characters)
  • Gradient Set (blank, full, checkerboard, two stochastic chars)

    
Processing Options

  • Full Brute Force (Cycle through each 8x8 pixel block and determine lowest sum or squared differences of RGB values to every char/col combination)
  • Character Averaging (Downscale Input Image to 40x24, take average color of target character set, match closest)
  • Bloxel 2x3 Scale & Render (Downscale Input Image to 80x72 and use 2x3 bloxels)
  • Bloxel 2x2 Scale & Render (Downscale Input Image to 80x48 and use 2x2 bloxels)
  • Black and White (Convert to 1 bit image)
  • Color & Character Two Pass (Choose Colors first, then characters)
  • 60 Hz Flicker (Create two screens when flickers at 60 Hz, somewhat 320x192x136 color mode) 

    
Dither 

  • Enabled/Disabled
  • Diffusion (Floyd-Steinburg, Atkinson, Jarvis, Stucki, Burkes, Sierra)
  • Pattern (Small Checkerboard, Large Checkerboard, 2x3 Bloxel)
  • Bayer (2x2, 4x4, 8x8)

    
Output Options

  • Basic Code Data Statements Uncompressed
  • Basic Code Data Statements RLE
  • .ASM Code
  • .CAQ Output
  • .BIN Output
  • .JSON for use in Aquarius Draw

 

In many ways this is a very ambitious project for me.  I would like to contribute a better tool to help development and to improve the quality of images on the aquarius.  In my next comment I will share a bit of a teaser showing how I have already improved on the image conversion algorithm used in the BMP2AQ and post a few examples of output using the Brute Force and Gradient methodologies mentioned above.

 

Thanks,

 

Chris

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

The results are really good, specially the brute force examples. I like how the "block" characters are being used.

 

Btw, I find a little annoying the amount of alphanumeric characters filling the more or less solid color surfaces. Is there a way to forbid the use of part of the character set or tune a bit the color contrast to avoid detecting so much differences inside a (mostly solid) surface?.

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