Friday, 30 May 2014

Codes des ROMs et signification

Ma GamesCab étant terminée, il me faut à présent y mettre des jeux. Je me suis très vite rendu compte que pour un jeu, plusieurs ROMs étaient disponible. Chaque ROM contenait son nom suivit d'un code spécial.
Je me suis donc mis a cherché ce que signifiait ces codes afin de pouvoir trouver la ROM que je voulais pour chaque jeu.
Cette liste n'est surement pas exhaustive mais elle est, pour l'instant, suffisante:


CODES STANDARDS:

[a] Alternate
[b] Bad Dump
[f] Fixed
[h] Hack
[o] Overdump
[p] Pirate
[t] Trained
[T] Translation
(-) Unknown Year
[!] Verified Good Dump
(M#) Multilanguage (# of Languages)
(###) Checksum
ZZZ_ Unclassified
(??k) ROM Size
(Unl) Unlicensed


CODES SPÉCIAUX

Gameboy
[C] Color
[S] Super
[BF] Bung Fix


Super Nintendo
(BS) BS ROMs
(ST) Sufami Turbo
(NP) Nintendo Power


Genesis
(1) Japan
(4) USA
(5) NTSC Only
(8) PAL Only
(B) non USA
[c] Checksum
[x] Bad Checksum
[R-] Countries


Atari
(PAL) Euro Version


GBA
[hI??] Intro hacks


Coleco
(Adam) ADAM Version


NeoGeo Pocket
[M] Mono Only


NES/FC
(PC10) PlayChoice 10
(VS) Versus
[hFFE] FFE Copier fmt


Playstation
SCES = Published by Sony Computer Entertainment Europe
SCED = SCEE published demos
SLES = Third/second party published games
SLED = Third/second party published demos
PBPX = In some pack-in demos


CODES PAYS

(1) Japan & Korea
(A) Australia
(B) non USA (Genesis)
(C) China
(E) Europe
(F) France
(F) World (Genesis)
(FC) French Canadian
(FN) Finland
(G) Germany
(GR) Greece
(HK) Hong Kong
(H) Holland
(4) USA & Brazil NTSC
(J) Japan
(K) Korea
(NL) Netherlands
(PD) Public Domain
(S) Spain
(SW) Sweden
(U) USA
(UK) England
(Unk) Unknown Country
(I) Italy
(Unl) Unlicensed

NOTES CODES STANDARDS

[a] - Il s'agit simplement d'une version alternative d'une ROM. Beaucoup de jeux ont été republié pour corriger les bugs ou même d'éliminer les codes Game Genie (Oui, Nintendo déteste ce dispositif).
[b] - Un mauvais dump ou un dumper défectueux a été utilisé (mauvaise connexion).
[f] - Un jeu  modifié de sorte à ce qu'il fonctionnera mieux sur un émulateur.
[h] - Quelque chose dans cette ROM n'est pas tout à fait comme elle devrait être. Souvent, une ROM piraté a simplement un header modifié ou a été activé afin de fonctionner dans les différentes régions. Il peut y avoir une intro modifiée, un code de triche ou utilisation amusante.
[o] - Une image de ROM overdumped a plus de données que la cartouche original. L'information supplémentaire ne signifie rien et est retiré de la véritable image.
[t] - Un trainer est un code spécial qui s'exécute avant que le jeu ne commence. Il permet d'accéder à des menus spéciaux.
[!] - Bon dump.

NOTES CODES SPÉCIAUX

SNES
(BS) -
Ces ROMs japonaises ont été distribuées à travers un système de satellite au Japon connu sous le nom Satellaview diffusion. Ils ont été transmis avec une émission de télévision qui a été connectée au jeu d'une certaine façon. Ces jeux sont jouables uniquement pendant le spectacle.
(ST) - Le dispositif Sufami Turbo permet à deux cartouches GameBoy d'être branchées sur la SNES.
(NP) - Nintendo Power a publié des jeux disponibles uniquement pour ses abonnés. La plupart de ces ROMs sont japonaises.
 
Genesis
(1) - Les cartouches avec ce codes fonctionnent sur les deux machines japonaises et coréennes. (4) - Bien que ce code est techniquement identique à un code (U), c'est un format d'en-tête plus récent et indique que le jeu fonctionne sur des machines Américaines et Brésiliennes.
(B) - Ce code de pays indique que la cartouche fonctionne sur n'importe quelle machine non US. 
[c] - Ce code représente une cartouche avec des checksum défectueux connus.
 
GameBoy
[BF] -
Bung a publié une cartouche programmable compatible avec la GameBoy qui pouvait contenir toutes les données de jeux. Cependant, de nombreux jeux ne fonctionnent pas sur Bung  v1.0 et doivent être «corrigée».
 
Nintendo
PC10 - Le PlayChoice 10 était une unité d'arcade qui faisait fonctionner des copies exactes de jeux NES dans une borne d'arcade. Les machines ont un choix de 10 jeux à choisir et pour environ 3 minutes le prix était de  25 cents. 
VS - Le système Versus est un hardware similaire aux machines de PC10, mais permettait de jouer à plusieurs.

Tuesday, 29 April 2014

Rapsberry Pi licence MPEG-2

Afin de pouvoir afficher les vidéos encodée au format mpeg-2, il faut avoir la licence. Cette licence s'achète directement sur le site Raspberry.

Voici les commande ssh à taper:
1) Ouvrir le terminal
2) Taper: ssh root@192.168.1.xxx
The authenticity of host '192.168.1.xxx (192.168.1.xxx)' can't be established.
RSA key fingerprint is xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx.
Are you sure you want to continue connecting (yes/no)? 


