Drawing commands are canceled, but why?


Timo 2019-04-27 12:05

When I started working on LowRes NX I had this plan: I wanted to create a system which simulates real 8-bit and 16-bit game consoles. This basically means that all graphics are based on sprites and tile maps and that there is no screen pixel buffer where you could draw on (single pixels, lines, circles). All old consoles from Nintendo and Sega work like this, and this is how I designed LowRes NX.

You may know already that there are tricks to create a pixel buffer which allows drawing on a pixel level, but it's slow and complicated to use. Actually just like on classic game consoles.

I wanted to add simple BASIC commands to replace this tricks, but keeping the current virtual "hardware" and do nothing more than what you can do already with POKE. It was planned as a "pro" feature for tools or special effects etc. In any case you would still have to understand how backgrounds, cells and characters work, otherwise it would be very hard to understand the limitations.

It seems that most people who asked for drawing commands wanted a simple alternative for the current graphics system. I only wanted to add draw commands for primitives, but I fear people would then ask for new pixel buffer based sprite, tile map and text commands. And then they would complain why they are so slow... If I wanted to fix this I had to rethink the whole concept of LowRes NX and in the end we would have another clone of PICO-8 and all the other fantasy consoles.

So a while ago I decided to cancel this feature. Working like a real retro game console is my "unique selling point" of LowRes NX compared to other fantasy consoles.

was8bit 2019-04-27 17:30 (Edited)

I'm cool with that, so long as the "tricks" will still work...

... I understand and agree with your assessment of it...

small "pixel" style animations can be done with sprites, up to 128 with the doubling trick... and with help I have posted a full screen drawing animation example which comes with the price of limitations...

... my research of older systems has shown that of the few drawing examples that existed, they used a slightly smaller screen size, and were only black and white and the speed and animation was abit clunky...

so IF you wanted a true real simulation of the older systems, and IF you had a drawing mode, this is how it should perform, exactly as the older systems did it....

So, just like you now have 2 control modes (either touch or gamepad, but not both) you would have to have 2 graphic modes... either a NORMAL mode with text, tiles and sprites, backgrounds and palettes supported by character and background etc. files... OR a FULLDRAW mode, which would NOT have any text, tiles, sprites etc. or any file support... and it would be limited to only black and white on a slightly smaller screen... just like the older systems did it...

... so, in the end of MY assessment, I agree with you that you would get more complaints than compliments, and so just leave the full drawing in the realm of those who like to use fancy tricks to do different things...

was8bit 2019-04-27 17:41 (Edited)

I fully recommend everyone to learn and use LowRes NX as designed, and it is actually more incredibly powerful than it may seem at first glance, and with practice you can easily and quickly create great games... and more features are on the way \(^_^)/

But, for those who are only interested in manual drawing using math formulas, and want more that can be done with sprites and tiles (which in my opinion is a LOT) then here is an example program others have helped put together that can do a full screen drawing, it's limited to the one background and only 3 colors and an erase, but it works...

This demo has pixel erase as well

was8bit 2019-04-27 17:46 (Edited)

I encourage you to explore existing games, and get ideas on how to use LowRes NX as is... it has a lot of powerful feature already built in :)

Here is my example of a simulated 3d environment..

You'll find many more great examples already posted by lots of different people.. go exploring and then try some things for yourself...

If you are wanting an effect but can't seem to get it, just post on the chat forum and others will come along and help you get the effect you want :)

179F 2019-04-29 10:59

To be honest, this is great and it adds nostalgia, even though i wasnt born yet when these kinds of consoles were released

was8bit 2019-04-29 14:50

My dad had the intelliviison, which I got and still have including all of the games he bought for it... still works too :)

179F 2019-04-29 15:44

i wanna see one in action... do any of the games glitch out sometimes

was8bit 2019-04-29 20:38

Here is my favorite Intellivision game... I’m trying to make a version of it here...

Mrlegoboy 2019-05-03 17:13

Yeah, i’m okay with there not being any drawing commands at this point.

CreatorJo 2019-05-23 04:33

Bloxcraft was almost entirely based off drawing commands.

Timo 2019-05-23 05:35

Bendy, you can use characters/cells for a game like Bloxcraft. It would probably look even better, because you could draw textures for each block type.

