Accueil Ti-Gen Foire Aux Questions Chat sur le chan #tigcc sur IRC
Liste des membres Rechercher Aide
Bienvenue Invité !   Se connecter             Mes sujets   
Administrer
0 membre(s) et 1 visiteur(s) actif(s) durant les 5 dernières minutes Utilisateurs actifs : Aucun membre + 1 visiteur
Avant de poster sur le forum, il y a des régles de bases à respecter pour une bonne entente et un respect de tous.
Veuillez lire la charte du forum.
  :: Index » Forum Ti68K » Betas et WIPs » Backgammon avec link USB (25 réponse(s))
./POST DE DEPART (post n°0)   Marquer comme non lu.
Kevin Kofler Ecrit le: Dimanche 31 octobre 2004 à 22:33 Déconnecté(e)    Voir le profil de Kevin Kofler Envoyer un email à Kevin Kofler Visiter le site WEB de Kevin Kofler Envoyer un message privé à Kevin Kofler  


J'ai enfin réussi à faire marcher le link USB. Voici une bêta de Backgammon l'utilisant: Backgammon USB BETA 12. Cette version deviendra Backgammon 2.02.

Pour les programmeurs, voici les informations techniques en anglais:
Some notes about the USB: It is very hard to synchronize the USB link properly. There are 2 ways to transfer something:
* transfer without waiting: This is easy, just use USB_SendData and USB_ReceiveData. There are no host/client considerations here, the routines work for both sides. But they only wait up to some fixed timeout in the seconds range. This probably works fine for games which continuously transfer something (such as Ice Hockey 68k), but for turn-based games such as Backgammon, the receiving calculator will time out while waiting for input from the sending calculator.
* transfer with waiting: This gets tricky. For the waiting, DetectReceiveInterface(FALSE); has to be used on the receiving side and DetectUSB(); on the sending side (and then you use USB_SendData and USB_RecvData just as in the non-waiting case), but you need to reset the USB link before switching sides. See the notes about DetectReceiveInterface below.
Note that resetting the link and detecting it all over again takes some time, so you should avoid it when there is nothing to actually wait for. And worse, waiting where there is no real wait might even cause synchronization issues. So make sure you use waiting if and only if there is something to wait for.

Here's the preliminary documentation of the routines:
unsigned char DetectLinkInterface(void); (0x8d2572)
Detects if the USB link is usable. Returns 1 (USB preferred) if it is and 2
(legacy DBus IO preferred) if it isn't. This routine uses DetectUSB first,
and then runs a complex test transfer to double-check. This test transfer
needs to be handled on the receiving side as well, so it is usually easier
to just use DetectUSB.

short DetectUSB(void); (0x94a174)
Quickly detects if the USB link is usable. Returns 0 if USB is available,
or a non-zero error code if it isn't.

unsigned char DetectReceiveInterface(short allowLIO); (0x8d25a4)
Waits for a calculator to connect on either the USB or the LIO interface.
Returns:
* 0 if something is detected on the USB link.
* 2 if allowLIO is non-zero, nothing is detected on the USB link and
  something is detected on the LIO link.
* 3 if interrupted by the user ([ON] key).
If you want to wait for something to be received on the USB link,
DetectReceiveInterface(FALSE) is the function to use, but there's a catch:
only one calculator can use DetectReceiveInterface for each transfer. (USB is
a host/client protocol.) You absolutely MUST call USBReset on both calculators
before using DetectReceiveInterface on the other calculator. This is very much
unlike the LIO interface, which is peer-to-peer. Also, the other calculator
MUST call DetectUSB to synchronize with a DetectReceiveInterface call. To sum
up, for a transfer which is synchronized by the sender (such as a move in a
turn-based game), the sending calculator should call: USBLinkClose();
USBLinkReset(); DetectUSB(); USB_SendData(src,size,2000);, the receiving
calculator should call: USBLinkClose(); USBLinkReset();
DetectReceiveInterface(FALSE); USB_RecvData(src,size,2000);.

short USB_SendData(const void *buffer, size_t size, long timeout); (0x949b86)
Sends size bytes from buffer over the USB link. For "timeout", try 2000. (I
am not sure this is actually a timeout. AMS always uses 2000, so you should
do the same.) Returns 0 if successful, some non-0 error code otherwise.