3) Taper: yes
Warning: Permanently added '192.168.1.xxx' (RSA) to the list of known hosts 

4) Taper le mot de passe. openelec est le mot de passe par défaut.
5) Puis taper la commande: cat /proc/cpuinfo
processor           : 0
model name
          : ARMv6-compatible processor rev 7 (v6l)
BogoMIPS
            : 2.00
Features
            : swp half thumb fastmult vfp edsp java tls
CPU implementer     : 0x41
CPU architecture    : 7
CPU variant         : 0x0
CPU part            : 0xb76
CPU revision        : 7

Hardware            : BCM2708
Revision            : 000f
Serial              : XXXXXXXXXXXXXXXX
 

Entrer le n° de série sur la page du site Raspberry.

Une fois le code reçu, il faut rentrer les lignes suivantes dans le fichier config.txt; fichier qui se trouve à la racine de la carte SD: 
decode_MPG2=xxxxxxxxxx
decode_WVC1=xxxxxxxxxx

Pour vérifier si les codec sont actifs, une fois la carte réinsérée dans le Raspberry-PI, il faut taper lese lignes suivantes an SSH afin d'avoir le status:
vcgencmd codec_enabled MPG2 
vcgencmd codec_enabled WVC1

Configuration openelec sur un Rapsberry Pi

A la mise en route (installation de la version 3.2.4) le Wizard va nous aider à faire la configuration de base. Une fois cette étape passée et après la mise à jour automatique des différents add-on, voici ce qu'il faut faire:

Configurer l'apparence

Aller dans Système > Paramètres > Apparence
Ensuite, dans Thèmes
Décocher Afficher les flux RSS (afin de stopper les flux RSS, gourmand en CPU)
Puis dans Région
Région = Suisse
Pays fuseau horaire = Switzerland
Et enfin dans Listes de fichiers
Décocher Afficher l'accès au répertoire parent

Configurer la vidéo

Aller dans Système > Paramètres > Vidéo
Puis dans Médiathèque
Cocher Grouper les films en saga

Configurer la Météo

Aller dans Système > Paramètres > Météo
  • Télécharger le Add-on Yahoo! Weather
  • Sélectionner Service d'informations météo
  • Sélectionner Plus
  • Sélectionner Yahoo! Weather
  • Sélectionner l'endroit et valider 

Configuration générale

Aller dans Système > Paramètres > Services
Puis dans Général modifier le Nom du dispositif
et dans Télécommande > Autoriser le contrôle de XBMC par des programmes distants
 

Mise à jour automatique

Aller dans Système > OpenELEC
Mise à jour automatique > auto


Comment overclocker le Rapsberry Pi

Certaines suites media-center tels que Xbian et Raspbmc donnent accès aux réglages d'overclocking dans l'interface XBMC. Sur OpenELEC, il faudra ouvrir et modifier le fichier config.txt situé sur la partition système.

