- HD Picture Viewer [C] [TI-84 Plus CE]
- 11 Feb 2018 01:19:38 pm
- Last edited by TheLastMillennial on 17 Jan 2024 05:35:25 pm; edited 36 times in total
When you send a picture to your calculator via TI Connect CE, it super-reduces the quality to the point you can't make out much detail at all. In 2018 I discovered that the ICE coding language could display images at much higher quality! I successfully finished v1.0.0 of HD Picture Viewer using ICE in 2019. Unfortunately it was difficult to maintain and only supported up to 320x240 resolution images.
I started re-writing the entire project in C in 2020 despite knowing nothing about C. However, this broadened the program's features significantly! I added zx0 compression which unlocked support for 1080p+ pictures. I also added zooming, panning, and deleting pictures. In late 2023 I switched to C++ and pushed out v2.0.0 of HD Picture Viewer in early 2024.
It's finished!
Check out the GitHub Repository.
Example images:
v2.0.0 C++ Rewrite ToDo:
Higher Priority:
Lower Priority:
Long Term Features:
v1.0.0 ICE ToDo:
Example images (v1.0.0): here and here.
v0.0.1 ICE Proof of Concept:
This is the code for the convPNG.ini file
Note: your picture MUST be exactly 320 pixels wide and under 196 pixels tall!
Code:
This is the code to display an app var:
Code:
As I understand it, the code switches to 8bpp mode. Then it reads through the AppVar and treats every byte as a color defined by the xlibc palette. PT_ can explain how the code works better.
Example images (v0.0.1): here and here
EDIT: 600th post!
Old description: The problem is, the amount of data from converting a 320x240 to hexadecimal is massive. I cant fit it all into one program. So I'm following the advice of nearly everyone, and putting all the hex code into an App Var.My current problem is, I don't understand how to get the hex code from the App Var I made. I tried looking at the examples PT_ included with ICE, but there are no comments so it wasn't much help. I also tried commands from the command index that looked like they may work, but I had a 100% fail rate trying that. The search bar on Cemetech wasn't any help either. So my question: How do I call the Hex data from the app var I made? Or should I make the picture just a single tile of a tile-map and call it that way? (I only ask this since it's the only thing I could find that was anywhere close to what I need)
Thanks to PT_ and MateoC, I got this straightened out!
I started re-writing the entire project in C in 2020 despite knowing nothing about C. However, this broadened the program's features significantly! I added zx0 compression which unlocked support for 1080p+ pictures. I also added zooming, panning, and deleting pictures. In late 2023 I switched to C++ and pushed out v2.0.0 of HD Picture Viewer in early 2024.
It's finished!
- Download v2.0.0! Github | TI-Planet
- Download v1.0.2! Github | TI-Planet | TIcalc
Tutorial Video (v1.0.0): https://www.youtube.com/watch?v=s1-g8oSueQg
Teaser Video (v1.0.0): https://www.youtube.com/watch?v=QfrK-aNWzPU
Check out the GitHub Repository.
Example images:
v2.0.0 C++ Rewrite ToDo:
Higher Priority:
- Add a converter for PC
Set up C++ coding environment
Add custom palette support
Add picture detection
Add zoom abilities
Add pan abilities
Add compression
Clip only edge of image
Add thumbnails
Get this into a GUI program
Make tutorial
Release
Lower Priority:
- Add alphabetic sorting
Add double buffering
Long Term Features:
- Add 16bpp
Add GIF animations
Allow other programs to launch images
Access pictures from USB
Cache sub-images
v1.0.0 ICE ToDo:
- Get this into a GUI program
Add a converter for PC
Add custom palette support
Fix the thumbnails
Make tutorial
Add alphabetic sorting
Add double buffering
Release into Archives
Example images (v1.0.0): here and here.
v0.0.1 ICE Proof of Concept:
This is the code for the convPNG.ini file
Note: your picture MUST be exactly 320 pixels wide and under 196 pixels tall!
Code:
#GroupICE : ice_gfx
#Palette : xlibc
#PNGImages :
<image name>
#AppvarICE : <app var name>
#PNGImages :
<image name>
This is the code to display an app var:
Code:
[i]SPITE
sum(0
det(0
Copy(|ED40000,GetDataPtr(Open("<app var name>","r"))+2,<size, formatted as: width*height>
Pause
det(1
As I understand it, the code switches to 8bpp mode. Then it reads through the AppVar and treats every byte as a color defined by the xlibc palette. PT_ can explain how the code works better.
Example images (v0.0.1): here and here
EDIT: 600th post!
Old description: The problem is, the amount of data from converting a 320x240 to hexadecimal is massive. I cant fit it all into one program. So I'm following the advice of nearly everyone, and putting all the hex code into an App Var.
Thanks to PT_ and MateoC, I got this straightened out!