M’ha costat una mica decidir-me en l’apartat de l’amplificació de so. Els requisits que tenia:
\tUn monitor actiu decent, amb una bona potència per fer-se sentir en una sala gran. S’ha de defugir dels altaveus d’ordinador. Ha de ser un sol monitor, no pas una parella.
\tQue no siguin cars. Compromís qualitat/preu. \t
Que es pugui integrar dins del moble de la rockola, sense espatllar el moble del monitor. \t
No ha de tenir botons en la part frontal, sinó que aquests han d’estar en la part posterior (control de volum, possible equalització/guany, entrada auxiliar)
\tAlimentació externa a 220V
La decisió ha estat una mica complicada, doncs els monitors de camp proper no són altaveus HiFi. Però fetes les proves oportunes estic content de l’elecció. Son 70W de potència en una sola caixa que pesa 10Kgs. No està gens malament. Si hi ha una segona versió de la rockola vull explorar els amplificadors i altaveus que vénen en els cotxes, i que funcionen a 12V,
The NE08 is a high resolution nearfield monitor with an exceptional good low end. Due to its 8″ LF woofer made of kevlar and the 1″ silk dome tweeter it’s a perfect partner for the budget oriented project studio and surround sound monitoring situations.
Features:2way active studio monitor 8" kevlar LF woofer and 1" HF silk dome tweeter Frequency range: 40Hz - 22 kHz Crossover frequency: 3.2 kHz Amp power rating LF: 70W Amp power rating HF: 70W Signal-to-noise: > 100dB Input jack: XLR or TRS Thermal, subsonic and overload protection Vinyl coated MDF enclosure
Arxiu de la categoria: Arcade
Hackejar una ROM de Gameboy
He tingut bastants problemes per emular els jocs de Gameboy a la Raspberry Pi. Finalment l’emulador Fednafen és el que funciona, tal i com es fa a Pimame. El món dels emuladors és bastant complicat. Per entendre com funciona una ROM per dins i com es programa un emulador que treballi amb aquestes ROMs s’ha d’estudiar l’arquitectura del Z80, conèixer l’ensamblador, i tècniques avançades de depuració amb llenguatge C. Però aquí anem a fer una cosa relativament senzilla.
Es tracta de fer un petit hack d’una rom de Gameboy. Es tracta de ficar un llibre a dins de la ROM, concretament ficar diferents articles i textos del gran filòsof català Francesc Pujols, aquell que va dir que que Els catalans aniríem pel món i ho tindríem tot pagat.
Parteixo d’una rom que ja és un llibre, un llibre en polonès: Ziarno_Prawdy_-_Book_by_Andrzej_Sapkowski_polish.gbc. Encara que no tinc ni punyetera idea de polonès, arrenco la rom amb l’emulador i la idea està clara: amb els botons pots navegar pels diferents capítols, pots anar a l’inici, i tens dos modes de lectura: línia a línia, o pàgina a pàgina. La idea és localitzar les posicions de memòria on està la informació rellevant, i substituir-ho per la informació (els bytes) que interessa.
Dic que aquest projecte és bastant senzill perquè tenim 5 capítols amb un tamany concret i m’he de limitar a aquestes posicions i blocs d’informació. Allò xulo seria poder ficar més capíols, de longitud variable, i poder navegar per tots els capítols. Però per fer-ho s’hauria de desensamblar el codi i entendre com funcionen els jumps als diferents capítols, i això sí que seria interessant i més difícil.
Bé, mans a l’obra. Faig servir la utilitat xxd com a lector de fitxers binaris, que dóna una sortida hexadecimal i a la part dreta es pot localitzar la informació textual rellevant.
0004040: 0000 0000 0000 0000 0000 0000 0000 0000 …………….
0004050: 2020 2020 2020 2020 2020 2041 6e64 727a Andrz
0004060: 656a 2053 6170 6b6f 7773 6b69 2020 2020 ej Sapkowski
0004070: 2020 2020 2020 2020 2020 2020 2020 2020
0004080: 2020 2020 205a 6961 726e 6f20 5072 6177 Ziarno Praw
0004090: 6479 2020 2020 2020 2020 2020 2020 2020 dy
En aquest bloc hem localitzar el títol i l’autor. El llibre es diu Ziarno Prawdy i l’autor és Adrzej Sapkowski (un nom ben polonès). La posició de l’autor comença a 405b (hex), que és 16475 bytes en decimal. I on acaba Prawdy és la posició 4091 hex = 16529. Per tant, són 16529-16475=54 bytes, que jo substituiré per “EL PENSAMENT I LA FILOSOFIA DE FRANCESC PUJOLS“. Amb aquesta tècnica hem de substituir el títol i autor, el menú, i els diferents capítols (hi ha 5 capítols).
Mostro un exemple de codi amb llenguatge C per substituir en un fitxer binari uns bytes per uns altres en una posició determinada. Un exemple senzill seria:
#include
#include
#includeint main()
{
int posicio = 10;
int tamany;char *str = “En un lugar de la Mancha”;
printf(“%d\”, strlen(str));
tamany = strlen(str);int counter;
FILE *ptr_myfile;ptr_myfile=fopen(“b.gbc”,”r+b”);
if (!ptr_myfile)
{
printf(“Unable to open file!”);
return 1;}
fseek(ptr_myfile,sizeof(char)*posicio,SEEK_SET);
fwrite(str, 1, sizeof(char)*tamany, ptr_myfile);fclose(ptr_myfile);
return 0;
}
Partint d’aquest exemple que funciona ja podem fer tota la substitució de les cadenes.
0004040: 0000 0000 0000 0000 0000 0000 0000 0000 …………….
0004050: 2020 2020 2020 2020 2020 2045 4c20 5045 EL PE
0004060: 4e53 414d 454e 5420 4920 4c41 2046 494c NSAMENT I LA FIL
0004070: 4f53 4f46 4941 2044 4520 4652 414e 4345 OSOFIA DE FRANCE
0004080: 5343 2050 554a 4f4c 5320 2020 2020 2020 SC PUJOLS
0004090: 2000 2020 2020 2020 2020 2020 2020 2020 .
00040a0: 492e 2042 494f 4752 4146 4941 0a0a 4c27 I. BIOGRAFIA..L’
00040b0: 6573 6372 6970 746f 722c 2070 6f65 7461 escriptor, poeta
00040c0: 2069 2066 696c c3b2 736f 6620 6361 7461 i fil..sof cata
00040d0: 6cc3 a02c 2046 7261 6e63 6573 6320 5075 l.., Francesc Pu
I el hack ha funcionat com pots veure (i llegir a la foto). En qualsevol cas, la Gameboy no és la millor consola per llegir llibres, i d’altra banda com era d’esperar els accents no funcionen. Pots descarregar el codi sencer a la wiki:
Arcade a la discoteca Cocoa de Mataró


