forumti.gif
@_ö
(14:34)  Bienvenue ! - Inscrivez vous pour poster ! -
Boo, GT Turbo, cgtof, 37 inconnu(s), 19 bot(s)

Login :  Mot de passe :      Se souvenir de moi.  Mot de passe perdu ?
/!\:: Cliquez ici pour vous inscrire et poster, créer des sujets ou des forums ! ::/!\
 « Précédent - 3/5 - Suivant » :: Pages
 Index » Forum Ti 89, Titanium / 92+ / Voyage 200 et TI-Nspire » Prog C TI (131r) » fonction Sprite32 version clipée ?
./59 - REPRISE AUTOMATIQUE DU MESSAGE PRECEDENT
15.06.2003 - 7808
15:37  GoldenCrystal - Posté : 12-10-2010  @_ö
Tu sais que tu as le droit de définir le répertoire en cours comme sous Linux ? Et il me semble que gcc arrive à fonctionner avec les chemins relatifs cheeky
Mais bon, c'est vrai qu'il y a peut-être probablement des bugs liés à la constante MAX_PATH à l'intérieur de gcc… :]
avatarLe scénario de notre univers a été rédigée par un bataillon de singes savants. Tout s'explique enfin.
T'as un problème ? Tu veux un bonbon ?
[CrystalMPQ] C# MPQ Library/Tools - [CrystalBoy] C# GB Emulator - [Monoxide] C# OSX library - M68k Opcodes
./Publicité AdSense
./60
28.10.2001 - 7508
16:09  Lionel Debroux - Posté : 12-10-2010  M
Bien vu, ce test sur la longueur ne doit pas aider smile
Mais sa présence ne suffit pas à expliquer pourquoi l'IDE ne rencontre pas de problème, malgré l'UAC activé, sur certaines machines: "C:\Documents and Settings\a\Local Settings\temp" fait toujours plus de 30 caractères.
avatarMembre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.
./61
10.06.2001 - 28033
16:18  Pen^2 - Posté : 12-10-2010  M
TEMP peut se redéfinir.
./62
28.10.2001 - 7508
16:23  Lionel Debroux - Posté : 12-10-2010  M
Je vérifierai ma VM Vista quand j'y aurai accès.
avatarMembre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.
./63
10.06.2001 - 28033
16:27  Pen^2 - Posté : 12-10-2010  M
Vérifier quoi ?
Ça peut se redéfinir, c'est tout à fait certain. D'ailleurs c'est le cas sur ma machine du boulot. Et j'ai dû le faire chez moi aussi, sur un autre volume...
./64
28.10.2001 - 7508
16:30  Lionel Debroux - Posté : 12-10-2010  M
Vérifier les valeurs des variables d'environnement TEMP ou TMP, si elles existent smile
(désolé, je me suis mal exprimé)
avatarMembre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.
./65
10.06.2001 - 28033
17:09  Pen^2 - Posté : 12-10-2010  M
Ben oui elles existent. Je suis sur un Vista 64 là.
C:\>echo %tmp%
C:\TEMP

C:\>echo %temp%
C:\TEMP
./66
28.10.2001 - 7508
19:40  Lionel Debroux - Posté : 12-10-2010  M
Nan, mais je parlais des valeurs de TEMP et TMP (et de leur existence éventuelle) sur ma machine virtuelle smile
Je sais bien que ces variables d'environnement peuvent être redéfinies à volonté, avec override des variables per-user sur les variables globales.


Je viens de reproduire le problème: quand l'UAC est activé, ce test sur la taille du chemin du répertoire temporaire peut effectivement faire merder le build, #oui#

Sur ma VM, le user name est tel que l'expansion du path TMP=TEMP=%USERPROFILE%\Documents\temp (choisi pour le test, car les droits y sont suffisants même quand l'UAC est activé), à savoir C:\Users\login6\Documents\Temp produit une chaîne d'exactement 30 caractères. Le build fonctionne.
Avec TMP=TEMP=%USERPROFILE%\Documents\temp2 (31 caractères), le build merde (pas trouvé extgraph.h).
Avec la valeur TMP=TEMP=%USERPROFILE%\AppData\Local\Temp (34 caractères), répertoire temporaire plus traditionnel, le build merde aussi pour la même raison, bien sûr.


