Gamoover

Si vous êtes nouveau, n'hésitez pas à vous présenter ici et à poser toutes vos questions, meme si elles vous paraissent ridicules... Gamoover regroupe une communauté de passionnés prêts à vous aider ! Bienvenue à vous ;)

Un projet sympa : Naomi Pi

Démarré par th_vador, Jeudi 27 Juin 2013, 22:07:08 PM

zebassprophet

j'ai un security chip et j'ai aucune galere à ce jour

juju49




:-)= :-)= :-)= :-)= :-)=

Pour en revenir au netbootPi

-Sans security chip, certains jeux sur Naomi se lançent et pas de soucis, mais d'autres pas...

-Avec security chip: Indispensable pour chihiro, et idem pour certains jeux Naomi 2 (Beach spikers  :D ) maintenant, plus de soucis

Je vous laisse, je retourne avec ma blonde  8)

Solkan

#178
Citation de: funkycochise le Mercredi 06 Août 2014, 13:41:25 PM
0. Préparatif

Ce dont vous avez besoin :



1. Un câble USB - micro USB pour l'alimentation,
2. Une carte SD,
3. Un câble ethernet croisé,
4. Un raspberry Pi,
5. Un écran LCD type adafruit chez dealextreme

et bien sur une naomi/naomi2/triforce/chihiro

1. Préparation de la carte SD

Tout d'abord récupérez l'image de la carte SD

Je vais expliquer la configuration sur mac OS X, mais le processus est le même sous Windows.

Afin de préparer la carte SD, j'utiliserai l'utilitaire Apple Pi Baker, plus facile à utiliser que dd. Sous Windows vous pouvez utiliser l'utilitaire Win32diskimager

Bizarre, en préparant ma carte SD (sous windows), j'obtient une partition de 56 Mo (dont 42 de libres) intitulée "boot" sur laquelle il y a ce qu'il faut mais impossible de la redimensionner.
Vous avouerez que 42 Mo, c'est un peu petit pour mettre les roms.

Quelqu'un a une idée du pourquoi de cette taille minuscule et de l'éventuelle condition pour redimensionner la partition ?

Et BTW, c'est quoi le compte root pour accéder en ssh à cette image ?
Solkan
"There is too much blood in my Coca-Cola System"

Mes Recherches : Marquee et PCB MK2, Konami Gyruss/Pooyan/Time Pilot/Yie Ar Kung Fu/Commando/Track & Field

Solkan

#179
FIXED avec un petit soft pour repartitionner la carte SD.

Donc, sous windows, il faut utiliser un soft comme "mini tool partition wizard" pour donner sa pleine taille à la partition système.

Et donc super pour le tuto; merci :) Chargement directe sur la naomi via netdim sans allumer le PC.

Ma config : Raspberry 2 B, kit écran DealxExtreme "AdaFruit-like", carte micro-SD 16 Go

Reste la question de l'accès ssh au Raspberry. Si quelqu'un a l'info, je la veux bien :)
Solkan
"There is too much blood in my Coca-Cola System"

Mes Recherches : Marquee et PCB MK2, Konami Gyruss/Pooyan/Time Pilot/Yie Ar Kung Fu/Commando/Track & Field

Nekoma


Solkan

Citation de: Nekoma le Mercredi 10 Février 2016, 18:34:16 PM
Tu as acheté le cable SSH?
C'est quoi le cable ssh ?
Moi, comme sur tous les linux, je me connecte au Raspberry en ethernet avec putty sur le port 22.
D'ailleurs il répond très bien à celà mais je reste bloqué sur l'authentification.
Si j'ai bien vu, c'est une Debian en plus, le système que j'utilise tout le temps.
Solkan
"There is too much blood in my Coca-Cola System"

Mes Recherches : Marquee et PCB MK2, Konami Gyruss/Pooyan/Time Pilot/Yie Ar Kung Fu/Commando/Track & Field

narugawa

Citation de: Solkan le Mercredi 10 Février 2016, 22:10:06 PM
C'est quoi le cable ssh ?
Moi, comme sur tous les linux, je me connecte au Raspberry en ethernet avec putty sur le port 22.
D'ailleurs il répond très bien à celà mais je reste bloqué sur l'authentification.
Si j'ai bien vu, c'est une Debian en plus, le système que j'utilise tout le temps.

Si c'est du debian :
"
ouvre un terminal puis passe en super utilisateur "su" ensuite : "apt-get install ssh"
puis "ssh" ensuite sur ton pc plus qu'à se loguer via un terminal sur ta machine ssh nomduserduraps@adresseipduraps -p 21  (ou 22 apparemment dans ton cas).

