Posts: 5 
	Threads: 1 
	Joined: Dec 2014
	
 Reputation: 
 0
	 
 
	
	
		Hi , 
 
Just new on the hardware and i try to figure out how to make homebrew for innotab2. 
and i have some questions to the dev here. 
 
for now i know a little about the hardware, firmware, sqlite part ... 
and i have found on github the Source Code Release for the VTech InnoTab  
(don't know if it apply to innotab 2 as well) 
 
Is there any other sdk to start to build homebrew on the device ? 
which library must i use ? how access fb (i mean other than use lcdterm) . 
I've already the arm-2010q1-188 toolchain , must i update to another one ? 
 
i have saw the video of scummvm port , is there any source code to look at ? 
   
if someone here can point me in the good direction it will be nice . 
 
thanks in advance.
	 
	
	
	
		
	 
 
 
 
	
	
	
		
	Posts: 181 
	Threads: 7 
	Joined: Dec 2013
	
 Reputation: 
 3
	 
 
	
	
		to ask questions to dev i think you should try to contact them on irc channel. contact isomick or deak phreak....
	 
	
	
	
		
	 
 
 
	
	
	
		
	Posts: 5 
	Threads: 1 
	Joined: Dec 2014
	
 Reputation: 
 0
	 
 
	
	
		 (12-27-2014, 03:39 AM)mifille Wrote:  to ask questions to dev i think you should try to contact them on irc channel. contact isomick or deak phreak.... 
thks for  replying , i went on irc but hard to find isomick or deak.
 
i was able to build and execute some hombrew ( sdl sample ) , fprintf show me fct works but nothing appear on screen. (blink/ black screen/loading screen  then retrun ) so i hope find isomick to ask him how i did for scummvm .
	  
	
	
	
		
	 
 
 
	
	
	
		
	Posts: 181 
	Threads: 7 
	Joined: Dec 2013
	
 Reputation: 
 3
	 
 
	
	
		have you seen there's a yahoogroup for inotab? 
 
it's old but iso was talking about scummvm on it.
	 
	
	
	
		
	 
 
 
	
	
	
		
	Posts: 5 
	Threads: 1 
	Joined: Dec 2014
	
 Reputation: 
 0
	 
 
	
	
		 (12-28-2014, 11:25 AM)mifille Wrote:  have you seen there's a yahoogroup for inotab? 
 
it's old but iso was talking about scummvm on it. 
yeah i found it when doing search for innotab , 
my main pb now at that my app show up less than 1 sec and then screen become black , then loading screen... 
but in that second , i can see my sdlscreen , so sdl code work and touch (tslib) log are done , 
now i will wait (here and irc)  that some other dev show me how they did to have screen fully working 
 (i mean maybe tweak _Run to kill other process that can cause my main pb)  
BTW thanks for help and reply .
	  
	
	
	
		
	 
 
 
	
	
	
		
	Posts: 181 
	Threads: 7 
	Joined: Dec 2013
	
 Reputation: 
 3
	 
 
	
	
		ok, hope you 'll find isomick on irc.
	 
	
	
	
		
	 
 
 
	
	
	
		
	Posts: 990 
	Threads: 78 
	Joined: Dec 2013
	
 Reputation: 
 36
	 
 
	
	
		Sorry I am not as technical as mick so I am not familiar with creating things from scratch.  I'd try to catch him on IRC. He does not use the forums.
	 
	
	
	
		
	 
 
 
	
	
	
		
	Posts: 5 
	Threads: 1 
	Joined: Dec 2014
	
 Reputation: 
 0
	 
 
	
	
		thanks , 
I  finaly got him on IRC and he point me (by giving me his SDL moded source code) how to build an SDL sample working . 
i point me also he use /dev/disp0 and chunkMem in his fbconv SDL video driver .  So big thank Mick .
 
finaly i respond to myself and post the basic to setup an basic framebuffer using /dev/disp0 , maybe usefull for someone else.
 Code: #include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 
#include <unistd.h> 
#include <fcntl.h> 
 
#include <sys/types.h> 
#include <sys/ioctl.h> 
 
#include "mach/gp_display.h" 
#include "mach/gp_chunkmem.h" 
 
#include <tslib.h> 
 
#define XRATIO 1.0f //1.5f 
#define YRATIO 1.0f //1.134f 
 
#define SCREEN_WIDTH  480 
#define SCREEN_HEIGHT 272 
#define SCREEN_DEPTH 16 
 
#define BMP_WIDTH  SCREEN_WIDTH 
#define BMP_HEIGHT SCREEN_HEIGHT 
#define BMP_DEPTH  SCREEN_DEPTH 
 
#define RGB565(r, g, b)  (((r) << (5+6)) | ((g) << 6) | (b)) 
 
#include "graph.h" 
 
#define CLEAR(x) memset (&(x), 0, sizeof (x)) 
 
int main( int argc, char* args[] ) 
{ 
 int done = 0; 
 
 /* dips variable */ 
 int dispDev; 
 int chunkMem; 
 chunk_block_t priBlk; 
 gp_disp_res_t panelRes; 
 gp_bitmap_t priBitmap; 
 UINT16 *data; 
 
 /* tslib init */ 
 char *tsdevice=NULL; 
 struct tsdev *ts; 
 if( (tsdevice = getenv("TSLIB_TSDEVICE")) != NULL ) { 
 ts = ts_open(tsdevice,0); 
 } else { 
 ts = ts_open("/dev/input/event0", 0); 
 } 
 if (!ts) { 
 perror("ts_open"); 
 exit(1); 
 } 
 if (ts_config(ts)) { 
 perror("ts_config"); 
 exit(1);  
 } 
 
 /* Opening the device dispDev */ 
 dispDev = open("/dev/disp0",O_RDWR); 
 fprintf(stderr,"dispDev = %d\n", dispDev); 
 
 ioctl(dispDev, DISPIO_SET_INITIAL, 0); 
 ioctl(dispDev, DISPIO_GET_PANEL_RESOLUTION, &panelRes); 
 
 /* Opening /dev/chunkmem */ 
 chunkMem = open("/dev/chunkmem", O_RDWR); 
 
 /* Allocate primary frame buffer */ 
 priBlk.size = (BMP_WIDTH) * (BMP_HEIGHT) *2; 
 ioctl(chunkMem, CHUNK_MEM_ALLOC, (unsigned long)&priBlk); 
 
 /* Set primary layer bitmap */ 
 priBitmap.width = panelRes.width; 
 priBitmap.height = panelRes.height; 
 priBitmap.bpl = panelRes.width*2; 
 priBitmap.type = SP_BITMAP_RGB565; 
 priBitmap.pData = priBlk.addr; 
 
 ioctl(dispDev, DISPIO_SET_PRI_BITMAP, &priBitmap); 
 
 /* Enable primary layer */ 
 ioctl(dispDev, DISPIO_SET_PRI_ENABLE, 1); 
 ioctl(dispDev, DISPIO_SET_UPDATE, 0); 
 
 
 while(done==0){ 
 
 /* fill primary bitmap */ 
 Draw_string((char*)priBitmap.pData, 50, 50,"Hello World innotab!", 20, 1, 2,0xffff,0x8080); 
 DrawBoxBmp((char*)priBitmap.pData,40,40, 200,40, RGB565(31, 11, 7));  
 DrawCircle((char*)priBitmap.pData,200, 100, 25,RGB565(31, 31, 31),1); 
 DrawFBoxBmp((char*)priBitmap.pData,50,100,100,50,RGB565(31, 0, 0)); 
 DrawlineBmp((char*)priBitmap.pData,20,256,460,258,RGB565(0, 31, 0)); 
 
 /* update and wait frame end */ 
 ioctl(dispDev, DISPIO_SET_PRI_BITMAP, &priBitmap); 
 ioctl(dispDev, DISPIO_SET_PRI_ENABLE, 1); 
 ioctl(dispDev, DISPIO_SET_UPDATE, 0); 
 ioctl(dispDev, DISPIO_WAIT_FRAME_END, 0); 
 
 
 /* update tslib and exit if touch*/ 
 struct ts_sample samp; 
 int ret; 
 ret = ts_read(ts, &samp, 1); 
 if (ret < 0) { 
 perror("ts_read"); 
 goto fin; 
 } 
 if (ret != 1) 
 continue; 
  
 if (samp.pressure > 0) 
 fprintf(stderr,"%ld.%06ld: %6d %6d %6d\n", samp.tv.tv_sec, samp.tv.tv_usec,samp.x, samp.y, samp.pressure); 
  
 int SX=(int)(samp.x/XRATIO); 
 int SY=(int)(samp.y/YRATIO); 
 if(SX>50 && SX<150 && SY>100 && SY<200)done=1;  
 
 } 
 
 fin: 
 
 close(dispDev); 
 
 ioctl(chunkMem, CHUNK_MEM_FREE, (unsigned long)&priBlk); 
 close(chunkMem); 
 
 return 0; 
}
  
	 
	
	
	
		
	 
 
 
 
	
	
	
		
	Posts: 990 
	Threads: 78 
	Joined: Dec 2013
	
 Reputation: 
 36
	 
 
	
	
		Thanks. If you get in to it further and want to write up a tutorial for others, I will be glad to pin it or put a link to it in the FAQ.
	 
	
	
	
		
	 
 
 
	
	
	
		
	Posts: 1 
	Threads: 0 
	Joined: Jan 2018
	
 Reputation: 
 0
	 
 
	
	
		bonjour 
merci pour l acceptation 
je viens d acquérir une storio 2 et j'ai qqs questions pour récupérer des jeux
	 
	
	
	
		
	 
 
 
	 
 |