Samedi 20 octobre 2007

mame1.JPG

C'est parti pour ce 2ème Tutoriel, dédié à la réalisation d'une version "perso" de MAME, plus adaptée à un usage privé que la version officielle.

Nous allons donc supprimer tous les messages d'avertissements au lancement d'une ROM imparfaite.

Le MAME résultant pourra être utilisé sous AtomicFE en mode ScreenSaver avec lancement de jeu aléatoire sans aucun problème.

Gardez à l'esprit que si un jeu rame, plante, n'a pas de son ou ne se lance pas du tout, ça sera votre faute, vous n'aviez qu'à trier vos roms, n'utiliser que des roms à l'émulation parfaite, ou complète (avec CHD et Samples), l'émuler avec autre chose que MAME et j'en passe. MAME ne vous préviendra plus.

C'est parti


Récupérer le code source

Rendez-vous sur le site http://mamedev.org/ dans la section Download / Latest release.

mame2.JPG

Téléchargez la dernière version du code source (son nom se termine toujours par un 's'), le plus simple est de choisir la version compressée auto-exécutable

mame3.JPG

Installer le code source

Décompressez le source-code dans un répertoire temporaire. Pour simplifier je mets ça dans c:/mamesrc

mame4.JPG

mame5.JPG

L'arborescence du source-code est prête, une chose à repérer pour plus tard, le sous-répertoire src/emu

mame6.JPG

Récupérer les outils de développement

Toujours sur le site Mamedav, allez dans la section Development / Development tools

mame7.JPG

Cette section du site indique très précisément les étapes à suivre pour compiler MAME, je n'ai rien inventé.

Pour résumer, télécharger le compilateur MINGW

mame8.JPG

Installer les outils

Comme pour le source-code, l'auto-extracteur vous demande la destination, j'ai choisi c:/mingw

mame9.JPG

L'arborescence du compilateur est en place.

mame10.JPG

Notez bien le répertoire que j'ai mis en surbrillance. Il contient les headers des fonctions C++ utilisées dans le source-code, mais il manque 6 fichiers spécifiques à Windows, des fichiers DirectX

Ces fichiers nous allons les trouver dans un fichier .ZIP complémentaire, téléchargeable sur la même page du site Mamedev.

mame11.JPG

Ouvrez le fichier ZIP, il contient deux sous-répertoires. include et lib.

mame12.JPG

Regardez dans le sous-répertoire lib, et sélectionnez les fichiers suivants :

mame21.JPG

Décompressez les dans le répertoire c:/mingw/include que nous avons créé tout a l'heure.

Attention ! Précisez bien à votre outil de décompression de ne pas recréer l'arborescence, de manière à ce que les fichiers .h rejoignent leurs camarades, et non un sous répertoire include dans include !

mame22.JPG

Voilà, le compilateur est prêt.

Localiser le fichier source

Les modifications à apporter à MAME concernent l'interface utilisateur de l'émulateur (user interface). C'est donc dans le fichier ui.c que nous allons tout casser. Vous le trouverez dans c:/mamesrc/src/emu.

mame16.JPG

Modifier le source

Ouvrez le fichier ui.c avec un éditeur de texte quelconque. Le bloc-Notes fera l'affaire.

Il y a plusieurs façons de contourner les messages, mais je présente ici la plus simple, ne nécessitant aucune connaissance en programmation.

Cherchez le morceau de source suivant :

 int str = options_get_int(mame_options(), OPTION_SECONDS_TO_RUN);
 int show_gameinfo = !options_get_bool(mame_options(), OPTION_SKIP_GAMEINFO);
 int show_warnings = TRUE;
 int state;

 /* disable everything if we are using -str */
 if (!first_time || (str > 0 && str < 60*5) || Machine->gamedrv == &driver_empty)
  show_gameinfo = show_warnings = show_disclaimer = FALSE;

Vous avez deux solutions. Soit vous mettez deux lignes en commentaire, soit vous les supprimez purement et simplement.

dans le premier cas ça donnera ça (en vert les lignes mises en commentaires ou supprimées)

/* int str = options_get_int(mame_options(), OPTION_SECONDS_TO_RUN);*/
 int show_gameinfo = !options_get_bool(mame_options(), OPTION_SKIP_GAMEINFO);
 int show_warnings = TRUE;
 int state;

 /* disable everything if we are using -str */
/* if (!first_time || (str > 0 && str < 60*5) || Machine->gamedrv == &driver_empty)*/
  show_gameinfo = show_warnings = show_disclaimer = FALSE;

C'est tout.

Fermez le fichier en enregistrant les modifications.

Compiler

Reste à compiler un nouveau MAME.EXE. Pour cette opération, nous allons descendre à la cave (sous MS-DOS).

Ouvrez une ligne de commande et tapez cd /mamesrc, puis appuyez sur entrée.

mame17.JPG

Ajoutez le compilateur au chemin d'exécution en tapant set path=%path%;c:/mingw/bin

mame19.JPG

Enfin lancez la compilation en tapant la commande mingw32-make
C'est parti pour 20 minutes de serbo-croate accéléré.

mame20.JPG

20 minutes plus tard (en moyenne), si n'avez pas raté une marche, dans le répertoire c:/mamesrc vous trouverez un beau MAME.EXE tout neuf, d'une trentaine de MegaOctets.

MAME.EXE se suffit à lui même. Vous pouvez le placer dans un répertoire vierge, (C:/MAME par le plus grand des hasards).

Pour l'initialiser, c'est à dire générer un fichier MAME.INI par défaut que vous pouvez modifier à loisir, tapez la commande

mame -createconfig

mame23.JPG

A vous de jouer.

par Pizza publié dans : Tutoriel
ajouter un commentaire commentaires (0)    créer un trackback recommander
Samedi 20 octobre 2007
Sans-titre.JPG

Ca rigole pas chez Mamedev.
On les comprend, avec plus de 6000 ROMS émulées dont un bon 15-20% qui le sont encore avec des imperfections (son ou image incorrects), il fallait bien à un moment ou à un autre imposer un message à l'écran au lancement de ces roms, traduisant leur frustration de recevoir encore et encore les mêmes remontées de bugs pour des jeux dont ils savent pertinemment qu'il sont mal émulés

Mais le monde est ainsi fait, il y aura toujours un boulet pour poster sur leur forum "Hé les gars, l'émulation de SoulEdge est buguée", trois lignes au dessus d'un autre boulet ayant posté la veille "BUG ! SoulEdge mal émulé", lui même ayant posté 5 jours après le boulet number One qui mentionnait le même problème, etc.

Multiplié par 20% de 6000 roms... ça en fait des boulets.

C'est ainsi que l'équipe de Mamedev à inventé la transmission de frustration dans le temps et l'espace.

Désormais, il est impossible, même par le truchement des cases à cocher dans l'interface graphique et des paramètres d'initialisation dans MAME.INI, de désactiver ces messages. Le boulet se prend donc maintenant le message de status incorrect de sa rom à chaque fois qu'il la lance, lui rappelant que si il revient encore poster sur le forum Mamedev que ce jeu à un problème, il va perdre ses cheveux, se faire écraser par un bus et tout un tas de trucs vaudou

Notez que c'est la même chose avec le message de Copyright (du moins lors du premier lancement d'une rom seulement), qui rappelle que l'utilisation d'une rom implique d'être l'heureux possesseur de la rom originale, soir environ deux kilomètres carré de hangars pleins de borne d'arcade.

Bref, la frustration de Mamedev, et le sentiment injuste d'un travail mal compris, se retrouve par magie transféré chez bibi, qui du coup ne peut plus programmer son FrontEnd pour qu'il lance une rom aléatoire en guise d'économiseur d'écran, car dans 20% des cas, la borne stoppe sur un bel écran noir maculé de rouge (ci dessus)

Je vous propose donc une solution sous forme de Tutoriel, à savoir compiler son propre MAME.EXE sans ces messages frustrants, car le source-code de Mame est mis à disposition par l'équipe de Mamedev au même titre que les versions compilées.

Gardez à l'esprit que cette solution est réservée à votre usage personnel, N'en faites pas une version distribuable, par respect pour la santé mentale des développeurs de Mame qui ont bien assez de boulot avec la version officielle.
par Pizza publié dans : Blabla
ajouter un commentaire commentaires (0)    créer un trackback recommander
Mercredi 17 octobre 2007
joystick.jpg

