After finding this, I decided to write my own "renderer" for binary data. Its just about 70 lines of FB/GL-Code:
Code: Select all
#include once "GL/gl.bi"
#include once "GL/glu.bi"
var ff=freefile
open "SOME FILE" for binary as #ff <- Change this to a valid filepath
dim shared as ubyte bytes(255,255,255)
dim as ubyte byte1,byte2, layer
dim as integer mx,my,mb,oldmx,oldmy
dim as byte r,g,b
dim as integer layermax=lof(ff)/255,layertimer
get #ff,,byte2
do
byte1=byte2
get #ff,,byte2
layertimer+=1
if layertimer>=layermax then
layer+=1
layertimer=0
end if
bytes(byte1,byte2,layer)+=4
loop until eof(ff)
close #ff
screenres 1024,768,24,,2
glViewport 0, 0, 1024, 768
glMatrixMode GL_PROJECTION
glLoadIdentity
gluPerspective 45.0, 1024/768.0, 0.1, 100.0
glMatrixMode GL_MODELVIEW
glLoadIdentity
glClearColor 0.1, 0.0, 0.1, 0.0
glClearDepth 1.0
glEnable GL_DEPTH_TEST
glClear GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT
glEnable(GL_BLEND)
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)
glTranslatef 0, 0, -20
glRotatef 150,1,0,0
glRotatef 45,0,0,1
glPointSize(3)
do until inkey=chr(27)
sleep 1,1
oldmx=mx
oldmy=my
getmouse mx,my,,mb
glClear GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT
glBegin gl_Points
r=-1:g=127:b=127
for z as integer=0 to 255 step 2
r+=1:b-=1
for y as integer=0 to 255
for x as integer=0 to 255
if bytes(x,y,z)>0 then
glColor4b r,g,b,bytes(x,y,z)
glVertex3f x/32-256/64, y/32-256/64, -z/32+256/64
end if
next
next
next
glEnd
if mb=1 then
glRotatef (mx-oldmx), 0, 1, 0
glRotatef (my-oldmy), 1, 0, 0
end if
flip
loop
I took some images from the renders:
The 64bit gcc-compiler. Notice the bright "cubes" in the center of the image. Those are the areas where the strings are stored in the file.
Random bitmap-image.
A 32bit library with a lot of images saved inside.