CreatorJo 2019-05-23 15:07

Yeah, I guess I can use my Easy Draw Tech Test for starts.

Timo 2019-05-23 15:37

Simply set cells instead of single pixels. This way it will look even more like a Minecraft 2D than your old game.

was8bit 2019-05-23 19:52

Check out my version of this idea :)

CreatorJo 2019-10-15 22:03

BloxCraft NX Beta 1.0 is out!

CreatorJo 2019-10-15 22:04 (Edited)

Here's the link!

nathanielbabiak 2019-11-22 02:08 (Edited)

Coincidentally, my first thought upon discovering LowRes NX (I never knew about the original LowRes), was that it was such a shame that there isn’t a subprogram library of pixel-level commands. (Not that they’d be *fast* obviously, but at least casual users might be able to pick up the system and make pixel-level animations with it. Also, there’s a bunch of old graphing calculator games written in calculator basic that would easily port over to LowRes NX with these commands available.)

Anyway, I set to work developing three subprogram libraries. Each includes primitive geometric objects, text, and sprite commands. (One initializes a screen with 1 bit per pixel, one with 2 bits per pixel, and one with 3 bits per pixel.) I’ll have them released shortly, available for everyone to use!

My goal is to develop a wireframe 3D game, similar to the original Elite Dangerous of 1984. (Unfortunately, that may have to wait, as I’m trying to get my wife interested by making a very pretty and polished snake clone.)

was8bit 2019-11-22 02:15

Cool :)

Mrlegoboy 2019-12-10 05:16 (Edited)

You should piggyback off my 3d games code, i did everything i could to make it efficient.

While the triangle drawing doesn’t always work and my attempt at split rendering was a failure, the calculations for rotation and perspective are probably very robust, and should work great with your library doing the actual drawing.
Also great library.

nathanielbabiak 2019-12-10 17:09

I’ll check it out - thanks!

nathanielbabiak 2019-12-11 04:31

I found the split rendering code... It basically renders one frame, then scrolls to show alternative characters. But I can’t figure out how this would be useful. What was the intent?

Mrlegoboy 2019-12-11 05:07

Rendering filled triangles can only be so fast, anything resembling starfox would be unplayable due to the frame rate. That is, unless you have each ship render onto its own canvas, which you stick onto sprites, and abuse interrupts to move the ships around during the time it takes to render them, essentially creating a game with asynchronous graphics. I talk about it a little bit in the comments there. Its like what you would call ‘buffered graphics,’ but in the time it takes to draw the ship i would be moving them around smoothly, because raster subs dont have to wait for other code to finish.

Mrlegoboy 2019-12-11 05:09 (Edited)

I was rendering multiple ships at once, but they are the same ship facing the same direction, so thats why you can’t really tell.

Mrlegoboy 2019-12-11 05:16

Also i was trying to abuse the fact that if you rotate something, it doesnt go all the way to the corner, so you could make the edges overlap to save on characters, and i even wanted to make each ships rendering canvas shaped like a plus sign so that i could stick even more characters and ships in. (And i did! I actually made it work!) but then you get close up to the ships and they become a big blocky mess, and theres no depth buffer so you cant tell which way the ships are facing, so the whole thing just looks really bad

Mrlegoboy 2019-12-11 05:24

Maybe i should try to make a demo of what it could do if it wasn’t trying to be starfox

nathanielbabiak 2019-12-11 05:59

That helps - thanks! I’ll take another look at it and see if I can understand it a bit better.

nathanielbabiak 2019-12-11 06:04

Also, here’s a quick update to my 11/22 comment... Pxl Library 1.0 is finished! It allows for *very* fast two color pixel-level displays. Check out my asset uploads to see it all. I spent about two weeks trying to get a fast four color pixel-level display figured out, but the system’s really pretty slow. I’m working on it though! The four color version will be released as 2.0, but it’s not a priority for me (nor is the snake clone or the 3 bits per pixel version.) I’ll be starting on my 3D wireframe game now...

nathanielbabiak 2019-12-14 14:57

@Mrlegoby - a follow up to your 12/10 comment - I finished my 3D sample code. Check it out and let me know what you think!

Log in to reply.