Visualizzazione post con etichetta Nintendo 3DS. Mostra tutti i post
Visualizzazione post con etichetta Nintendo 3DS. Mostra tutti i post

mercoledì 31 gennaio 2018

Mandelbrot su Ninentendo 3DS homebrew

Avendo a disposizione un Nintendo 3DS con Homebrew perche' non provare a farci girare un proprio programmino? Ovviamente Mandelbrot

Per prima cosa si deve impostare il compilatore scaricabile da qui

nel pacchetto e' disponibile un cartella di esempi con vari target (tra cui 3ds)...io ho modificato il programma in 3ds_examples/graphics/bitmap/24bit-color/ in cui e' mostrato in modo semplice come usare il framebuffer per creare immagini grafiche

una volta compilato il programma, invece di copiarlo sulla SD e metterlo in esecuzione sulla consolle, ho usato l'emulatore Citra che permette l'esecuzione dei file 3dsx ovvero l'output del compilatore





-----------------------------------------------------------------
#include <3ds.h>
#include <stdio.h>
#include <string.h>

#define SCREEN_WIDTH 320
#define SCREEN_HEIGHT 240
double iterazioni = 15;

double r;

float a = -2.0;
float b = -1.2;
float im = -1.2;

float dre = 3.0/SCREEN_WIDTH;
float dim = 2.4/SCREEN_HEIGHT;
float x,y,x_new,y_new;

int k,j,i;

void setPixel(u8 *fb, u16 x, u16 y, u8 red, u8 green, u8 blue) {
    fb[3 * (240 - y + (x - 1) * 240)] = blue;
    fb[3 * (240 - y + (x - 1) * 240) + 1] = green;
    fb[3 * (240 - y + (x - 1) * 240) + 2] = red;
}


int main(int argc, char **argv)
{
gfxInitDefault();
consoleInit(GFX_TOP, NULL);
printf("3DS Mandelbrot");
printf("\x1b[21;16HPress Start to exit.");
gfxSetDoubleBuffering(GFX_BOTTOM, false);
u8* fb = gfxGetFramebuffer(GFX_BOTTOM, GFX_LEFT, NULL, NULL);

for (int i=1;i<=SCREEN_WIDTH;i++)
  {
  a=a+dre;
  b=im;
  for (int j=1;j<=SCREEN_HEIGHT;j++)
  {
  b = b+dim;
  x = 0;
  y = 0;
  for (k=0;k<=iterazioni;k++)
    {
    x_new = (x*x)-(y*y)+a;
    y_new = (2*x*y)+b;
    if (((x_new*x_new)+(y_new*y_new))>4)
    {
    r = k%2;
if (r == 0) setPixel(fb, i, j, 255, 255, 255);
    break;
    }
    x = x_new;
    y = y_new;
    }
  }

  }


// Main loop
while (aptMainLoop())
{
hidScanInput();
u32 kDown = hidKeysDown();
if (kDown & KEY_START) break; /
gfxFlushBuffers();
gfxSwapBuffers();
gspWaitForVBlank();
}
gfxExit();
return 0;
}

lunedì 8 gennaio 2018

Homebrew Launcher su Nintendo 3DS


Cosa fare quando a Natale il bambino ti chiede un esotico giochino Nintendo che e' uscito solo in Giappone??

1) Gli spieghi che le consolle ed in giochi sono distribuiti a seconda di alcune regioni del mondo e che se hai la consolle italiana non puoi giocare con le schede giapponesi??

2) Provi a scaricare la Rom del gioco e la monti sull'emulatore Citra ? (per poi scoprire che anche un I5 funziona al 25% di velocita' del Nintendo originale??

no, ti ricordi che su un mercatino avevi comprato ad un prezzo stracciato una 3DS per poi scoprire a casa che era una consolle americana, non compatibile con le schede in vendita in Italia e metterla in un cassetto per un paio di anni. Avere una consolle vecchia non aggiornata  (nel mio caso 10.6.0-31U) permette di far girare un firmware su cui sono conosciuti degli exploit per mandare in esecuzione Homebrew Launcher.



Il modo piu' semplice per ottenere l'exploit e' quello di andare su Homebrew Github e preparare la scheda SD con l'hack per Nintendo 3DS seguendo le istruzioni (molto semplici peraltro).
Con Homebrew launcher non si possono eseguire giochi piratati ma si possono eseguire giochi di qualsiasi regione e quindi alla fine sono riuscito a far funzionare il gioco giapponese


ps : visto che c'ero una partina a DOOM per DOS...

lunedì 29 febbraio 2016

Esperimento di video 3D con Nintendo 3DS su Youtube


La Nintendo 3DS e' un giocattolo (indicativamente bambini piccoli a vedere il parco giochi) ma e' anche un oggetto per la presenza di uno schermo in auto stereoscopia

E' anche interessante la presenza di una coppia di fotocamere che permette di realizzare stereocoppie in modo semplice e con una geometria non modificabile. Aggiornando il firmware e' possibile, oltre alle stereocoppie, realizzare anche video stereo




I dati sono salvati nella SD Card del dispositivo e sono in formato MJPG (estensione del file .AVI). Per visualizzare i video su Youtube si deve prima installare il codec MPJPG da SourceForge
Dopo l'installazione  si apre VFW Configuratione e si abilita il Decoder MJPEG portandolo a libavcodec


Si installa quindi Stereo Movie Maker e si apre il file .avi precedentemente salvato


non c'e' bisogno di allineare le due semimeta' dello schermo perche' sono gia' sincronizzate
Si salva il file mettendo il flag in Side-by-Side e definendo il codec di compressione (questa ultima fase e' in po' a prove per trovare quello giusto)



Effettuando l'upload su Youtube viene riconosciuto il formato ma si puo' comunque indicare che si tratta di un filmato 3D. In Youtube versione desktop il filmato viene visualizzato come anaglifo (da visualizzare con gli occhialini a lenti rosse e blu) mentre su Android lo schermo viene diviso in due meta' per poter essere visualizzato con Google Cardboard
Lo stesso risultato si puo' ottenere con ffmpeg ma e' piu' macchinoso


Debugger integrato ESP32S3

Aggiornamento In realta' il Jtag USB funziona anche sui moduli cinesi Il problema risiede  nell'ID USB della porta Jtag. Nel modulo...