Éditer config.txt à travers une connexion SSH:
(Secure Shell (SSH) est une fonctionnalité de Linux qui permet d’ouvrir une session terminal à partir d’une ligne de commande d'un ordinateur hôte. Par défaut SSH est activé dans OpenELEC.)
Dans le Terminal taper:
ssh root@192.168.1.xxx
puis, si necessaire: yes

En cas d'erreur
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Taper la commande ssh-keygen -R 192.168.1.xxx ça devrait régler le problème et relancer la commande ssh
Le mot de passe par défaut est openelec

Le dossier /flash est en lecture seule. Il faut donc d'abord taper la commende: mount /flash -o remount,rw
Puis cd dans le dossier /flash et ouvrez le fichier config.txt  pour le modifier, avec la commande nano config.txt

Voici les trois commandes à taper:
XBMC:/ # mount /flash -o remount,rw
XBMC:/ # cd /flash
XBMC:/flash # nano config.txt

Une fois le fichier config.txt ouvert, faites défiler le texte jusqu'à la section intitulée Overclocking settings
################################################################################ 
# Overclocking settings 
# WARNING: Do not change/enable if you do not know what you are doing! 
# The System may become unstable or you can have data corruption or 
# you can lose your warranty if you set wrong settings 

# please read: http://elinux.org/RPi_config.txt#Overclocking_configuration ################################################################################

Juste en dessous, OpenELEC fournit des paramètres d'overclocking recommandées:
# Overclock mode settings. 

# default recommended values are: arm_freq | core_freq | sdram_freq | over_voltage
# no overclocking : 700 | 250 | 400 | 0 
# mode 'Modest' :   800 | 300 | 400 | 0 
# mode 'Medium' :   900 | 333 | 450 | 2 
# mode 'High' :     950 | 450 | 450 | 6 
# mode 'Turbo' :   1000 | 500 | 500 | 6

Il existe, en fait, quatre paramètres que  pour overclocker Raspberry Pi: arm_freq, core_freq, sdram_freq, et over_voltage. On peut régler uniquement les paramètres que l'on souhaite modifier, le reste sera aux fréquances par défaut ("pas d'overclocking"). Attention, l'overclocking peut réduire la durée de vie de de l'appareil. Le niveau «modeste» est suffisant pour un bon fonctionnement, et ce, sans générer une chaleur excessive supplémentaire. Modifier les lignes comme suit:
arm_freq=800 
core_freq=300 
# sdram_freq=400 
# over_voltage=0

Puis taper Ctrl+X pour quitter et Y pour sauvegarder les modifications

Puis taper reboot

Saturday, 21 December 2013

GAME CAB 1.1 - Game Controller USB - Simplification

Suppression du port pour le programmateur et optimisation de schéma pour la connectique des boutons et des joystick de ma borne d'arcade
Ce Schéma a été produit avec Fritzing

Typhon:

Sur ma plaque de prototypage ça fonctionne bien. Les tests sur la version précédente étaient bon. Je vais lancer la production des deux plaques dont j'aurais besoin au final.

Marériel:
Nbr. Type Informations
1 Ceramic Capacitor boitier 100 mil [THT, multilayer]; capacité 100nF; voltage 6.3V
1 Electrolytic Capacitor boitier 100 mil [THT, electrolytic]; capacité 10µF; voltage 6.3V
1 Crystal boitier THT; fréquence 16 MHz; type crystal; éspacement des broches 5.08mm
1 2.2k Ω Resistance boitier THT; tolérence ±5%; bands 4; résistance 2.2kΩ; éspacement des broches 400 mil
2 Ceramic Capacitor boitier 100 mil [THT, multilayer]; capacité 22pF; voltage 6.3V
2 Zener Diode boitier 300 mil [THT]; breakdown voltage 3.6V; type Zener; power dissipation 0.5W; numéro du composant 1N4732A
2 68 Ω Resistance boitier THT; tolérence ±5%; bands 4; résistance 68Ω; éspacement des broches 400 mil
1 ATMega8 boitier DIL
10 Screw terminal - 2 pins boitier THT; Taille du trou 1.0mm,0.508mm; broches 2; éspacement des broches 0.1in (2.54mm)
1 USB connector boitier THT; connector shape USB-B



Fuses:
Low: 0xd9
High: 0xbf

Ext. Crystal/Res High Freq. Start-up Time: 16k + 64ms
Brown-out detection enabled
Brown-out level VCC = 2.7V
Boot Flash size = 1024 words Start address $0c00
SPI enabled




Saturday, 2 November 2013

Adaptateur N64 to GC 1.1

Prototypage de l'adaptateur (le firmeware a été brûler avec n64_to_wii-1.4.hex):


Installation de l'émulateur Wii64 avec son forwarder, afin d'avoir une chaine sur l'écran d’accueil. Pour cela il faut:
- The Homebrew Channel
- YAWMM (Yet Another Wad Manager Mod)
- Wii64 1.1 et son forwarder

Je pars du principe que The Homebrew Channel et YAWMM sont déjà installé. Il existe plein de tutoriaux sur le net, de plus YAWMM ne pourra être lancé que si The Homebrew Channel est installé (il doit être lancé depuis The Homebrew Channel ).

Décompresser Wii64 1.1 et son forwarder. Ensuite, il faut copié le dossier apps/wii64 et son contenu sur la carte SD de la Wii. Le répertoire wii64, qui contient roms et saves, doivent être copier à la racine de la carte SD de la Wii. Le fichier Wii64 Forwarder - WN64 [IOS58+AHBPROT].wad doit, quant à lui, être copié dans le répertoire wad, à la racine de la carte SD.

Une fois la carte remise dans la Wii, démarrer la Wii, aller dans The Homebrew Channel et lancer YAWMM. Depuis là installer le wad add-in d'avoir une chaine pour Wii64.

Une fois terminé, on teste:


Parfait. 

Maintenant, je finalise le typhon:



Installation d'une distrib. Openelec sur un Rapsberry Pi

J'ai finalement reçu mon deuxième Rapsberry Pi. Je vais pouvoir créer un deuxième Media Center pour le salon (j'ai installé le premier dans mon bureau).

