chjmartin2 Posted July 18, 2021 Share Posted July 18, 2021 (edited) 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 July 18, 2021 by chjmartin2 1 Quote Link to comment Share on other sites More sharing options...
chjmartin2 Posted July 18, 2021 Author Share Posted July 18, 2021 Here are some examples of the output from the latest "engine." The lowest left is the brute force result and the lower right is the gradient output result. 1 Quote Link to comment Share on other sites More sharing options...
jltursan Posted July 21, 2021 Share Posted July 21, 2021 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?. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
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.