exemple : narugawa@192.168.0.10 -p 21

sinon je déconseille formellement l'utilisation du port 21 ou 22 si la machine est relié à internet ;)

funkycochise

le ssh sur le pi, ça doit être pi/pi si je me souviens bien.

Nekoma

Un pote a loi a pris un pack incluant pi, wifi, micro sd et boitier.

Il lui ont mise aussi un câble. GPIO<==>USB avec lequel il peux contrôler le pi.

Je suppose que l'avantage est de pouvoir configurer le réseau de façon très spécifique, sans avoir a se servir du réseau en question pendant le processus.

Pour le coup, il n'en a aucune utilité, vu qu'il branche un écran dessus.

Solkan

#185
Citation de: narugawa le Mercredi 10 Février 2016, 23:05:17 PM
Si c'est du debian :
"
ouvre un terminal puis passe en super utilisateur "su" ensuite : "apt-get install ssh"
puis "ssh" ensuite sur ton pc plus qu'à se loguer via un terminal sur ta machine ssh nomduserduraps@adresseipduraps -p 21  (ou 22 apparemment dans ton cas).

exemple : narugawa@192.168.0.10 -p 21

sinon je déconseille formellement l'utilisation du port 21 ou 22 si la machine est relié à internet ;)
Merci, je connais, c'est un peu mon job  8)

PS : Sur les quelque centaines de serveurs Linux que j'ai eu à gérer dans ma vie, je n'ai jamais vu du ssh sur le 21 (utilisé par le ftp en général). Je vais faire ca pour le prochain junior qui arrive chez nous : mettre le ssh sur le 21 et le ftp sur le 22  ;D

PS2 : On parlais ici de raspberry et pas de Debian de manière générale. Si tu avais bien lu, il semble déjà y avoir un serveur ssh puisque la framboise répond lorsqu'on l'interroge là dessus  :D
Solkan
"There is too much blood in my Coca-Cola System"

Mes Recherches : Marquee et PCB MK2, Konami Gyruss/Pooyan/Time Pilot/Yie Ar Kung Fu/Commando/Track & Field

spectroman

Et "su" c'est mal ;D "sudo" tu utlisera :D

narugawa

#187
Citation de: spectroman le Jeudi 11 Février 2016, 09:11:49 AM
Et "su" c'est mal ;D "sudo" tu utlisera :D

Sur une debian de base sudo n'est malheureusement pas installé, mais je plussoi ta remarque ;)

Solkan

#188
Ayant deux et bientôt trois Naomi en netboot à la maison et ces Naomi ayant des jeux cibles qui leur sont propre (une NUC, une Naomi Gun, ...), le piforcetools.py ne me convient pas des masses.
En effet, pour booter chacune des machines, il me faut sélectionner la cible et ensuite choisir le jeu dans une liste commune à toutes les machines (plutôt longue).

J'ai donc ré-écrit une version de piforcetools.py qui pourrait plutôt être représenté comme un menu où les systèmes cibles sont disponibles avec les flèches horizontales et les jeux spécifiques en vertical :

Naomi 1 <--------> Naomi 2 <--------> Gun Cab <--------> Race Cab <--------> Commands
|                  |                  |                  |                   |
-> DeadOrAlive2    -> Exzeal          -> Conf Mission    -> Initial D        -> Ping Naomi 1
-> Dolphin Blue    -> Ikaruga         -> Lupin the S     -> Crazy Taxi       -> Ping Naomi 2
-> Metal Slug 6    ....               ....               ....                ....
-> Spawn
-> Virtua Tennis
....

Une petite vidéo vaut mieux qu'un long discours.
https://youtu.be/icO1robhGtU


Ceci étant, je ne connais pas vraiment les raspberry, ni même le python alors si vous avez des suggestions pour développer facilement sans devoir tester en aveugle sur un vrai raspberry, je suis preneur  ;D

J'en suis encore au débugging et à la gestion des imprévus mais voilà déjà une version un peu stable (le ping ne fonctionne pas et les répertoires de roms doivent exister). Pour remplacer piforcetools.py :

#!/usr/bin/python
# Written by TravistyOJ (AKA Capaneus)
# 20160309 - Modified by Solkan (for Gamoover.net)

import os, collections, signal, sys, subprocess, socket
import triforcetools
from Adafruit_CharLCDPlate import Adafruit_CharLCDPlate
from time import sleep