Le minimum à faire est donc de dégager les deux "or (Length (Temp) > 30) " de l'extrait de code posté en ./50 #oui#
Mais il est clair que dégager ces deux tests n'est pas suffisant: si, à la fin de la détermination du path du répertoire temporaire, la variable Delphi "Temp" pointe vers un répertoire protégé par l'UAC (soit parce que TMP ou TEMP contiennent une telle valeur, soit parce que les fallbacks vers %WINDIR%\TEMP ou C:\TEMP ont été déclenchés), on aura quand même un problème avec l'UAC. Il y a donc d'autres modifs à faire ailleurs dans le code, pour prendre en compte l'UAC.


J'avais regardé les symptômes avec ProcessExplorer, aidé d'un utilisateur dont j'ai oublié le pseudo et qui pouvait, lui, reproduire le problème, et publié les fichiers - mais en fait, pour une fois, le problème est visible en revue de code.
avatarMembre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.
./67
10.06.2001 - 28033
19:45  Pen^2 - Posté : 12-10-2010  M
Heu, franchement si j'étais toi, je me contenterais de renvoyer un message d'erreur explicite si %temp% n'est pas accessible en écriture. Faut pas déconner quand même #triso#
./68
13.06.2002 - 38300
19:57  @Zeph - Posté : 12-10-2010  M
Si TEMP ou TMP sont overridées vers un répertoire protégé, c'est a priori parceque l'utilisateur l'a fait en connaissance de cause (ou qu'un autre soft lui a pourri ses variables d'environnement, mais ça reste un problème étranger à TIGCC/GCC4Ti) ; donc crayon Pen^2 ^^
avatarTime out for a second. That wasn't supposed to happen.
------------------------------------------
:: It offers what you want, not what you need
3l33t :: Relax, we understand j00 ^^
./69
18.06.2001 - 27291
20:10  Folco - Posté : 12-10-2010  M
Egalement. Tu ne peux pas tout blinder, et de toute façon l'utilisateur arrivera toujours à te trouver le cas kivabien qui mettront tes protections en défaut. Et me cherche pas, je suis très fort à ça. grin
Donc #crayon# aussi.
avatarFolco'sandbox : 2014-11-26
<<< Kernel Extremist©®™ >>> WIP : r14 - 2014-12-02

- xdef directive now updates the cursor
- include directive remove its file from the fileslist when parsed
- added dc directive, binary size verification, relocation table handling
./70
28.10.2001 - 7508
20:44  Lionel Debroux - Posté : 12-10-2010  M
Mouais, c'est pas faux... tester Temp en écriture et afficher un message s'il n'est pas possible d'y écrire, paraît un bon premier pas smile
Bon, ça n'est pas super pressé (à faire absolument ce soir, je veux dire grin), puisqu'il y a depuis longtemps un workaround efficace et bien documenté.


l'utilisateur arrivera toujours à te trouver le cas kivabien qui mettront tes protections en défaut. Et me cherche pas, je suis très fort à ça. grin

Ca m'arrive aussi, voir par exemple le bugfix qui a suivi mon report du bug qui se produisait quand on lançait ttstart avec lui-même grin
avatarMembre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.
./71
13.06.2002 - 38300
20:49  @Zeph - Posté : 12-10-2010  M
Ce que tu appelles "workaround" c'est désactiver l'UAC ? Si oui alors c'est une extrêmement mauvaise idée... ça implique d'annuler cette sécurité sur l'ensemble du système, je n'appelle pas ça une solution.

On peut aussi lancer l'IDE en mode administrateur mais ça a d'autres impacts, et ça permet potentiellement à l'IDE de toucher des fichiers auxquels elle n'est pas censée avoir accès, donc c'est également très moyen je trouve. Étant donné la simplicité du correctif, il me semble au contraire que ça fait partie des corrections qui pourraient être mises en place aussi tôt que possible.
avatarTime out for a second. That wasn't supposed to happen.
------------------------------------------
:: It offers what you want, not what you need
3l33t :: Relax, we understand j00 ^^
./72
28.10.2001 - 7508
21:09  Lionel Debroux - Posté : 12-10-2010  M
Nous sommes d'accord, le workaround n'est qu'un pis-aller en attendant une meilleure compatibilité avec l'UAC smile
Je voulais juste signifier juste que je ne vais pas coder la modif complète (dégager les deux "or (Length (Temp) > 30) ", je peux y arriver sans faire d'erreurs de syntaxe / sémantique; en revanche, pas ajouter un message d'erreur et refaire la chaîne d'exceptions pour faire en sorte qu'il y ait moins d'avalements silencieux d'erreurs), et releaser de build de test de l'IDE de GCC4TI, ce soir grin

(ça fait deux ou trois messages pas clairs de ma part en quelques heures dans le topic, c'est beaucoup ^^)
avatarMembre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.
./73
17.08.2003 - 506
22:36  JoanCZ - Posté : 12-10-2010  M
Ben dis donc , ça papote ici grin

Bon, l'est sympa cette lib, tout marche vraiment nickel, et c'est plutot fluide (considerant la taille des images du jeu) donc chuis plutot content grin
sinon j'ai un probleme justement du a la taille des GFX : ya t'il moyen de les stocker ailleurs que dans l'executable et de les charger quand on en a besoin ?





(Autre question qui n'a rien a voir: ya t'il moyen de lancer un prog compilé pour 89 sur une v200 ?)
avatarMenuisier of the Dead bientôt sur GBA !!!! :D

Projet en cours:
-Menuisier Of The Dead

./74
15.06.2003 - 7808
22:40  GoldenCrystal - Posté : 12-10-2010  @_ö
sawamura (./73) :
ya t'il moyen de lancer un prog compilé pour 89 sur une v200 ?
Pour que le programme fonctionne ou non, ça va dépendre de comment il a été codé et de comment il a été compilé.
Si les options spécifient précisément TI89 uniquement, alors tu as de fortes chances qu'il ne marche que sur TI89.
Mais il est possible de faire des programmes qui tournent sur les deux modèles wink
avatarLe scénario de notre univers a été rédigée par un bataillon de singes savants. Tout s'explique enfin.
T'as un problème ? Tu veux un bonbon ?
[CrystalMPQ] C# MPQ Library/Tools - [CrystalBoy] C# GB Emulator - [Monoxide] C# OSX library - M68k Opcodes
./75
17.08.2003 - 506
22:46  JoanCZ - Posté : 12-10-2010  M
GoldenCrystal (./74) :
sawamura (./73) :
ya t'il moyen de lancer un prog compilé pour 89 sur une v200 ?
Pour que le programme fonctionne ou non, ça va dépendre de comment il a été codé et de comment il a été compilé.
Si les options spécifient précisément TI89 uniquement, alors tu as de fortes chances qu'il ne marche que sur TI89.
Mais il est possible de faire des programmes qui tournent sur les deux modèles wink



ouioui, ca je sais smile
en fait j'ai retrouvé sur le net un jeu que j'avais codé ya un bout de temps sur 89, je voulais le lancer histoire de me remémorer le truc, mais j'vais faire ça via VTI wink
(http://www.ticalc.org/archives/files/authors/74/7410.html)
avatarMenuisier of the Dead bientôt sur GBA !!!! :D

Projet en cours:
-Menuisier Of The Dead

./76
18.06.2001 - 27291
22:47  Folco - Posté : 12-10-2010  M
Oui, suffit que tu le définisse dans les options du projet, que la compilation doit se faire pour les deux machines. Mais c'est le cas par défaut.
ps -> si tu utilises genlib et son joypad, t'auras déjà pas de problème pour le clavier. Ensuite, pour l'écran, deux constantes font l'affaire (regarde le ramcall CALCULATOR, ou LCD_SIZE, je ne sais pas, il y a l'embaras du choix pour connaitre le matériel sur lequel tu tournes).

Et tu peux mettre tes sprites dans un fichier externe.
Deux possiblités :
Tu utilises un fichier de données quelconque, extension de ton cru. Pour obtenir un pointeur sur ton fichier, il faudra faire :
void* ptr = HLock(SymFindPtr(SYMSTR("monfichier", 0))->handle);
Bon, oublie pas de vérifier que le SymFindPtr a marché évidemment, je te laisse consulter la doc de vat.h. cheeky

Ma solution préférée : une librarie dynamique. Comme on met ce qu'on veut dedans, on peut mettre des données.
Avantage d'une librairie sur un fichier quelconque :
- tu peux exporter tout ce que tu veux comme données, genre malib__SpritesPerso etc... du coup dans ton programme, tu écris juste "malib__SpritePerso" comme si ça faisait partie du même binaire, le kernel s'occupe de te reconstituer le tout quand ton programme se lance
- pas besoin de vérifier où est ton fichier à la main, le kernel poussera une gueulante si ton fichier de donnée n'est pas là, et refusera de lancer ton programme

Ca, c'est que la partie supérieure du haut du sommet de la partie visible qui dépasse de l'iceberg, on peut faire des milliards de choses avec une librairie dynamique.
avatarFolco'sandbox : 2014-11-26
<<< Kernel Extremist©®™ >>> WIP : r14 - 2014-12-02

- xdef directive now updates the cursor
- include directive remove its file from the fileslist when parsed
- added dc directive, binary size verification, relocation table handling
./77
10.06.2001 - 33210
22:49  Kevin Kofler - Posté : 12-10-2010  M
Si on a seulement le binaire, ce logiciel peut aider.
avatarMes news pour calculatrices TI: Ti-Gen (fr/en), MobiFiles (de)
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité
./78
10.06.2001 - 33210
22:53  Kevin Kofler - Posté : 12-10-2010  M
Folco (./76) :
- tu peux exporter tout ce que tu veux comme données, genre malib__SpritesPerso etc... du coup dans ton programme, tu écris juste "malib__SpritePerso" comme si ça faisait partie du même binaire, le kernel s'occupe de te reconstituer le tout quand ton programme se lance

Avec à chaque fois un relogement de lib, 2 octets minimum (+ les 4 octets de l'adresse absolue). Plus 2 octets par export différent qu'on importe, plus 10 octets par lib. Et la lib a aussi besoin d'un header qu'il n'y a pas dans un simple fichier de données.

- pas besoin de vérifier où est ton fichier à la main, le kernel poussera une gueulante si ton fichier de donnée n'est pas là, et refusera de lancer ton programme

Bah, si SymFindPtr retourne NULL, pas la peine de chercher plus loin, le fichier n'existe pas. Ce n'est pas sorcier.

Ca, c'est que la partie supérieure du haut du sommet de la partie visible qui dépasse de l'iceberg, on peut faire des milliards de choses avec une librairie dynamique.

La preuve que ce n'est pas fait pour un simple fichier de données!
avatarMes news pour calculatrices TI: Ti-Gen (fr/en), MobiFiles (de)
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité
./79 - Lien - Folco - [zeph] insultes
./80
17.08.2003 - 506
12:03  JoanCZ - Posté : 13-10-2010  M
Mouarf neutral
J'ai toujours ce foutu probleme du programme qui ne se lance qu'une seule fois :/
Apres j'ai juste droit a un "DONE" sad
avatarMenuisier of the Dead bientôt sur GBA !!!! :D

Projet en cours:
-Menuisier Of The Dead

./81
10.06.2001 - 28033
12:04  Pen^2 - Posté : 13-10-2010  M
Et si tu l'archives ? (juste pour tester)
./82
17.08.2003 - 506
12:08  JoanCZ - Posté : 13-10-2010  M
toujours "done" grin
avatarMenuisier of the Dead bientôt sur GBA !!!! :D

Projet en cours:
-Menuisier Of The Dead

./83
15.06.2003 - 7808
12:10  GoldenCrystal - Posté : 13-10-2010  @_ö
Archivé avant de le lancer la première fois ?
avatarLe scénario de notre univers a été rédigée par un bataillon de singes savants. Tout s'explique enfin.
T'as un problème ? Tu veux un bonbon ?
[CrystalMPQ] C# MPQ Library/Tools - [CrystalBoy] C# GB Emulator - [Monoxide] C# OSX library - M68k Opcodes
./84
10.06.2001 - 28033
12:13  Pen^2 - Posté : 13-10-2010  M
oué c'était ça la question en fait cheeky
./85
17.08.2003 - 506
12:14  JoanCZ - Posté : 13-10-2010  M
là ca fonctionne grin
mais bon, je comprend pas...
avatarMenuisier of the Dead bientôt sur GBA !!!! :D

Projet en cours:
-Menuisier Of The Dead

./86
15.06.2003 - 7808
12:16  GoldenCrystal - Posté : 13-10-2010  @_ö
Ça veut dire que quelque part ton programme modifie les données qui sont contenues à l'intérieur…
Donc quand tu l'exécutes la deuxième fois, ce n'est plus le même programme. (sauf si archivé puisque la mémoire archive conserve la version originale)
Après, pour ce qui est la cause de ce comportement, là faut regarder le code. ^^
avatarLe scénario de notre univers a été rédigée par un bataillon de singes savants. Tout s'explique enfin.
T'as un problème ? Tu veux un bonbon ?
[CrystalMPQ] C# MPQ Library/Tools - [CrystalBoy] C# GB Emulator - [Monoxide] C# OSX library - M68k Opcodes
./87
17.08.2003 - 506
12:18  JoanCZ - Posté : 13-10-2010  M
#define USE_KERNEL 
#include <genlib.h> 
#include "sprites.h"

 
JOYPAD j;
char	Temp[3000];//buffer pour le flip des sprites
int done=0;
//j=gl_read_joypad(); 
//if(!j.left_key) 
		
void gl_main() 
{ 
		
	while (done!=1) 
	{ 
		j=gl_read_joypad(); 
		if(!j.up_key) done=1;
		gl_cls(); 
		gl_put_big_sprite (10, 60, &base1);
		//gl_put_big_sprite_flip_h (10, 10, &base1,  (BGS *) Temp);
		glaux_swap (); 
		glaux_synchro (1); 
	} 
}


ya vraiment que ca pour l'instant smile

(chui surtout en mode rippage de sprites wink)
avatarMenuisier of the Dead bientôt sur GBA !!!! :D

Projet en cours:
-Menuisier Of The Dead

./88
15.06.2003 - 7808
12:22  GoldenCrystal - Posté : 13-10-2010  @_ö
Ben là ton problème doit venir des variables globales. (Enfin surtout la variable « done »)
(C'est spécifique à TIGCC ça mais bon… Il me semblait que TIGCC bidouillait pour qu'on aie plus ce problème ?)
Pourquoi ne pas déclarer ces variables dans ta fonction main plutôt ?
avatarLe scénario de notre univers a été rédigée par un bataillon de singes savants. Tout s'explique enfin.
T'as un problème ? Tu veux un bonbon ?
[CrystalMPQ] C# MPQ Library/Tools - [CrystalBoy] C# GB Emulator - [Monoxide] C# OSX library - M68k Opcodes
./89
10.06.2001 - 28033
12:24  Pen^2 - Posté : 13-10-2010  M
ben done n'est pas réinitialisé à 0 tongue


int done; 
void gl_main()
{
done= 0 ;
while ( done != 1 )
./Publicité AdSense
 « Précédent - 3/5 - Suivant » :: Pages
 Index » Forum Ti 89, Titanium / 92+ / Voyage 200 et TI-Nspire » Prog C TI (131r) » fonction Sprite32 version clipée ?

./Poster un nouveau message. - Ouvrir dans une nouvelle fenêtre
Login : Mot de passe :

url - image - media  
spoiler - pre - fixed
quote - box - hr
poll - code





Smileys
Smileys perso
Pièce jointe
     Flood control (?) :    
Les messages postés sont la propriété de leurs auteurs. Nous ne sommes pas responsables de leurs contenus.

» yN ©1624 - Aide / Charte / Crédits
43ms | Statistiques