まこと の ブログ

MaKoTo no burogu — Journal de bord…

Aller au contenu | Aller au menu | Aller à la recherche

Mot-clé - Logiciel libre

Fil des billets - Fil des commentaires

jeudi, 16 avril 2020

Créer une vidéo à partir d'une sauvegarde de partie MAME

Comme je le racontais il y a 6 ans, il est possible d'enregistrer des parties de jeux sur MAME, de rejouer la partie et si besoin d'enregistrer une vidéo de celle-ci.

J'en avais profité pour publier une page dédiée.
Comme je trouvais les manipulations en ligne de commande fastidieuses, j'avais écris un script bash pour faciliter l'opération, mais ça restait de l'austère ligne de commande.

  • Un peu moins austère, j'ambitionnais de créer une interface graphique pour faire cela, et c'est donc aujourd'hui que je publie enfin un script python3 qui permet donc en quelques clicks de rejouer une partie et d'en générer une vidéo au format mp4/h264, le tout de manière automatisée.

Le code de ce logiciel est disponible ici, mais il vous manquera l'exécutable MAME que j'ai compilé.

  • J'ai donc réunis tout le nécessaire dans le fichier zip en annexe de ce billet.[1]

Une fois extrait, il suffit d'exécuter install.sh afin d'installer les paquets pré-requis.
Ensuite exécuter Lanceur_Mame-inp2video4GnuLinux.sh qui a pour tâche de démarrer le logiciel que j'ai nommé pompeusement Mame-inp2video4GnuLinux.

  • Voici une capture d'écran…


C'est un peu moins austère que je disais…

  • À toute fin utiles, et comme il faudra bien ça pour alimenter le logiciel, voici la commande qui permettra d'enregistrer la partie de jeu, valable pour Windows® ou GNU/Linux :
mame nom_de_la_rom -record ma_partie.inp

Attention, il faut juste se contenter de jouer et de quitter l'émulateur en fin de partie, le fichier inp étant dés lors disponible, généralement dans le dossier inp.
En effet il semble qu'utiliser les menu mame ou les raccourcis clavier (par ex pour faire un save_state) soit incompatible avec un enregistrement correct de la partie de jeu dans le fichier inp.

  • Enfin, puisqu'il faut évidemment le préciser, le Logiciel Mame-inp2video4GnuLinux fonctionnera, depuis n'importe quel ordinateur équipé de GNU/Linux de la famille Debian (Ubuntu18.04 testé ok).

Il n'est pas nécessaire d'avoir MAME installé sur cette machine.
Vous aurez besoin cependant du fichier ROM et bien entendu du fichier INP correspondant.
Laissez vous ensuite guidé par l'interface graphique…

  • Je suis débutant dans l'exercice, suis ouvert à l'apprentissage, et ne recevrais donc aucune critique non-constructive. Vous pouvez bien entendu me faire part des problèmes d'exécutions qui pourraient advenir.

Note

[1] Ci-dessous…

dimanche, 5 avril 2020

Seafile, comment vider la corbeille ?

Si comme moi vous vous êtes trouvé désemparé devant la corbeille à fichier de Seafile, qui malgré vidage et suppression, ne libérait toujours pas son espace disque, Et bien c'est… Normal.

  • En effet, j'ai fini par apprendre qu'il fallait exécuter le garbage collector, alias Seafile GC (seaf-gc.sh) pour supprimer réellement les fichiers après avoir vidé la corbeille.

J'avais pourtant recherché après ce genre de fonction, mais sans jamais trouver ni de bouton cliquable dans l'interface web, ni d'info dans la documentation…
Et pourtant l'info existe bien, mais faut croire qu'elle n'est pas suffisamment mise en avant, l'obscure intitulé Seafile GC n’encourageant pas à faire cliquer le visiteur occasionnel…

  • Bref, comme je n'avais aussi rien trouvé de clair via les moteurs de rechercher web, voici un petit script pour Yunohost (les chemins et commandes service étant sinon différentes), à lancer manuellement ou à faire exécuter périodiquement par cron.
#!/bin/bash

echo "Poids total des fichiers contenu dans Seafile"
du -sh /home/yunohost.app/seafile-data/

echo "Arrêt du service"
#/opt/yunohost/seafile/seafile-server-7.0.5/seafile.sh stop
yunohost service stop seafile

#echo "État de la corbeille"
#/opt/yunohost/seafile/seafile-server-7.0.5/seaf-gc.sh –dry-run

echo "Vidage de la corbeille"
/opt/yunohost/seafile/seafile-server-7.0.5/seaf-gc.sh

echo "Poids total des fichiers contenu dans Seafile, après vidage corbeille"
du -sh /home/yunohost.app/seafile-data/

echo "Relance du service"
yunohost service start seafile

Merci @jcvassort pour l'info !

dimanche, 1 mars 2020

Mame en vrai 15 kHz, le retour !

Près de 7 ans plus tard, est-il toujours possible de modifier Linux afin qu'on puisse brancher un écran cathodique, comme une TV ou un écran d'arcade, autrement appelé moniteur 15 kHz, sur un ordinateur muni d'une carte graphique ATI ?
La démarche décrite dans mon billet de l'époque pour patcher 15 kHz, puis compiler un noyaux Linux est-elle toujours valable ?

  • C'est ce que j'ai eu besoin de valider afin de pouvoir mettre à jour l'OS de ma borne et utiliser les dernières versions de mame.