# Add or remove as many endpoints as you want
targetsIp = ["10.0.0.26", "10.0.0.24", "10.0.0.25", "10.0.0.27"]
targetsName = ["NUC 1", "NUC 2", "Gun Cab", "Race Cab"]
targetsRomDir = ["/boot/roms/", "/boot/roms/", "/boot/roms/Gun/", "/boot/roms/Racing/"] # Set absolute path of rom files ending with trailing /
commands = []

# Building commands list
for index in range(len(targetsIp)):
   commands.append("Ping "+targetsName[index]+"\n "+targetsIp[index])

# Define a signal handler to turn off LCD before shutting down
def handler(signum = None, frame = None):
   lcd = Adafruit_CharLCDPlate()
   lcd.clear()
   lcd.stop()
   sys.exit(0)
signal.signal(signal.SIGTERM , handler)

# Determine hardware revision and initialize LCD
revision = "unknown"
cpuinfo = open("/proc/cpuinfo", "r")
for line in cpuinfo:
   item = line.split(':', 1)
   if item[0].strip() == "Revision":
       revision = item[1].strip()
if revision.startswith('a'):
   lcd = Adafruit_CharLCDPlate(busnum = 1)
else:
   lcd = Adafruit_CharLCDPlate()
lcd.begin(16, 2)

lcd.clear()
lcd.message(" Piforce Tools\n Ver. Solkan")
sleep(2)

pressedButtons = []
gamesList = []
curr_menu_index = 0
curr_ip = 0

# Try to import game list script, if it fails, signal error on LCD
try:
   from gamelist import games
except (SyntaxError, ImportError) as e:
   lcd.clear()
   lcd.message("Game List Error!\n  Check Syntax")
   sleep(5)
   games = {}

# Build game dictionary of game files that can be found
for index in range(len(targetsIp)):
   present_games = {}
   for key, value in games.iteritems():
       if os.path.isfile(targetsRomDir[index]+value):
          present_games[key] = value
   gamesList.insert(index, present_games)

# message first endpoint and first game at startup
lcd.clear()
lcd.message("* "+targetsName[curr_menu_index])
sleep(1)
lcd.clear()
iterator  = iter(collections.OrderedDict(sorted(gamesList[curr_menu_index].items(), key=lambda t: t[0])))
selection = iterator.next()
previous  = None
lcd.clear()
lcd.message(selection)

