30

Et sinon c'est toujours possible de 'récolter' des soldats avec la moissonneuse ? grin
CBSoft (./27) :
Bon pour l'instant la routine d'affichage du ver ne le rend pas assez visible on-calc mais ça viendra biggrin.gif

Il est pas très visible sur PC non plus (à part quand il sort), c'était surtout le musique si je me souviens bien qui prouvait sa présence.
Lionel Debroux (./26) :
C'est pas obligatoire de le mettre dans une première version, il est trop pénible biggrin.gif

Bof si on le pousse jusqu'à chez l'ennemi il est très pratique smile

31

Et sinon c'est toujours possible de 'récolter' des soldats avec la moissonneuse ? grin

Là, je suis d'accord avec toi, "Récolter" soldats et troopers avec moissonneuses et tanks est super marrant (et ça évite qu'ils tirent sur bâtiments et unités, entraînant des dépenses de réparation) grin
Bof si on le pousse jusqu'à chez l'ennemi il est très pratique smile

Il n'est pas toujours facile à contrôler, et puis il s'arrête dès qu'il a bouffé trois unités sad
Ce que je faisais parfois sur les derniers niveaux, en particulier quand il m'avait avalé des unités puissantes, c'est que l'exterminais avec tanks lourds et dévastateurs, tout simplement grin
Dès que les dégâts passent la moitié (zone jaune), il ne bougeait plus, ce qui rendait plus facile sa destruction grin
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

32

Lionel Debroux (./31) :
Là, je suis d'accord avec toi, "Récolter" soldats et troopers avec moissonneuses et tanks est super marrant (et ça évite qu'ils tirent sur bâtiments et unités, entraînant des dépenses de réparation) biggrin.gif

Surtout ça évite d'avoir à poster des tanks vers les champs d'épice dans les premiers niveaux pour protéger la moissonneuse (par contre si c'est un char qui l'attaque... cheeky).
Lionel Debroux (./31) :
Il n'est pas toujours facile à contrôler, et puis il s'arrête dès qu'il a bouffé trois unités frown.gif

Apparemment il suffit de lui tirer dessus pour le repousser ou alors de faire courir une unité devant lui jusqu'à chez l'ennemi.

33