short USB_RecvData(void *buffer, size_t size, long timeout); (0x949c7e)
Receives size bytes into buffer from the USB link. For "timeout", try 2000. (I
am not sure this is actually a timeout. AMS always uses 2000, so you should
do the same.) Returns 0 if successful, some non-0 error code otherwise.

short USBLinkClose(void); (0x949c6a)
This function is used by AMS to finalize a file transfer.
Returns 0 if successful, some non-0 error code otherwise.

void USBLinkReset(void); (0x94a284)
This function closes and resets the USB link. It is used by AMS when done with
an USB transfer, and sometimes also before initiating one. You should always
call this function when done with a transfer.
and their current definition:
#define XR_stringPtr_addr (_rom_call_addr(293))
#define IsSupportedAMS300() (*(long long*)(XR_stringPtr_addr-116)\
==0x76021003261f4e75ll)
#define DetectLinkInterface ((unsigned char(*)(void))(XR_stringPtr_addr-158))
#define DetectReceiveInterface ((unsigned char(*)(short))(XR_stringPtr_addr\
-108))
#define DetectUSB (*(short(**)(void))(DetectLinkInterface+4))
#define USB_SendData ((short (*)(const void *, size_t, long))(DetectUSB-1518))
#define USB_RecvData ((short (*)(void *, size_t, long))(DetectUSB-1270))
#define USBLinkClose ((short(*)(void))(DetectUSB-1290))
#define USBLinkReset (*(void(**)(void))(DetectLinkInterface+36))
Membre de l'équipe de TIGCC: http://tigcc.ticalc.org
Mainteneur du portage Linux/Unix de TIGCC: http://tigcc.ticalc.org/linux/
Membre de l'équipe de CalcForge: http://www.calcforge.org:70/

Participez à la reprise de Ti-Gen!
    
./Post n°1   Marquer comme non lu.
Kevin Kofler Ecrit le: Dimanche 31 octobre 2004 à 22:37 Déconnecté(e)    Voir le profil de Kevin Kofler Envoyer un email à Kevin Kofler Visiter le site WEB de Kevin Kofler Envoyer un message privé à Kevin Kofler  


Au passage, cette bêta inclut des lanceurs basés sur la version optimisé en taille la plus récente de ttstart-universal.
Membre de l'équipe de TIGCC: http://tigcc.ticalc.org
Mainteneur du portage Linux/Unix de TIGCC: http://tigcc.ticalc.org/linux/
Membre de l'équipe de CalcForge: http://www.calcforge.org:70/

Participez à la reprise de Ti-Gen!
    
./Post n°2   Marquer comme non lu.
Kevin Kofler Ecrit le: Dimanche 31 octobre 2004 à 22:56 Déconnecté(e)    Voir le profil de Kevin Kofler Envoyer un email à Kevin Kofler Visiter le site WEB de Kevin Kofler Envoyer un message privé à Kevin Kofler  


PS: Un grand merci à mes 2 bêta-testeurs pour les 11 (!) bêtas privées: EJC2810 et MathStuf. Je vais vous rajouter dans les crédits pour la release 2.02. Comment voulez-vous être mentionnés? Par le pseudo, par le vrai nom, par les deux, ...?
Membre de l'équipe de TIGCC: http://tigcc.ticalc.org
Mainteneur du portage Linux/Unix de TIGCC: http://tigcc.ticalc.org/linux/
Membre de l'équipe de CalcForge: http://www.calcforge.org:70/

Participez à la reprise de Ti-Gen!
    
./Post n°3   Marquer comme non lu.
Benjy Ecrit le: Mardi 2 novembre 2004 à 14:01 Déconnecté(e)    Voir le profil de Benjy Envoyer un email à Benjy Visiter le site WEB de Benjy Envoyer un message privé à Benjy  


Et tu pense faire un seul baggamon pour les deux avec detection du HW ?
Le langage C y'a pas mieux!!!
    
./Post n°4   Marquer comme non lu.
Kevin Kofler Ecrit le: Mardi 2 novembre 2004 à 17:37 Déconnecté(e)    Voir le profil de Kevin Kofler Envoyer un email à Kevin Kofler Visiter le site WEB de Kevin Kofler Envoyer un message privé à Kevin Kofler  