Comme pour mon premier Rapsberry, j'opte pour une distribution Openelec. Cette version a l'avantage de gérer le CEC (Consumer Electronics Control, une des spécifications du HDMI qui permet à des appareils compatibles HDMI-CEC de se "piloter" entre eux). 

Tous ce dont j'ai besoin c'est:
  • La carte Rapsberry Pi (dans son boitier).
  • Une alimentation micro-USB.
  • Un câble HDMI.
  • Une carte SD.
  • La distribution Openelec pour Rapsberry Pi (http://openelec.thestateofme.com/). Prendre le fichier *.img.zip le plus récent.
Une fois le fichier téléchargé, voici les différentes opérations à suivre sous Mac OS:

1) Formatage de la carte SD.

  • Ouvrir l'utilitaire de disque.
  • Selectionner la carte SD.
  • Cliquer sur l'onglet Effacer.
  • Cliquer sur le boutton Effacer.
 
2) Copie de la distribution sur la carte SD.

  • Avant tout, il faut décompresser le fichier *.img.zip, si ce n'est pas déjà fait. 
  • Ouvrir le Terminal
  • Au prompt, taper la commande : diskutil list
  • Ça doit donner quelque chose comme ça:
/dev/disk0
   #:                       TYPE NAME
                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *1.0 TB     disk0
   1:                        EFI                         209.7 MB   disk0s1
   2:                  Apple_HFS Macintosh HD            999.3 GB   disk0s2
   3:                  Apple_Boot Recovery HD            650.0 MB   disk0s3
/dev/disk1
   #:                       TYPE NAME
                    SIZE       IDENTIFIER
   0:     FDisk_partition_scheme
                        *3.9 GB     disk1
   1:                 DOS_FAT_32 XBMC                    3.9 GB     disk1s1 

/dev/disk3
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:     Apple_partition_scheme                        *2.0 TB     disk3
   1:        Apple_partition_map                         32.3 KB    disk3s1
   2:                 Apple_HFSX Copies de sauvegarde... 2.0 TB     disk3s2



  • Là, il s'agit de ne pas se planter. 
          1) Dans la liste ci-dessus, la carte SD est disk1.  
          2) On va utiliser la commande Unix dd (Data Destroyer) en mode SUDO :
              SUDO dd if=/Users/[User ID]/Downloads/r12823.img of=/dev/disk1
          3) J'ai obtenu l'erreur suivante :  dd: /dev/disk1: Resource busy 
          4) Il faut lancer la commande suivante : diskutil umountDisk disk1 
          5) Puis il faut relancer la commande dd en mode SUDO.

3) Mise à jour du système.
J'en profite pour mettre à jour mon système existant. Pour cela il suffit de copier les fichiers KERNEL, KERNEL.md5, SYSTEM et SYSTEM.md5 dans le répertoire Update et au prochain redémarrage, le système se mettra à jour.

Wednesday, 30 October 2013

Brûler un firmeware sur une puce ATMEGA8

J'utilise un ISP (In-System Programming) bas de gamme (usbasp) mais qui fait parfaitement bien l’affaire.