Le temps passe à une vitesse folle. À peine a-t'on un système jouable en place qu'il est déjà sur la sellette du remplacement, et fatigué par ce manège, j'avais fini par laisser courir… Après tout, ma borne fonctionne, pas besoin d'y toucher !
Jusqu'au moment où l'on voudrait bien pouvoir profiter des dernières innovations de mame.
Problème, l'OS (debian8) est trop vieux pour supporter SDL2 requis maintenant par mame, et une fois debian10 réinstallé, impossible de faire fonctionner le noyaux Linux 3.2 patché 15 kHz compilé à l'époque.
Malheureusement une recherche rapide sur les forums d'alors me fit comprendre que les patches Linux n'étaient plus publié et disponible pour les versions récentes…
Occupé ailleurs j'avais un peu mis ça de côté, et puis un jour, au détour de la consultation des statistiques du blog, j'ai découvert qu'on « linkait » gentiment mon billet sur github.
Le dénommé Doozer proposait donc des patches pour le noyaux v5, et dés la première lecture du document, je compris que pas mal de choses avaient changé, dans la façon de faire fonctionner ce noyau patché, et plus tard dans la manière de le compiler.
Avant de continuer à raconter ma vie, on va déjà faire ça !

Compilation de Linux patché @15kHz :

Voici donc la nouvelle routine de compilation au goût du jour !

  • 1 — Prérequis :

Installer debian 10 Buster, puis les paquets nécessaires à la compilation :

apt update
apt upgrade
apt install build-essential bc kmod cpio flex libncurses5-dev dpkg-dev debconf-utils debhelper fakeroot zlib1g-dev rsync


  • 2 — Préparatifs :

Récupérer les sources et les extraire dans un dossier de travail : /home/user/kernel5.5

mkdir /home/user/kernel5.5
cd /home/user/kernel5.5
wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.5.tar.gz
tar xvf linux-5.5.tar.gz

Se rendre dans le dossier crée :

cd linux-5.0.1

Configurer le kernel :

make olddefconfig

Cette commande va chercher la configuration du kernel actuel (booté) et met toutes les nouvelles options en « par défaut ».
Il faut donc s'assurer que le debian actuel est démarré sur un noyaux 5.4 au moins.

Éditer le fichier .config, afin de vérifier que cette ligne ne contient rien entre les guillemets (sinon la compilation plantera dés les premières minutes) :

CONFIG_SYSTEM_TRUSTED_KEYS = ""

Exécuter ce script permet de ne pas compiler un noyau de debug, et donc de gagner du temps :

./scripts/config -d CONFIG_DEBUG_INFO


Lire la suite...

samedi, 10 août 2019

Makoto no Akedo V2.1 (… ou pas !)

Suite de l'étude précédente :

Récemment est donc sortit Debian 10, alias « Buster », l’occasion pour moi de mettre à jour ma machine Arcade avec une version de Mame plus actuelle .
Alors autant l’annoncer tout de suite :

- Installation traditionnelle, OK.
- Création d’un LiveCD/USB, échec total.

Voyons donc voir ce qui fonctionne…

Installation manuelle :

Donc une simple commande dd suffira à créer la cléUSB bootable, et si l’ordinateur est configuré pour démarrer en mode UEFI c’est un menu d’install UEFI qui sera proposé.
De la même manière si l’ordi est ancien ou est configuré en mode Legacy, le menu d’install sera proposé « à l’ancienne ».

Une fois debian installé, j’ai donc tout configuré avec ma tambouille habituelle avec ces quelques modifs :

apt install pekwm libsdl2-2.0-0 libsdl2-ttf-2.0-0 libqt5widgets5 libgtk2.0-0 libqtgui4 libgconf-2-4 xserver-xorg-video-all xfonts-base xinit x11-xserver-utils xterm alsa-utils sshfs acpid sudo firmware-linux-nonfree psmisc console-setup console-setup-linux libsdl1.2debian libsdl-ttf2.0-0 unzip
  • Mais petite nouveauté, j’ai ajouté le paquet pekwm qui est un décorateur de fenêtre.

Et vous ne devinerez jamais à quoi il sert… Non, vraiment !
Pour se remettre en contexte, il faut relire la fin du précédent post où j’évoquais l’impossibilité pour moi d’utiliser un Mame compilé avec SDL2. Alors le soucis c’est que maintenant, le choix n’est plus offert de rester un version SDL1.2, il me fallait donc absolument résoudre ce problème de joystick qui ne fonctionne pas.

  • J’ai donc installé les pré-requis à la compilation indiqué dans la documentation,
sudo apt-get install git build-essential python libsdl2-dev libsdl2-ttf-dev libfontconfig-dev qt5-default
  • Téléchargé les sources de la version que j’ai choisis de Mame,
wget https://github.com/mamedev/mame/releases/download/mame0208/mame0208s.zip

Lire la suite...

- page 1 de 15