C'est déjà le cas, cette version marche partout (sauf sur TI-92 évidemment, la version Fargo reste séparée).
Membre de l'équipe de TIGCC: http://tigcc.ticalc.org
Mainteneur du portage Linux/Unix de TIGCC: http://tigcc.ticalc.org/linux/
Membre de l'équipe de CalcForge: http://www.calcforge.org:70/

Participez à la reprise de Ti-Gen!
    
./Post n°5   Marquer comme non lu.
EJC2810 Ecrit le: Mercredi 3 novembre 2004 à 17:57 Déconnecté(e)    Voir le profil de EJC2810 Envoyer un email à EJC2810 Envoyer un message privé à EJC2810  

Je vais vous rajouter dans les crédits pour la release 2.02. Comment voulez-vous être mentionnés?

Le pseudo suffira! :)
    
./Post n°6   Marquer comme non lu.
Kevin Kofler Ecrit le: Mercredi 3 novembre 2004 à 22:30 Déconnecté(e)    Voir le profil de Kevin Kofler Envoyer un email à Kevin Kofler Visiter le site WEB de Kevin Kofler Envoyer un message privé à Kevin Kofler  


OK
Membre de l'équipe de TIGCC: http://tigcc.ticalc.org
Mainteneur du portage Linux/Unix de TIGCC: http://tigcc.ticalc.org/linux/
Membre de l'équipe de CalcForge: http://www.calcforge.org:70/

Participez à la reprise de Ti-Gen!
    
./Post n°7   Marquer comme non lu.
Kevin Kofler Ecrit le: Jeudi 4 novembre 2004 à 23:06 Déconnecté(e)    Voir le profil de Kevin Kofler Envoyer un email à Kevin Kofler Visiter le site WEB de Kevin Kofler Envoyer un message privé à Kevin Kofler  


Bon, bah pour citer geogeo:
geogeo :
Pas de testeurs, pourtant c'est pas dur et long ce que je demande. :(


Ce serait vraiment bien de tester toutes les combinaisons de link:

  • USB-USB Titanium-Titanium (déjà testé par EJC2810)
  • LIO-LIO Titanium-Titanium
  • LIO-LIO Titanium-89/92+/V200
  • LIO-LIO 89/92+/V200-89/92+/V200 (89 HW1-92+ HW2 déjà testé par moi)
  • LIO-LIO Titanium-92
  • LIO-LIO 89/92+/V200-92
  • mode 1 joueur :) (déjà testé par moi)


Le même exécutable marche partout.
-Edité le Jeudi 4 novembre 2004 à 23:06 par Kevin Kofler-
Membre de l'équipe de TIGCC: http://tigcc.ticalc.org
Mainteneur du portage Linux/Unix de TIGCC: http://tigcc.ticalc.org/linux/
Membre de l'équipe de CalcForge: http://www.calcforge.org:70/

Participez à la reprise de Ti-Gen!
    
./Post n°8   Marquer comme non lu.
LionelA Ecrit le: Vendredi 5 novembre 2004 à 01:31 Déconnecté(e)    Voir le profil de LionelA Envoyer un email à LionelA Visiter le site WEB de LionelA Envoyer un message privé à LionelA  


Il est tard, j'ai cours dans 6h40 mais comme j'arrive pas a dormir j'ai testé le link entre ma v200 (HW2 AMS2.09 je pense pas qu'il existe des HW1 mais bon) et ma ti89 (HW2 AMS2.05)
Bon je ne sais absolument pas jouer a backgammon donc j'ai fait un peu n'importe quoi :
j'ai d'abord selectionné link play white d'un coté et de l'autre et soit je n'ai pas attendu assez (dans ce cas je excuse moi) mais les calc attendaient, j'ai donc appuyé sur on pour les arreter (j'aurais pensé qu'il y aurait un timeout pour dire connexion failed, mais je ne sais pas si c'est possible (je n'ai pas encore programmé de jeu utilisant le link (mais ca ne saurait tarder)).
Donc ensuite je relance le jeu sur chaque calc et je met white d'un coté et black de l'autre, j'ai appuyé sur enter et ca marchait (enfin ca affichait la meme chose sur chaque écran en tout cas)
Là les piles de ma ti89 on lâché et ca a planté du coté de la v200 (un appui sur on m'a replacé dans home sans pb), ca serait pas mal aussi un timeout (s'il n'y est pas déja aussi (mais si il y est je le trouve un peu long (>5s)))
Voila sinon ca marche bien et je suis meme etonné que ca flickers presque pas sur la 89.
Sinon sur la version 89 il manque les 20 premieres colonnes de pixels (a moins que ca vienne du fait que mon ecran soit un peu grillé :D)

Voila je sais pas si ce test était utile mais bon j'aurais vu ton jeu sur vraie calc (dommage que je ne sache pas y jouer, il a l'air pas mal)
Auteur de Mode7 Engine pour ti68k
Auteur de F-ZERO for TI68k
Membre de Orage Studio
Mon site perso : http://www.tigen.org/lionela/
Le gite de mes parents à coté de Narbonne :
http://chaletdenis.free.fr/
    
./Post n°9   Marquer comme non lu.
Kevin Kofler Ecrit le: Vendredi 5 novembre 2004 à 04:37 Déconnecté(e)    Voir le profil de Kevin Kofler Envoyer un email à Kevin Kofler Visiter le site WEB de Kevin Kofler Envoyer un message privé à Kevin Kofler  


LionelA :
Bon je ne sais absolument pas jouer a backgammon donc j'ai fait un peu n'importe quoi :
j'ai d'abord selectionné link play white d'un coté et de l'autre et soit je n'ai pas attendu assez (dans ce cas je excuse moi) mais les calc attendaient, j'ai donc appuyé sur on pour les arreter (j'aurais pensé qu'il y aurait un timeout pour dire connexion failed, mais je ne sais pas si c'est possible (je n'ai pas encore programmé de jeu utilisant le link (mais ca ne saurait tarder)).

Je pourrais mettre un timeout, mais alors on n'aurait qu'un temps limité pour établir la connexion, ça ne me plaît pas trop. Et le readme dit clairement de lancer les blancs d'abord et les noirs après. :) Et enfin, de toute façon, [ON] sert à ça. :)

Donc ensuite je relance le jeu sur chaque calc et je met white d'un coté et black de l'autre, j'ai appuyé sur enter et ca marchait (enfin ca affichait la meme chose sur chaque écran en tout cas)

OK.

Là les piles de ma ti89 on lâché et ca a planté du coté de la v200 (un appui sur on m'a replacé dans home sans pb), ca serait pas mal aussi un timeout (s'il n'y est pas déja aussi (mais si il y est je le trouve un peu long (>5s)))

Là aussi, je pourrais mettre un timeout, mais alors on n'aurait qu'un temps limité pour faire ses coups, ce ne serait pas top. Et encore une fois, de toute façon, [ON] sert à ça. :)

Voila sinon ca marche bien et je suis meme etonné que ca flickers presque pas sur la 89.

Ben oui, les 7 ndg ne sont pas aussi clignotants que ça. D'autant plus que je fais du tramage entre les 2 couleurs qui donnent la même moyenne (automatiquement dans la routine de sprites, je ne me suis pas amusé à tramer tous mes sprites évidemment).

Sinon sur la version 89 il manque les 20 premieres colonnes de pixels (a moins que ca vienne du fait que mon ecran soit un peu grillé :D)

Je pense que c'est ton écran...

Voila je sais pas si ce test était utile mais bon j'aurais vu ton jeu sur vraie calc (dommage que je ne sache pas y jouer, il a l'air pas mal)

Le test confirme une fois de plus que le link LIO-LIO entre 2 non-Titaniums marche correctement (et avec une V200, donc ça apporte un nouvel élément par rapport à mon test).

Les grands tests manquants sont maintenant celles testant l'utilisation du LIO avec une Titanium (là où la détection USB vs. LIO intervient). Pour ça, il faudrait:
  • pour le premier test, une Titanium, une non-Titanium et un câble LIO
  • pour le deuxième test, 2 Titaniums et un câble LIO
Je suis bien conscient que c'est dur à trouver comme matériel, mais peut-être qu'en demandant dans son établissement scolaire, on peut y arriver. :) Le link entre Titanium et non-Titanium est évidemment plus important que le link LIO entre 2 Titaniums, parce qu'entre 2 Titaniums, il y a déjà l'USB.
Membre de l'équipe de TIGCC: http://tigcc.ticalc.org
Mainteneur du portage Linux/Unix de TIGCC: http://tigcc.ticalc.org/linux/
Membre de l'équipe de CalcForge: http://www.calcforge.org:70/

Participez à la reprise de Ti-Gen!
    
./Post n°10   Marquer comme non lu.
verytourist Ecrit le: Vendredi 5 novembre 2004 à 22:21 Déconnecté(e)    Voir le profil de verytourist Envoyer un email à verytourist Envoyer un message privé à verytourist  

Je pourait tester V200-Ti 89 tita, mais pas avant lundi (ie pendant les cours avec la calc d'un pote) , dit moi toujours si sa t'intéresse ;) (demain, je n'aurais pas trop le temps en DS :D )

    
./Post n°11   Marquer comme non lu.
Kevin Kofler Ecrit le: Vendredi 5 novembre 2004 à 23:00 Déconnecté(e)    Voir le profil de Kevin Kofler Envoyer un email à Kevin Kofler Visiter le site WEB de Kevin Kofler Envoyer un message privé à Kevin Kofler  


Oui, ça m'intéresse. :)
Membre de l'équipe de TIGCC: http://tigcc.ticalc.org
Mainteneur du portage Linux/Unix de TIGCC: http://tigcc.ticalc.org/linux/
Membre de l'équipe de CalcForge: http://www.calcforge.org:70/

Participez à la reprise de Ti-Gen!
    
./Post n°12   Marquer comme non lu.
verytourist Ecrit le: Vendredi 5 novembre 2004 à 23:27 Déconnecté(e)    Voir le profil de verytourist Envoyer un email à verytourist Envoyer un message privé à verytourist  

Ok, test report lundi soir (normalement) si tout va bien :)
de plus, je devait apprendre à jouer au Backgammon, sa tombe bien :p
    
./Post n°13   Marquer comme non lu.
Jfg Ecrit le: Samedi 6 novembre 2004 à 01:18 Déconnecté(e)    Voir le profil de Jfg Envoyer un email à Jfg Visiter le site WEB de Jfg Envoyer un message privé à Jfg  


Tu devais ?
Kill Mario
    
./Post n°14   Marquer comme non lu.
verytourist Ecrit le: Samedi 6 novembre 2004 à 11:42 Déconnecté(e)    Voir le profil de verytourist Envoyer un email à verytourist Envoyer un message privé à verytourist  

Oui, enfin, je devait l'apprendre :) (enfin, devoir, c'est un peu fort, on va dire que qqun que je conait bien sait y jouer, et donc... )
    
./Post n°15   Marquer comme non lu.
Jfg Ecrit le: Dimanche 14 novembre 2004 à 17:28 Déconnecté(e)    Voir le profil de Jfg Envoyer un email à Jfg Visiter le site WEB de Jfg Envoyer un message privé à Jfg  


Ça fait quoi si "USB_SendData" ou "USB_RecvData" timeout ?
Qu'est ce que 'timeout' signifie exactement dans USB_SendData(const void *buffer, size_t size, long timeout) ?

Ça serais possible de se passer du choix "host/join" comme dans Ice Hockey ?


Un détail:

Some notes about the USB: It is very hard to synchronize the USB link properly. There are 2 ways to transfer something:
* transfer without waiting: This is easy, just use USB_SendData and USB_RecvData.

-Edité le Dimanche 14 novembre 2004 à 17:33 par jfg-
-Edité le Dimanche 14 novembre 2004 à 17:48 par jfg-
Kill Mario
    
./Post n°16   Marquer comme non lu.
Kevin Kofler Ecrit le: Dimanche 14 novembre 2004 à 19:04 Déconnecté(e)    Voir le profil de Kevin Kofler Envoyer un email à Kevin Kofler Visiter le site WEB de Kevin Kofler Envoyer un message privé à Kevin Kofler  


Jfg :
Ça fait quoi si "USB_SendData" ou "USB_RecvData" timeout ?

Ça retourne un code d'erreur ("some non-0 error code").

Qu'est ce que 'timeout' signifie exactement dans USB_SendData(const void *buffer, size_t size, long timeout) ?

Bah, si je le savais... J'ai bien mis: "(I am not sure this is actually a timeout. AMS always uses 2000, so you should do the same.)".