Lionel Debroux (./28) :
Mais ça n'empêche pas qu'on ne peut pas mettre en même temps à l'écran la zone de petite taille qu'on regarde avec tout le détail
Il s'agit de la minimap, et elle sera visible dans le jeu quand on maintiendra une touche appuyée (les flèches servant alors à déplacer l'écran).
Lionel Debroux (./28) :
Des gens qui ne connaissent pas l'original pourraient peut-être le penser, mais je pense que la plupart de ceux qui le connaissent ne peuvent pas se tromper. En effet, même si la vidéo et le screenshot doivent être réalisables par "simple" manipulation d'image à partir de l'original (resizing + passage en 4 niveaux de gris + quelques manipulations), on voit deux différences notables avec l'original:
* le deuxième curseur blanc (coins d'un carré) n'est pas présent dans l'original; * les tourelles à roquettes ne semblent, dans ta vidéo, actuellement pas fonctionner.
Et ouais c'est un fake bien ficelé grin
Lionel Debroux (./28) :
PS: tu as quelle quantité approximative de code/données, actuellement ?
Au total il y a 58k de graphismes et 51k de code (non compressés !).

Concernant le code, la barrière des 64k sera bientôt franchie. Quant aux graphismes, la place occupée diminuera sans doute quand j'aurai terminé de voir lesquels peuvent être générés dynamiquement au lancement du jeu.
squalyl (./29) :
comment ça marche sur x86, avec une ému d'extgraph?
J'ai écrit une version x86 de toutes les fonctions d'E/S. Les fonctions d'extgraph utilisées étant plutôt simples, ça n'a pas été difficile de les réécrire (surtout qu'elles n'ont pas à être particulièrement optimisées sur PC).
deeph (./30) :
Et sinon c'est toujours possible de 'récolter' des soldats avec la moissonneuse ?
Yep, et c'est déjà en place wink
Lionel Debroux (./31) :
Ce que je faisais parfois sur les derniers niveaux, en particulier quand il m'avait avalé des unités puissantes, c'est que l'exterminais avec tanks lourds et dévastateurs, tout simplement biggrin.gif
Pas mieux grin Ou alors on peut lui donner 3 unités qui servent à rien, voire 3 moissonneuses si on n'est pas pressé de récolter de l'épice (puisque les moissonneuses sont rapportées automatiquement).
avatar
Time is on our side.

THE EXPERT 4 : topics/74978-the-expert-4
THE EXPERT 5 : topics/101326-the-expert-5
DUNE 2 : topics/111247-dune-2

34

Je viens de refaire les 4 premières missions de Dune 2 en tant qu'Atreides (comme d'hab), ça fait des années que je ne l'avais pas fait.
Sur la centaine d'unités que j'ai tuées lors de la 4ème mission, 20-25 soldats + troopers + Sardaukars (simples ou triples) ont été récoltées avec moissonneuses et tanks légers (ça m'a quand même coûté plusieurs tanks) grin
PS: tu as quelle quantité approximative de code/données, actuellement ?
Au total il y a 58k de graphismes et 51k de code (non compressés !). Concernant le code, la barrière des 64k sera bientôt franchie.

Ouais, c'est sûr que la barrière des 64k ne va pas tarder, notamment à cause des tourelles...
L'ajout d'un DLL et le découpage du programme sont des pessimizations significatives, mais dans un jeu aussi riche, je ne vois pas comment les éviter. Même avec des approches inhabituelles du type "préprocessing d'une partie du code avec M4 + génération de bytecode + utilisation d'un interpréteur" (de mémoire, Calcrogue fait comme ça), si une telle approche est utilisable ici...

Ou alors on peut lui donner 3 unités qui servent à rien, voire 3 moissonneuses si on n'est pas pressé de récolter de l'épice (puisque les moissonneuses sont rapportées automatiquement).

Ouais, des Trike ou Quad en général (les vers bouffent souvent les unités rapides qu'on envoie en exploration).


Tu comptes réimplémenter le bug des unités Atreides ou Harkonnen déviées par un Déviateur Ordos, qui restent contrôlables (une seule fois) après la dissipation de l'effet "déviation", si c'était cette unité qui était préalablement sélectionnée ? Il est marrant, celui-là grin




Il vient de me passer une idée par la tête: si on utilise HW2/3Patch, comme de nombreux utilisateurs de 89/89T/92+/V200, que je sache, on n'a plus à se soucier de la protection d'exécution en RAM. C'est donc moins difficile de découper le programme en morceaux, de charger tous les morceaux dans la RAM, et de sauter (jsr / rts) d'un bout à l'autre quand c'est nécessaire.
Par exemple, minimap, système de sélection des prochaines missions, mentat, pourraient être mis dans d'autres morceaux, les morceaux communiquant par exemple à travers une global register variable pointant sur la mémoire partagée. Eventuellement plusieurs points d'entrée par morceau auxiliaire.
Je suis pas sûr que j'aurai bien le temps dans les prochains jours, mais ça m'amuserait d'essayer ça avec des programmes triviaux (lecture/positionnement des valeurs dans la mémoire partagée). Naturellement, je n'infligerai pas un tel traitement à ma pauvre 89 HW2, je testerai ça sur TIEmu grin
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

35

Lionel Debroux (./34) :
Il vient de me passer une idée par la tête: si on utilise HW2/3Patch, comme de nombreux utilisateurs de 89/89T/92+/V200, que je sache, on n'a plus à se soucier de la protection d'exécution en RAM. C'est donc moins difficile de découper le programme en morceaux, de charger tous les morceaux dans la RAM, et de sauter (jsr / rts) d'un bout à l'autre quand c'est nécessaire.
Par exemple, minimap, système de sélection des prochaines missions, mentat, pourraient être mis dans d'autres morceaux, les morceaux communiquant par exemple à travers une global register variable pointant sur la mémoire partagée. Eventuellement plusieurs points d'entrée par morceau auxiliaire.
Je suis pas sûr que j'aurai bien le temps dans les prochains jours, mais ça m'amuserait d'essayer ça avec des programmes triviaux (lecture/positionnement des valeurs dans la mémoire partagée). Naturellement, je n'infligerai pas un tel traitement à ma pauvre 89 HW2, je testerai ça sur TIEmu biggrin.gif


Bravo tu viens d'inventer le mode kernel !

36

grin
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

37

J'ai pensé au mode "kernel", et je me doutais bien qu'il y en aurait au moins un qui en parlerait grin

[EDIT: ouais, ce que j'ai décrit à la fin de ./34 fonctionne... mais justement, le but est de faire SANS "kernel "tongue]
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

38

39

bravo tu viens d'inventer la dll nostub grin (cross)

40

Même avec des approches inhabituelles du type "préprocessing d'une partie du code avec M4 + génération de bytecode + utilisation d'un interpréteur" (de mémoire, Calcrogue fait comme ça),

Tu peux préciser ce système stp ? Je connais pas et ça a pas l'air inintéressant. smile

Vu que je n'ai jamais regardé les sources, je pense que le mieux à faire pour moi est de t'envoyer vers le site de l'auteur grin
http://calcrogue.jimrandomh.org/


Le kernel serait utilisé à merveille ici, et c'est vraiment une pessimisation de s'en passer ici ...

Vraiment pas convaincu: l'overhead des DLL limités que j'ai faits est voisin de 1K, c'est à dire moins que la consommation de RAM du "kernel" (il me semble que PreOS consomme quand même des KB).
En ne programmant pas en mode kernel, on a un peu plus le choix d'utiliser ou pas les relocations kernel pour les ROM_CALLs (pas forcément une mauvaise idée) ou BSS (pour l'expérience que j'en ai sur divers programmes, notamment des programmes atteignant la limite des 64 KB, très souvent une mauvaise idée à cause des références xxx.l relogées).


La DLL AMS native est implémentée dans TIGCC, de façon plus générique, mais plus lourde. Je voulais faire moins puissant, mais plus simple et efficace. Sachant que ça n'éviterait pas complètement les back-references vers le programme principal pour les routines de type sprite, qu'il faudrait mettre dans la mémoire partagée.
Je mettrai l'implémentation que j'ai faite en vitesse (~1h30, avec la doc basique) sur tict.ticalc.org, une fois que j'aurai fait un truc plus solide - par exemple, vérifier que HW3Patch est installé ou qu'on est sur PedroM, et transformer les programmes auxiliaires en fichiers OTH non exécutables.


[EDIT2: pendant que je me douchais, j'ai réfléchi que j'avais pas bien détaillé plusieurs trucs, et aussi que j'avais écrit une connerie, donc je corrige grin]
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

41

Ah oui, les fameuses DLL qui ne doivent pas être utilisées en tant que DLL, c'est ça ? cheeky
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

42

Oui, parce qu'elles s'imposent la contrainte (du moins, sur les modèles plus anciens que HW3) de ne pas nécessiter HW2/3Patch. Contrainte que je me suis supprimée.
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

43

Le proof of concept assez moche que j'ai fait, puis rendu plus solide, est à http://tict.ticalc.org/downloads/launchmultiple.tar.bz2 .
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

44


Je dirais que c'est même sacrément cradre sad
DrawChar(0, 0, glob.p1, A_NORMAL);
((void (*)())((unsigned char *)prog1 + 2 + 2 + 4)) (); // Call program directly, skipping magic value
DrawChar(8, 0, glob.p1, A_NORMAL);

sick
[hide]On arrête de pourrir son topic SVP ?[/hide]

45

Ca ne pourrit pas forcément son topic: il en aura peut-être besoin, pour pouvoir facilement grossir son programme sans avoir recours à un "kernel" wink
Ce qui pourrirait vraiment le topic, ce serait une forme quelconque de gros troll AMS native / kernel-based.

Je pourrais commenter un peu plus, ajouter une struct et un typedef pointeur de fonction pour rendre plus lisible le bout de code que tu cites... mais ça va quand même se terminer par un cast vers pointeur de fonction et un appel...
Ce genre de code n'est pas fait pour les débutants, et CBSoft n'en est justement pas un smile
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

46

47

Martial Demolins (./46) :
Le problème d'utiliser TIGCC en nostub avec PedroM, c'est que l'écran est foutu sur la pile à chaque fois, donc ça limite le nombre de shells que tu peux lancer. Suffit en plus que tu utilises un double buffer sur la pile (idée que j'aime pas du tout) pour que ça merde au bout de deux shells.


On va arrêter le HS dans un topic qui a de l'avenir, hein ? Sinon, pour ta réponse, PedroM recopie la pile dans un handle lors du switch de shell, puis la restaure dans son état initial, donc ca ne pose pas de problème de faire des double buffer dans la pile.

48

On peut très bien désactiver les BSS en kernel aussi dans TIGCC, -mno-bss les désactive complètement niveau compilateur.
avatar
Mes news pour calculatrices TI: Ti-Gen
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é

49

Lionel Debroux (./34) :
Tu comptes réimplémenter le bug des unités Atreides ou Harkonnen déviées par un Déviateur Ordos, qui restent contrôlables (une seule fois) après la dissipation de l'effet "déviation", si c'était cette unité qui était préalablement sélectionnée ? Il est marrant, celui-là biggrin.gif
Ah celui-là non grin Par contre tu pourras sans doute utiliser plein de fois tes sauvegardes pour éviter que ta base soit ravagée par la Main de la Mort tongue

Concernant la discussion sur la limite des 64k, effectivement cela m'intéresse mais ce serait qd même mieux d'ouvrir un topic dédié pour en parler.
Lionel Debroux (./42) :
Oui, parce qu'elles s'imposent la contrainte (du moins, sur les modèles plus anciens que HW3) de ne pas nécessiter HW2/3Patch. Contrainte que je me suis supprimée.
Contrainte que je préfèrerais conserver, pour que Dune 2 puisse être installé le plus facilement possible.
avatar
Time is on our side.

THE EXPERT 4 : topics/74978-the-expert-4
THE EXPERT 5 : topics/101326-the-expert-5
DUNE 2 : topics/111247-dune-2

50

Ce jeux a été un monstre sur HP48, good luck wink

51

Mouarf celui de CBSoft a un peu plus la classe pour l'instant (graphiquement).

dune2.gif

Oui je sais c'est pas la même calculatrice gnagnagna grin
avatar
Combien de tas de bois une marmotte pourrait couper si une marmotte pouvait couper du bois ?

52

Wow, fallait avoir le courage de faire ça en B/W...
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

53

Y'avais aussi une version en niveau de gris sur HP 48g/49g :

dune3949.gif

54

j'y ai passé des heures sur ce jeu tongue et il déchire tout.
Le seul jeu qui déchirait autant était ice cube.

55

Par contre graphiquement, ça risque pas de poser problème pour distinguer les unités ennemies des siennes?
Je suppose que tu doit faire ça en inversant les planes de niveau de gris.
avatar

56

57

./1 (dsl si la question a deja été posé) ça bave pas trop sur une VraiTI ?

Sinon chapeau pour le boulot grin
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

58

Uther (./55) :
Par contre graphiquement, ça risque pas de poser problème pour distinguer les unités ennemies des siennes?
Les unités ennemies sont assombries (le blanc devient gris clair, le gris clair devient gris foncé, etc.), aucun souci à se niveau là wink
Godzil (./57) :
(dsl si la question a deja été posé) ça bave pas trop sur une VraiTI ?
Je ne trouve pas, ça doit être du au fait que le scrolling est limité (puisqu'on scroll de 16 en 16), et peut-être aussi qu'il y a peu de blanc pur (le sable étant gris clair). Or qui dit pixels blancs dit pixels qui prennent du temps pour s'éteindre, et ça, ça fait baver.
avatar
Time is on our side.

THE EXPERT 4 : topics/74978-the-expert-4
THE EXPERT 5 : topics/101326-the-expert-5
DUNE 2 : topics/111247-dune-2

59

Dis, je suis sûr que t'es pas cap de faire un screenshot animé smile
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

60

./59 Ben ya ./1 non ?
avatar
Combien de tas de bois une marmotte pourrait couper si une marmotte pouvait couper du bois ?