Grâce à un habitué du forum Gamoover, j'ai pu récupérer un lot de deux Joysticks HAPP Ultimate neufs pour 20€

On ne pouvait rêver mieux, entre HAPP USA qui ne prend pas de commande en dessous de 25$ (+ les frais de ports), Starcab en France en éternelle rupture de stock (ou qui a abandonné la mise à jour de son site internet) et Ultimarc UK qui ne propose que des modèles Japonais à boule ou des modèles à poire mais magnétiques.

Le montage ne devrait pas poser de problème, on trouve des didacticiels photo comme s'il en pleuvait
par Pizza publié dans : Hardware
ajouter un commentaire commentaires (0)    créer un trackback recommander
Mardi 16 octobre 2007
oeufs-windows-200.jpg

Le but de ce tutoriel n'est pas de vous apprendre à installer Windows bien sûr, mais de recenser l'ensemble des petits détails qui permettrons de rendre XP aussi léger, rapide et invisible que possible, de manière à bénéficier de la robustesse du noyau et du système de fichier NTFS

Attention on marche sur des oeufs.

Préparation du disque-dur

Qui dit machine dédiée, dit disque rasé.
De préférence, si vous optez pour de la récup, choisissez un disque-dur d'au moins 80Go, car l'ensemble des roms MAME (15Go) et des éventuels CHD (55Mo) rempliront le tout sans problème.
Si vous choisissez de stocker les snaps de chaque jeu au format vidéo, comptez 15Go de plus.

Optez pour un formatage en deux partitions.
La partition de boot devra faire 5Go tout au plus, car elle contiendra XP, et la ou les version de MAME, ainsi que les émulateurs additionnels (DAPHNE, ZINC, MODEL2).
De plus, une sauvegarde de cette partition (de type Ghost, DriveImage, etc) sur la seconde, permettra de réinstaller la borne en 20mn en cas de crash grave de la première partition.

Installation de XP

Hormis le choix du type de système de fichiers (NTFS), rien de particulier.
Suivant, Suivant, Suivant, Terminer
N'installez que le strict nécessaire après XP, à savoir les pilotes vidéo, son, et éventuellement ceux du Chipset ou de la carte réseau, si il ne sont pas reconnu par Windows XP nativement.
Une fois Windows installé vous pouvez même débrancher le lecteur CD, lecteur de disquette, etc, vous y gagnerez en RAM et en consommation électrique.

Inutile de surcharger la bête avec des Windows Update, des antivirus, etc. Etant donné que la borne sera "coupée du monde" niveau sécurité. La seule chose que j'ai ajouté est le Framework .net 2.0, car j'ai développé un ou deux programmes spécifiques en .net, dont un qui permet de lancer un jeu au hasard.

Supression du superflu

La on commence les choses interessantes.

Dans un premier temps, désactivez tous les services inutiles. Par exemple le planificateur de tâches, le gestionnaire de scanner, de téléphonie et j'en passe.

Concrètement, voici les seuls services qui tournent sur ma mamecab.

services.jpg

Tous les autres ont été désactivé avec succès (passage en mode manuel, et Arrêt, un reboot complet et un test réseau pour vérifier).

- Gestionnaire de comptes de sécurité
- Journal des événements
- Lanceur de processus serveur DCOM
- Services Terminal Server
- Plug-and-Play
- Appel de procédure distant (RPC)
Ces six là je ne peux pas les désactiver, le bouton Arrêter est grisé. J'en déduit qu'ils sont obligatoires

- Audio Windows
Dépend de votre carte son, celui là c'est mon Audigy

- Client DHCP
Peut être désactivé, je le garde par comodité pendant les phases de réglages. A terme, la borne aura son plug CPL embarqué pour la mettre en réseau et mettre à jour le système de n'importe ou
Si vous ne mettez jamais la borne en réseau ou si vous fixez les paramètres en dur, désactivez le aussi

- Détection matériel noyau
J'ose pas le toucher celui là  Cheesy

- Infrastructure de gestion Windows
Alors celui là j'ai essayé
Au reboot un bel écran bleu Dump mémoire. Du coup, je l'ai réactivé

- NVIDIA Display Driver Service
Dépend de votre carte vidéo. J'aurai même pu m'en passer, car XP intégrait un pilote en natif pour la Ti4200

- Server
Facultatif. Je le garde car il gère les partages réseau, ça me permet de mettre à jour le système à distance sans ouvrir la borne

- Système d'événements de COM+
Celui-ci se réactive tout seul au reboot malgré le réglage en arrêt

Optimisation des performances

L'optimisation se résume à désactiver encore du superflu

Vérifiez qu'aucun programme ne se lance au démarrage, dans la base de registre, dans les sections
[HKEY_LOCAL_MACHINE/Software/Microsoft/Windows/Currentversion/Run]
et
[HKEY_CURRENT_USER/Software/Microsoft/Windows/Currentversion/Run]

Ensuite
Désactivez les Mises à jour automatiques Windows Update
Désactivez la restauration automatique du système (Bouton droit / Propriété sur le poste de travail, onglet Restauration)
Désactivez le Rapport d'erreur (idem, mais onglet Avancé)

Toujours dans la catégorie performances, on peut désactiver le "mini-defrag" que Windows fait à chaque boot, vu que la borne n'est jamais modifié

Dans la base de registre, section [HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Dfrg/BootOptimizeFunction]
"enable"="N"

Enfin, vous pouvez lancer un DEFRAG final, puis éventuellement, exécutez une fois le programme BOOTVIS de Microsoft (il ne fait pas parti de Windows, vous devrez le télécharger), pour optimiser l'ordre de boot des services et drivers.

Grâce à ces modifications, j'arrive à un Windows XP qui occupe 61Mo en RAM, Explorer compris, ce qui fait 52Mo une fois l'Explorer supprimé et remplacé par un autre programme (AtomicFE en l'occurence).

Sur une machine récente ça doit donner dans les 10-15 secondes grand max entre la pression du bouton Power et le lancement du jeu, vu que j'arrive à 22 secondes sur mon vieux Celeron 1,3GHz 448Mo Sdram PC100.

Masquage de l'interface

Pour aller un peu plus loin dans la transformation PC / MAMECAB, l'idéal est de cacher complètement Windows.

- Pour remplacer la couleur bleu pâle de fond d'écran au chargement par un bel écran noir
Dans la base de registre, section [HKEY_USERS/.DEFAULT/Control Panel/Colors]
"Background"="0 0 0"

- Masquer l'ouverture de session
Et plus généralement les messages d'état du système au démarrage
"Windows est en cours de démarrage"
"Chargement de vos paramètres personnels"

et à la fermeture
"Enregistrement de vos paramètres"
"Fermeture de Windows"


Lancer REGEDIT, et dans la section [HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/policies/system], créer une valeur DWORD nommée "DisableStatusMessages" et lui donner la valeur 1 
 
Personnalisation
nti_bug_fck
Dernière étape, remplacer le logo de démarrage Windows XP

logo.jpg

La solution la plus basique est de faire disparaître le logo
Editer le fichier C:BOOT.INI et ajouter /noguiboot à la fin de la ligne de chargement de Windows XP

Exemple : 

[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)/WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)/WINDOWS="Microsoft Windows XP Professionnel" /noexecute=optin /fastdetect /noguiboot

Pour ma part, j'ai opté pour un écran de chargement relooké grâce à Bootskin de Stardock, et un logo MAME trouvé ici.

Quand au papier-peint Windows, inutile de vous conseiller :)
par Pizza publié dans : Tutoriel
ajouter un commentaire commentaires (3)    créer un trackback recommander
Mardi 16 octobre 2007
Windows 98 est un fruit de mer...de

J'avais beau essayer de me convaincre du contraire, devant les performances de chargement  supersoniques que j'avais réussi à atteindre, les semaines de test et de fignolage passant ont été émaillées de petites contrariétés qui mises bout à bout ne peuvent  avoir leur place dans une machine qui au final, sera dépourvue de clavier et de maintenance.

Je citerai pèle-mêle

- Parfois, Windows se ferme, mais le PC ne s'éteint pas (malgré les patchs correctifs officiels de l'époque), ce qui oblige à couper le courant

- Parfois, à l'allumage de la borne, j'avais droit à un Scandisk automatique, sans explication, alors que l'utilisation précédente s'était déroulé sans la moindre anomalie. Je ne vais pas reprocher à Windows de faire le ménage, mais c'est moche, et on perd le coté "borne qui n'est pas un PC"

- Plus cruel, deux fois j'ai eu droit au lieu d'arriver sous Windows, à un beau message d'erreur, dans le style "impossible de charger windows, veuillez réinstaller", avec fichiers croisés et autres joyeusetés FAT32. (Heureusement le disque-dur a deux partitions, dont une de sauvegarde ou j'ai l'image de la première).

Bref, il faut se rendre à l'évidence, sans noyau NT point de salut, ce qui m'a laissé le choix entre 2000 et XP
ERREUR-SYSTEME.gif

Après pas mal de recherche sur Internet, j'ai obtenu quelque chose de plutôt pas mal, et qu'à celà ne tienne, j'en ai fait le premier Tutoriel de ce blog
par Pizza publié dans : Software
ajouter un commentaire commentaires (0)    créer un trackback recommander
Lundi 15 octobre 2007

MAME propose deux techniques de rendu

DirectDraw ou Direct3D

Jusqu'à présent, j'avais été incapable de déterminer lequel de ces deux types de rendu était le plus rapide (la différence doit se jouer à pas grand chose), donc à défaut de trancher, j'avais mis DirectDraw parce que j'avais lu "C'est mieux"

Bon...

Ca c'était avant que par hasard, je ne lance une ROM avec un Artwork en haute définition

Le résultat est sans appel.

Out-Run en DirectDraw

-outrunddraw.JPG

Out-Run en Direct3D

-ourtund3d.JPG

En DirectDraw, les artwork haute définition sont dégradés à la résolution du jeu, ou quelque chose du genre, c'est illisible.

A voté

par Pizza publié dans : Software
ajouter un commentaire commentaires (0)    créer un trackback recommander
Mercredi 10 octobre 2007
Aujourd'hui c'était un jour son

J'ai récupéré grâce à un collègue de bureau (merci JP), un kit 4.1 en parfait état de fonctionnement.

kit41.JPG

C'est un Creative Labs SoundWorks FPS 1500. Les satellites délivrent 6W et le caisson 17W. Amplement suffisant pour la symphonie de bip et de boum qui m'attend.

Le fin du fin, l'arrière du caisson permet de régler le volume des basses (très important car l'habitacle en bois de la borne fera déjà caisson à lui tout seul) et cerise sur le gâteau, il dispose d'une télécommande filaire analogique

IMG-1718.JPG

Tout à fait ce que je cherchais, le cable de 2m de long permettra de déporter le réglage du volume à l'extérieur de la borne (sous le ControlPanel, à l'arrière, enfin ya plus qu'à choisir)

Quant aux satellites, je pense pouvoir faire sauter la façade avant pour les intégrer sous le Marquee sans sortir tout le haut parleur de son boitier. J'en démonterai un ce weekend pour voir.
par Pizza publié dans : Hardware
ajouter un commentaire commentaires (0)    créer un trackback recommander
Dimanche 7 octobre 2007
car-rosco.gif
Gnii gniii gniii !

J'ai  enfin terminé une animation de chargement convenable

Plutôt que mon animation capturée du film, dont on ne voyait pas grand chose au final, j'ai créé un Gif animé (du même style que Bubble Bobble) composé de 7 frames qui passent en boucle au 25/100ème de seconde.


essai640-25cs.gif

Je suis parti des fichiers sources de Rogue Synapse en 800*600

Une fois les 7 bitmaps réalisés, j'ai redimensionné le tout avec AcdSee et converti les fichiers en Gif 256 couleurs. L'animation a été réalisée avec UnFREEz. Partant de là, j'ai créé l'AVI final en 4fps avec Beneton Movie GIF, en compression Radius Cinepak.

Le résultat est pas mal

Dans la foulée, voici donc la première mouture de mon layout complet, animation comprise ^^
par Pizza publié dans : Software
ajouter un commentaire commentaires (0)    créer un trackback recommander
Blog : Sport sur over-blog.com - Contact - C.G.U. - Rémunération en droits d'auteur avec TF1 Network - Signaler un abus