while True:

   # Handle SELECT
   if lcd.buttonPressed(lcd.SELECT):
       if lcd.SELECT not in pressedButtons and selection != None:
           pressedButtons.append(lcd.SELECT)
           if selection[:5] == "Ping ":
               lcd.clear()
               lcd.message(" Pinging\n " + selection[6:20])
               response = os.system("ping -c 1 " + selection[6:20])
               lcd.clear()
               if response == 0:
                   lcd.message("SUCCESS!")
               else:
                   lcd.message("Netdimm is\n unreachable!")
               sleep(2)
               lcd.clear()
               lcd.message(selection)
           else:
               lcd.clear()
               lcd.message("Connecting...")
               try:
                   triforcetools.connect(targetsIp[curr_menu_index], 10703)
               except:
                   lcd.clear()
                   lcd.message("Error:\nConnect Failed")
                   sleep(1)
                   lcd.clear()
                   lcd.message(selection)
                   continue
               lcd.clear()
               lcd.message("Sending...")
               lcd.setCursor(10, 0)
               lcd.ToggleBlink()
               triforcetools.HOST_SetMode(0, 1)
               triforcetools.SECURITY_SetKeycode("\x00" * 8)
               triforcetools.DIMM_UploadFile(targetsRomDir[curr_menu_index]+gamesList[curr_menu_index].get(selection))
               triforcetools.HOST_Restart()
               triforcetools.TIME_SetLimit(10*60*1000)
               triforcetools.disconnect()
               lcd.ToggleBlink()
               lcd.clear()
               lcd.message("Transfer\nComplete!")
               sleep(5)
               lcd.clear()
               lcd.message(selection)
   elif lcd.SELECT in pressedButtons:
       pressedButtons.remove(lcd.SELECT)

   # Handle LEFT
   if lcd.buttonPressed(lcd.LEFT):
       if lcd.LEFT not in pressedButtons:
           pressedButtons.append(lcd.LEFT)
           lcd.clear()
           curr_menu_index -= 1
           if curr_menu_index < 0:
               curr_menu_index = len(targetsIp)
               lcd.message("* Commands")
               iterator = iter(commands)
           else:
               lcd.message("* "+targetsName[curr_menu_index])
               iterator  = iter(collections.OrderedDict(sorted(gamesList[curr_menu_index].items(), key=lambda t: t[0])))
           sleep(1)
           selection = iterator.next()
           previous  = None
           lcd.clear()
           lcd.message(selection)
   elif lcd.LEFT in pressedButtons:
       pressedButtons.remove(lcd.LEFT)

   # Handle RIGHT
   if lcd.buttonPressed(lcd.RIGHT):
       if lcd.RIGHT not in pressedButtons:
           pressedButtons.append(lcd.RIGHT)
           lcd.clear()
           curr_menu_index += 1
           if curr_menu_index == len(targetsIp):
               lcd.message("* Commands")
               iterator = iter(commands)
           else:
               if curr_menu_index > len(targetsIp):
                   curr_menu_index = 0
               lcd.message("* "+targetsName[curr_menu_index])
               iterator = iter(collections.OrderedDict(sorted(gamesList[curr_menu_index].items(), key=lambda t: t[0])))
           sleep(1)
           selection = iterator.next()
           previous  = None
           lcd.clear()
           lcd.message(selection)
   elif lcd.RIGHT in pressedButtons:
       pressedButtons.remove(lcd.RIGHT)

   # Handle UP
   if lcd.buttonPressed(lcd.UP):
       if lcd.UP not in pressedButtons and previous != None:
           pressedButtons.append(lcd.UP)
           if curr_menu_index < len(targetsIp):
               iterator = iter(collections.OrderedDict(sorted(gamesList[curr_menu_index].items(), key=lambda t: t[0])))
           else:
               iterator = iter(commands)
           needle = iterator.next()
           selection = previous
           previous = needle
           while selection != needle and selection != previous:
               previous = needle
               try:
                   needle = iterator.next()
               except StopIteration:
                   break
           lcd.clear()
           lcd.message(selection)
   elif lcd.UP in pressedButtons:
       pressedButtons.remove(lcd.UP)

   # Handle DOWN
   if lcd.buttonPressed(lcd.DOWN):
       if lcd.DOWN not in pressedButtons:
           pressedButtons.append(lcd.DOWN)
           previous = selection
           try:
               selection = iterator.next()
           except StopIteration:
               # back to first element
               if curr_menu_index < len(targetsIp):
                   iterator = iter(collections.OrderedDict(sorted(gamesList[curr_menu_index].items(), key=lambda t: t[0])))
               else:
                   iterator = iter(commands)
               selection = iterator.next()
           lcd.clear()
           lcd.message(selection)
   elif lcd.DOWN in pressedButtons:
       pressedButtons.remove(lcd.DOWN)
Solkan
"There is too much blood in my Coca-Cola System"

Mes Recherches : Marquee et PCB MK2, Konami Gyruss/Pooyan/Time Pilot/Yie Ar Kung Fu/Commando/Track & Field

ian57

#189
yop l'adresse de l'img a changé :  http://downloads.travistyoj.com/piforcetools.img.zip

moi ya un piface http://www.farnell.com/datasheets/1765332.pdf et c'est sur bus SPI et non I2C... va encore falloir que je bidouille ;)

bon ben va falloir modifier l'image et les scripts pour faire fonctionner ce piface... il à l'ai bien et il est en super promo chez kubii à 14.40 http://www.kubii.fr/site-entier/229-piface-control-display-afficheur-lcd-3272496000179.html

bon je vais mettre le nez dans le code de piforcetools.py ... mais comme c'est bien fait, il ne devrait pas y avoir trop de boulot en effet les 2 classes Adafruit_CharLCDPlate (I2C) et pifacecad (SPI) se ressemble pas mal ça devrait donc etre plus simple... wait and see

cf : https://piface.github.io/pifacecad/example.html#basic-usagepiface-control-display-afficheur-lcd-3272496000179.html
"Après faut pas te flageller pour notre debilisme :D" Sushy18 à ian57









ian57

Hello,

j'ai attaqué la conversion du programme piforcetools.py  (pour le module LCD IC2) en pifacetools pour le module piface en SPI dont je dispose avec la lib pifecad.

C'est ici https://github.com/ian57/piforcetools/blob/master/pifacetools.py

pour l'instant c'est pas fonctionnel j'ai un bug dans l'enchainement des menus... mais rien d'insurmontable. j'avance doucement.

Le python est pas super propre, je connais pas ce langage... (du coup ya rien d'objet)

"Après faut pas te flageller pour notre debilisme :D" Sushy18 à ian57









Gnomon

Bonjour,

Quelqu'un sait si l'écran adafruit est compatible avec le PI 3 ?
Bornes :Blast city, Naomi Universal Cabinet, Cocktail Taito, Racecab Outrun SP
Flippers : TFTC, Phantom of the Opera, Hurricane