Jump to content
  • Sky
  • Blueberry
  • Slate
  • Blackcurrant
  • Watermelon
  • Strawberry
  • Orange
  • Banana
  • Apple
  • Emerald
  • Chocolate
  • Charcoal
ZefTheFox

Simple high resolution graphics

Recommended Posts

By calling hres.set(x, y, state) you can set a pixel at that x, y position to either be the foreground, or the background color. The x and y positions are the exact pixel location you'd like.

This allows for a theoretical maximum resolution of 320 by 200. This is achieved by using the Unicode braille characters. To get the current "hres" resolution you take the screens current x resolution and multiply by 2, and you take the screens current y resolution and multiply by 4.

There may be bugs, and things may behave oddly if you try to "turn off" a pixel that was not "on" in the first place.

local gpu = require("component").gpu
local unicode = require("unicode")
hres = {}
 
function hres.set(x, y, state)
  local x = math.floor(x)
  local y = math.floor(y)
  local scrx = math.ceil(x/2)
  local scry = math.ceil(y/4)
  local maxx, maxy = gpu.getResolution()
  if scrx > maxx or scry > maxy or scrx < 1 or scry < 1 then return end
  local prechar = gpu.get(scrx, scry)
  _, prechar = utf8.codes(prechar)(prechar)
  local offset = 0x2800
  local offsetx = (x-((math.floor(x/2))*2))
  if offsetx == 0 then offsetx = 2 end
  local offsety = y-(math.floor(y/4)*4)
  if offsetx == 1 then
    if offsety == 0 then
      brs = 7
    else
      brs = offsety
    end
  else
    if offsety == 0 then
      brs = 8
    else
      brs = offsety+3
    end
  end
 
  local offsetdec = 2^(brs-1)
 
  if prechar < offset or prechar > 0x28FF then
    prechar = offset
  end
 
  if state then
      gpu.set(scrx, scry, unicode.char(prechar+offsetdec))
  else
      gpu.set(scrx, scry, unicode.char(prechar-offsetdec))
  end
end

 

Link to post
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...

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use and Privacy Policy.