Pour référence, je met la connectique:

Pour faire simple on va brancher le connecteur USB sur l'ordinateur pour qu'il alimente le µC et au travers du connecteur ISP.
On peut alors vérifier au moyen d'un multimètre si on a bien 5V entre les pin 7 et 8 de l'ISP et entre les pin 7 et 8 du µC (Atmega8) également.


Maintenant on va tester si le programmateur fonctionne, et donc s'il voit le µC qui lui est connecté par l'ISP.

Par exemple en lisant la mémoire flash de l'atmega8
sudo avrdude -p m8 -P /dev/parport0 -c usbasp -U flash:r:-:i -E noreset

Il devrait répondre ainsi :
avrdude: WARNING: -E option not supported by this programmer type
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.00s
avrdude: Device signature = 0x1e9307
avrdude: reading flash memory:
Reading | ################################################## | 100% 3.16s
avrdude: writing output file "<stdout>"
:00000001FF
avrdude: safemode: Fuses OK
avrdude done.  Thank you. 


Super !! Ça fonctionne !

Un peu d'explication :
sudo, car on a besoin d'accéder à la ressource matérielle du port parallèle. 
-p m8, indique le modèle de µC.  
-P /dev/parport0, spécifie le port sur lequel est connecté le programmateur (port parallèle).  
-c usbasp, indique le nom du programmateur.  
-U flash:r:-:i 
-E noreset, pour s'adresser à la mémoire flash du µC en mode lecture.
 
Programatin de la Puce : 
Reste à programmer le µC pour y mettre le fichier .hex 
sudo avrdude -p m8 -c usbasp -U flash:w:/"PATH"/"FILE".hex 

Ce qui renvoie :
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.00s
avrdude: Device signature = 0x1e9307
avrdude: NOTE: FLASH memory has been specified, an erase cycle will be performed
         To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file "/"PATH"/"FILE".hex"
avrdude: input file /"PATH"/"FILE".hex auto detected as Intel Hex
avrdude: writing flash (1898 bytes):
Writing | ################################################## | 100% 1.16s
avrdude: 1898 bytes of flash written
avrdude: verifying flash memory against /"PATH"/"FILE".hex:
avrdude: load data flash data from input file /"PATH"/"FILE".hex:
avrdude: input file /"PATH"/"FILE".hex auto detected as Intel Hex
avrdude: input file /"PATH"/"FILE".hex contains 1898 bytes
avrdude: reading on-chip flash data:
Reading | ################################################## | 100% 0.81s
avrdude: verifying ...
avrdude: 1898 bytes of flash verified
avrdude: safemode: Fuses OK
avrdude done.  Thank you. 
Super !! 

Mais... Il manque une étape cruciale, la programmation des bits fusibles. En effet, sans cela l'oscillateur @12Mhz du montage ne sera pas pris en compte par le µC qui continuera d'utiliser son oscillateur interne.

Les valeurs appropriée pour mon projet sont:
ATMEGA8 builds: high byte = 0xc9, low byte = 0x9f 
 
Donc j'envoie la ligne suivante: 
sudo avrdude -p m8 -P /dev/parport0 -c usbasp -Uhfuse:w:0xc9:m -Ulfuse:w:0x9f:m 

Ce qui donne :
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.00s
avrdude: Device signature = 0x1e9307
avrdude: reading input file "0xc9"
avrdude: writing hfuse (1 bytes):
Writing | ################################################## | 100% 0.01s
avrdude: 1 bytes of hfuse written
avrdude: verifying hfuse memory against 0xc9:
avrdude: load data hfuse data from input file 0xc9:
avrdude: input file 0xc9 contains 1 bytes
avrdude: reading on-chip hfuse data:
Reading | ################################################## | 100% 0.00s
avrdude: verifying ...
avrdude: 1 bytes of hfuse verified
avrdude: reading input file "0x9f"
avrdude: writing lfuse (1 bytes):
Writing | ################################################## | 100% 0.01s
avrdude: 1 bytes of lfuse written
avrdude: verifying lfuse memory against 0x9f:
avrdude: load data lfuse data from input file 0x9f:
avrdude: input file 0x9f contains 1 bytes
avrdude: reading on-chip lfuse data:
Reading | ################################################## | 100% 0.00s
avrdude: verifying ...
avrdude: 1 bytes of lfuse verified
avrdude: safemode: Fuses OK
avrdude done.  Thank you.
 
Il ne reste plus qu'à tester....