Ça serais possible de se passer du choix "host/join" comme dans Ice Hockey ?

Ce que tu veux faire, ça s'appelle de la "host negotiation". Ce n'est pas facile d'en faire avec ça. Ce que tu peux faire, c'est essayer DetectUSB et LIO_SendData, et puis passer en DetectReceiveInterface si ça échoue. Mais ça foire si on fait [ENTER] à peu près en même temps sur les 2 calculatrices.

Un détail:

Some notes about the USB: It is very hard to synchronize the USB link properly. There are 2 ways to transfer something:
* transfer without waiting: This is easy, just use USB_SendData and USB_RecvData.

J'ai la flemme de corriger ce détail. :)
Membre de l'équipe de TIGCC: http://tigcc.ticalc.org
Mainteneur du portage Linux/Unix de TIGCC: http://tigcc.ticalc.org/linux/
Membre de l'équipe de CalcForge: http://www.calcforge.org:70/

Participez à la reprise de Ti-Gen!
    
./Post n°17   Marquer comme non lu.
EJC2810 Ecrit le: Dimanche 14 novembre 2004 à 19:09 Déconnecté(e)    Voir le profil de EJC2810 Envoyer un email à EJC2810 Envoyer un message privé à EJC2810  

désolé je m'incruste: VIVE LE BOMBERDUDE USB!!! :D
    
./Post n°18   Marquer comme non lu.
Jfg Ecrit le: Dimanche 14 novembre 2004 à 19:51 Déconnecté(e)    Voir le profil de Jfg Envoyer un email à Jfg Visiter le site WEB de Jfg Envoyer un message privé à Jfg  


  if (use_USB) {
    i = TRUE;
    Send = HOST_NO;
    USB_SendData(&Send,1,2000);
    while (i==TRUE) {
      if (USB_RecvData(&Receive,1,2000)==0)
      i=FALSE;
      if (_keytest(RR_ESC))
      return(FALSE);
    }

    if (Receive == HOST_NO) {
      playernum = HOST_NUMBER;    
    }
    else
    {
      Send = HOST_NO;
      playernum = JOIN_NUMBER;
      USB_SendData(&Send,1,2000);
    }
    
  }


Cela pourrais peut être marcher non ?
Le but de ce bout de code c'est de faire que sur une calc il y aurait "playernum = HOST_NUMBER" et sur l'autre il y aurait "playernum = JOIN_NUMBER"


EJC2810> Le bomberdude USB n'est pas près d'exister :(

-Edité le Dimanche 14 novembre 2004 à 19:55 par jfg-
Kill Mario
    
./Post n°19   Marquer comme non lu.
Kevin Kofler Ecrit le: Dimanche 14 novembre 2004 à 19:53 Déconnecté(e)    Voir le profil de Kevin Kofler Envoyer un email à Kevin Kofler Visiter le site WEB de Kevin Kofler Envoyer un message privé à Kevin Kofler  


Et ton use_USB, tu le sors d'où? Parce que pour faire la détection, il faut que la "host detection" soit déjà faite, ou au moins la faire en même temps comme suggéré par mon post n°16.
Membre de l'équipe de TIGCC: http://tigcc.ticalc.org
Mainteneur du portage Linux/Unix de TIGCC: http://tigcc.ticalc.org/linux/
Membre de l'équipe de CalcForge: http://www.calcforge.org:70/

Participez à la reprise de Ti-Gen!
    
  :: Index » Forum Ti68K » Betas et WIPs » Backgammon avec link USB (25 réponse(s))
Pages : 1/2     « [1] 2 » »|

.Répondre à ce sujet
Les boutons de code
[B]old[I]talic[U]nderline[S]trikethrough[L]ine Flip Hori[Z]ontallyFlip [V]erticallySha[D]ow[G]low[S]poilerCode [G][C]ite
Bullet [L]istList Item [K] Link [H][E]mail[P]icture SmileysHelp
Couleurs :
Saisissez votre message
Activer les smileys
     

Forum de Ti-Gen v3.0 Copyright ©2004 by Geoffrey ANNEHEIM
Webmaster: Kevin KOFLER, Content Admins: list, Server Admins: Tyler CASSIDY and Kevin KOFLER, DNS Admin: squalyl
Page générée en 45.39ms avec 18 requetes