El divendres passat vam llogar màquines arcade a la discoteca Cocoa de Mataró. Va ser una experiència interessant, les màquines van estar enceses des de les 12 fins les 6 del matí. La gent va xal·lar d’allò més amb els jocs clàssics. El públic era de vint-i-pocs, eren d’una altra generació, je, je. Ja ben entrada la nit, algun torrat mamporrejava el joystick amb totes les forces com si fos el canvi de marxes, en fi.
Es poden treure unes quantes conclusions. Per exemple, quan es tracta d’un event com ara aquest, amb poca llum i gent amb poca paciència, de res serveix oferir un catàleg de 1000 jocs i haver d’explicar una vegada i una altra com van els botons. Si amb sis botons ja era prou difícil, costa poc imaginar què passaria amb 9 botons i més jocs i emuladors. En aquest cas, allò simple és el millor.
Consoles de la infantesa: Temco (Pong)
Aquest últim Nadal vaig treure d’un calaix el joc del Pong que encara conservem des que érem petits. Es tracta del model Temco T-800 que els meus pares van portar d’Andorra, devia ser a finals dels anys 70, no puc recordar exactament l’any. En aquella època vam disfrutar molt amb el joc, era una autèntica novetat. Connectavem la consola (en aquella època no existia la paraula consola) a la tele en blanc i negre (les teles només eren en blanc i negre), i procedíem al ritual de la sintonització (per cercar el canal en què la visió era més nítida, sense soroll).
Per als meus germans i jo aquell joc, que vam jugar bàsicament a Bagà, era el Temco. No sabíem el que era el Pong. El PONG (http://ca.wikipedia.org/wiki/PONG) és un dels primers videojocs comercials i domèstics, que va popularitzar Atari allà per l’any 72. Poc més tard van sortir altres versions i llicències, com ara el Temco, que incorporava a part del Tennis, el joc del Hockey (el que pots veure a la foto) i del Squash.
A casa ja no disposem de tele amb entrada d’antena analògica, o sigui que vam haver d’anar a casa de la veïna per tal de què ens en deixés una. Per a la Maria i el Pere això de sintonitzar la tele i cercar el canal va ser una novetat. Val a dir que van xal·lar d’allò més jugant al Temco, i que de seguida li van agafar el tranquillo. Jugar al Temco va ser una de les activitats amb què vam amenitzar la nit de Cap d’Any. Vam fer una petita competició: quarts de final, semifinals i final. La final la vam jugar el Jan Santandreu i jo, que finalment va guanyar ell. A veure si puc organitzar un torneig més seriós de Temco amb amics i nebots.
Un dels propòsits per a aquest any 2015 serà fer un moble que incorpori una tele de tubo, i programar un emulador el més fidedigne possible al Temco. Serà el meu petit homenatge a aquestes consoles primitives. En propers posts hi haurà més informació al respecte. De moment he d’aconseguir una petita tele de tubo de 14 polzades. La tauleta ja la tinc, una tauleta rodona on hauré de fer un forat quadrat al mig per incorporar la tele, i tallar un vidre rodó. Amb dos potenciòmetres i un botó hauria de ser suficient per controlar el joc.
El sistema haurà de tenir un frontend per poder escollir els quatre jocs i les diferents opcions, i des del frontend llençar qualsevol dels quatre jocs.
Màquina de marcianitos. Projecte Pimame/PiPlay (Arcade bartop cabinet)
Un dels records de la meva infància eren les màquines de marcianitos que hi havia en els bars. De quan en quan aconseguíem 25 pessetes i podíem jugar a una partida. Aleshores, quan tenia 12 anys, no sabia ni què eren els jocs Arcade… per nosaltres eren les màquines de marcianitos, i prou. Amb el temps, evidentment, els jocs es van anar sofisticant en tots els nivells: gràfics, so,… Paral·lelament, a casa jugàvem al Spectrum, carregant els jocs des de les cintes de cassette. I alehores va arribar l’era del PC domèstic que ho va canviar tot.
Per als que som de la meva generació (40 i pico), les màquines Arcade dels bars representen tot un món de records i vivències associats a un món en què l’electrònica de consum ho estava canviant tot (rellotges digitals, cotxes teledirigits,…).
Han passat molts anys, el món dels videojocs ha evolucionat moltíssim, és una indústria tan potent com el cinema. Cada vegada la gent veu menys televisió i va menys al cine (cosa impensable fa temps), i la societat en què vivim es caracteritza per una gran varietat de dispositius connectats a Internet, amb una gran i diversa oferta d’oci.
Una sèrie de gent a l’entorn del projecte MAME (Multi Arcade Machine Emulator,) ha emulat les ROMs originals d’aquelles màquines Arcade a diverses plataformes, concretament al PC. Una ROM és el xip on estava el software (firmware) que feia córrer la màquina Arcade. Aquest software en codi màquina es pot traduir a línies de codi en altres plataformes i llenguatges de programació. Això és el que fan els emuladors. Per tant, ara tothom pot jugar als jocs dels anys ’70, ’80 i ’90 al seu PC. I així ho vaig fer fa uns tres anys des de la meva màquina Linux, quan vaig descobrir el projecte MAME i ja vaig pensar aleshores a construir una màquina Arcade.
En aquests tres anys també han passat moltes coses, i concretament l’eclosió del hardware lliure representats per dos projectes paradigmàtics com Arduino i la Raspberry Pi (entre d’altres). I el bo del cas és que el projecte MAME s’ha portat i optimitzat a la plataforma de la Raspberry Pi, amb totes les avantatges que això suposa de cara construir-se un moble Arcade (pressupost, espai, consum,…). Aquesta feina s’ha fet gràcies a Shea Silverman i al projecte PiMAME, que ara s’anomena PiPlay.
Així doncs aquest curs passat em vaig posar les mans a l’obra i per l’estiu ja tenia a punt el meu moble bartop amb més de 1000 jocs classificats per categories (plataforma, galeria, shooter, puzzle, fighting, …) i jugabilitat (preferits, molt bons, bons, dolents). El projecte és molt variat, que inclou entre d’altres:
- construcció del moble (tallar, pulir, pintar,…)
- configuració de la Raspberry Pi i de MAME
- programació d’un front-end propi (veure enllaç per a més detalls)
- interfície joystick-USB (veure enllaç per a més detalls). Tot i que funciona correctament aquesta solució, s’ha d’explorar la possibilitat de configurar el joystick i els 6 botons només amb els pins GPIO de la RPi. El resultat seria més senzill i ràpid d’implementar.
- font d’alimentació 12V-5V
- metacril·lat, adhesius
- matriu de LEDs per a la markee
- pantalla plana, conversor HDMI-VGA
- amplificador de so. La sortida de so en la Raspberry Pi no és massa bona, i això es nota a l’hora d’amplificar el so. En aquest aspecte falten més proves a veure si hi ha possibilitat d’obtenir un so més net.
Després de moltes hores de feina, calculo que el pressupost és d’uns 250 euros. La bona notícia és que hi ha marge per automatitzar/millorar tot el procés, per exemple utilitzant una màquina CNC per tallar les fustes, o construir mobles bartop de 3 en 3, en vistes a una possible comercialització.
Aquí pots veure el video del moble acabat.
Per a més informació:
Joanillo Arcade Frontend. Un simple frontend per a PiMAME/PiPLAY
Al final he decidit fer-me el meu propi front-end per a la màquina arcade que m’estic construïnt, basada en PiMAME / PiPLAY. La història és molt llarga, i ara no és temps d’explicar-la. El cas és que AdvMENU, que és el front-end proposat en el projecte PiMAME, a mi no em funciona amb la meva configuració de tecles i la interfície de joystick que em vaig fabricar en el meu dia, basat en V-USB. El cas és que no sóc la primera persona a la qual li és impossible la configuració correcta dels botons. Resumint, una qüestió que hauria de ser fàcil de resoldre es converteix en un problema irresoluble. Després de desestimar AdvMENU (i després de compilar des de les fonts la versió 2.7 i de modificar i modificar el fitxer advmenu.rc) vaig considerar la possibilitat d’instal·lar un altre front-end per a emuladors Arcade que es pogués instal·lar bé en la Raspberry Pi. Els requisits havien de ser que funcionés sota Linux/Raspberry Pi, i que no necessités el servidor X de la RPi (la qual cosa desestima el popular front-end Wahcade). Després d’analitzar les diferents solucions, la notícia dolenta va ser que vaig arribar a la conclusió de què hauria de programar el meu propi front-end… la qual cosa esdevé al final una notícia bona, doncs per fi tindria un front-end simple i eficient, amb només les funcionalitats que necessito, que funcioni amb la meva configuració dels botons, i que s’adapti al disseny i filtres de ROMs del meu gust.
El resultat és un codi C++ de 700 línies, que utiltiza SDL de forma nadiua, igual de bé en el portàtil que en la Raspberry Pi, on no necessita arrencar les X. Es pot navegar de forma fàcil per la classificació dels jocs (All Favourites, Bad, Good, Very good, Prefered), i per les categories dels jocs (Platform, Shooter, Gallery,…). El fitxer de configuració és molt simple, resources/romlist.txt, amb una línia per cada ROM. S’ha programat a raig, bastant ràpid, segur que hi ha coses a millorar, però la llista TODO ha quedat realment molt petita. Aquest emulador només està pensat per als jocs de MAME (mame4all), per tant algú que el vulgui utiltizar trobarà a faltar canviar d’emulador. De totes maneres, seria fàcil fer l’adaptació i disposar d’un botó per al canvi d’emulador.
Tanmateix, el bartop que estic construint es basa en la simplicitat (un sol joystick i només sis botons, que estan mapejats a les tecles ‘0’,…, ‘5’). I aquesta simplicitat queda reflexada en el codi font. Això fa que llençar una ROM i tornar al front-end sigui molt ràpid (molt més ràpid que amb AdvMenu), amb una millor experiència d’usuari. També s’ha aconseguit una solució elegant per anar a la consola de Linux, o per apagar la Raspberry Pi de forma correcta abans d’apagar l’interruptor.
En resum, un front-end per a MAME molt simple però amb un disseny correcte, que no té ni de bon tros totes les opcions del projecte AdvMENU, però que tampoc es troben a faltar.
Pots descarregar-te el codi font de:
http://wiki.joanillo.org/index.php/Fitxer:Joanillo_arcade_frontend.zip
I aquí tens un video demostratiu de com funciona el front-end i de les seves opcions bàsiques: