Logicielsmoto.com

Nous sommes le 19 Mar 2024, 10:24

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 276 messages ]  Aller à la page 1, 2, 3, 4, 5 ... 19  Suivante
Auteur Message
MessagePosté: 01 Fév 2020, 14:44 
Hors ligne

Inscription: 06 Avr 2010, 01:59
Messages: 477
Bonjour à tous,
Passionné par mon premier ordi le Thomson (le TO9),
je me suis lancé pour le fun! dans mon temps libre sur ce projet pour le 40ème anniversaire PAC-MAN.
En espérant pouvoir avoir une version jouable en 2020 ! (bon ça va être chaud un peu mais bon :voyons: )

C'est mon premier programme en assembleur sur TO8,
(si j'y arrive j'aimerais bien sûr que ça fonctionne sur MO et TO, mais je suis pas assez balèze en assembleur !! )

Je remercie ce forum et les intervenants qui m'aident à y voir plus clair et avancer beaucoup plus vite que seul :bien:

Built With
Mac mini 2014 - Apple Computer
Visual Studio Code - Code editor
Assembly - 6809 Assembly Language
c6809 - assembly compiler
Hex Fiend - Hex editor for Mac OS X
Audacity - Audio samples editor
GrafX2 - Graphic software
Graphics web tools - custom javascript tools
Audio web tools - custom javascript tools
DCMOTO - 8 bits Thomson computer emulator
Thomson TO8 - 1986 Thomson 8 bits Computer

Voila le début ...!

Image
Image

Image

Image

_________________
Image


Dernière édition par adnz le 27 Mai 2021, 00:22, édité 3 fois.

Haut
 Profil  
Répondre en citant le message  
MessagePosté: 09 Fév 2020, 00:09 
Hors ligne

Inscription: 06 Avr 2010, 01:59
Messages: 477
D'autres artwork...

Image

Image

_________________
Image


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 24 Fév 2020, 21:18 
Hors ligne

Inscription: 21 Fév 2020, 11:38
Messages: 366
adnz a écrit:
Bonjour à tous,
Passionné par mon premier ordi le Thomson (le TO9),
je me suis lancé pour le fun! dans mon temps libre sur ce projet pour le 40ème anniversaire PAC-MAN.
En espérant pouvoir avoir une version jouable en 2020 ! (bon ça va être chaud un peu mais bon :voyons: )

Image


Hmm très bonne idée, j'ai référencé 5 jeux PacMan (et clone) existant sur Thomson. La meilleure version, la plus fidèle est celle de Titus (mais avec des petits plus). Il y a aussi un clone appelé "Panique Atomique chez NovaSoft" qui n'oblige pas à manger toutes les gommes mais dont le but est d'aller le plus vite possible à la sortie

Pour le langage, je te suggère "Pascal Base" si tu veux du langage Binaire sans t'empêtrer dans l'assembleur. En plus c'est un langage assez proche du C au niveau syntaxe!!

Sinon j'ai récemment fait un clone de pacMan appelé "Poppy Man" en javascript. Je peux donc donner certaines voies

Il y a la partie graphique du labyrinthe et la partie Data:
- La partie data, admettons que ton labyrinthe fasse 128x128, chaque carré de 8x8 pxl (ça peut être du 12x8) est représenté par un octet dans un tableau à 2 dimensions (16x16 cases) qui sont les coordonnées numéraires de chaque case qui est soit vide soit pleine
- Sur PacMan, j'ai remarqué que les gommes étaient sur des cases de 8x8 alors que la taille du Pacman et des fantomes sur des 16x16, il faut tenir compte de àa dans les déplacement (les couloirs font du 16x16 mais on peut gérer les pacgommes sur du 8x8, ton tableau doit gérer du 8x8
- Le déplacement des fantômes : ça peut se faire de manière aléatoire mais dans la doc du pacman original, il est dit que chacun des 4 fantôme a un déplacement qui lui est propre. j'ai fais du 100% aléatoire comme pour Miss Pacman, mais il semble qu'on doit quand même indiquer aux fantôme de s'approcher du Pacman quand ils sont proche (un algorithme de recherche de chemin le plus court par fonction récursive (se fait très bien en langage pascal) avec des "NSOE" me parait la meilleure approche. Des commentaires sur le net indique des algorithmes du type A* (https://fr.wikipedia.org/wiki/Algorithme_A*) mais cela me parait pas très adapté dans le cas du pacman (à moins de tracer une table des graphes initialement) puisqu'ici on ne cherchje pas à joindre des noeud mais des positions sur le parcours. Si le fantome se trouve à moins de 6 cases du Pacman, on déclenche la poursuite s'il n'est pas bleu, dans le cas invesre, s'il est bleu, il cherchera à s'en éloigner (et là par contre, il faut le faire partir dans des cases plus éloignés du Pacman).
- Quand un fantome a été gobé, il y a un parcours à trouver pour lui faire rejoindre la loge. On voit des version de Pacman où ce parcours est assez bizarre (j'en ai vu une version Google notamment, où les yeux faisaient parfois un chemin à rallonge)

Programmer le jeu du Pacman n'a rien d'être simple comme tu le vois! Bon courage.


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 26 Fév 2020, 14:28 
Hors ligne

Inscription: 06 Avr 2010, 01:59
Messages: 477
salut Neotenien

Merci pour ton post, je connaissais pas toutes ces versions de Pacman, juste celle de Titus.

Et je regarderais "Pascal Base" une fois que je serais un peu plus à l'aise sur l'assembleur pour bien comprendre les bases du 6809,
car, à voir si le code assembleur généré est plus ou aussi rapide d'exec. que si on l'écrit soit même en asm. ;)

Sinon, le choix de l'assembleur est volontaire :D ,
j'avais à l'époque toujours rêvé d'en faire mais j'avais pas la cartouche ! ( c'est la revanche du passé lol )

Et ce forum m'aide carrément grave pour avancer :bien:

A l'époque je rêvais que certain jeux Amstrad sortent sur Thomson, alors je commençais toujours une version en basic, mais trop trop lent alors jamais fini jusqu'au bout ...

j'avais tout fais au pixel avec un programme de dessin que j'avais écrit en basic, avec le joystick point par point, le temps que j'y passais lol :D

ImageImageImageImage

ImageImage

_________________
Image


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 02 Mar 2020, 20:12 
Hors ligne

Inscription: 21 Fév 2020, 11:38
Messages: 366
Beau travail graphique, je suis impressionné!!

C'est quel mode ? Texte 320x200 16 couleurs ? Ce mode n'est pas terrible pour l'effet bave. Et dire que l'Atari ST a juste le double en RAM vidéo et quand on voit les jeux qu'il y a eu dessus (certes avec un 68000 à 8 MHz aussi)

Je me demande si sur Thomson il est possible de créer un jeu utilisant la technique de Obsession sur ST, à savoir + de couleurs que possible dans un mode vidéo (320x200 4 couleurs) pour un jeu de flipper à scrolling multidirectionnel en 32 couleurs ?. A mon avis, la fréquence d'horloge serait insuffisante.


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 03 Mar 2020, 00:31 
Hors ligne

Inscription: 06 Avr 2010, 01:59
Messages: 477
J'utilisais le mode 320x200 16c à effet baveux comme tu dis lol. (sauf la pres de robocop qui est en 160x200x16c)

Je veux pas m'avancer mais faire un jeux jouable avec ++ de 16 couleurs sur thomson à mon avis c'est pas très possible,
LES spécialistes du 6809 comme certaines personnes de ce forum genre Prehisto et autres peut être pourront confirmer !

Ils arrivent à faire des demos à + de 16 couleurs, mais !!
C'est tellement compliqué de faire un jeux fluide avec 16 couleurs déjà :voyons:

_________________
Image


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 03 Mar 2020, 02:01 
Hors ligne

Inscription: 06 Avr 2010, 01:59
Messages: 477
Etat actuel :

A faire pour avoir une version jouable minimum :
- le tableau et le "mangeage" des pacgums
- et au moins 1 fantôme qui bouge ...

phpBB [video]


ps: c'est un peu plus rapide en vrai que dans la vidéo !!

_________________
Image


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 05 Mar 2020, 13:32 
Hors ligne

Inscription: 21 Fév 2020, 11:38
Messages: 366
Hello ADNz

Eh bien, je trouve les graphisme hyper réussi! Bien meilleur que la version arcade de Pac-Man. C'est vrai que le Pac-Man parait lent sur la vidéo. Voici a page http://albatros.concept.free.fr/Softwares_AlCo/AJAX/poppyman.php, sir laquelle tu peux voir le petit clone de pac-man que j'ai développé en 1 mois en JavaScript+CSS+SVG (avec beaucoup de lecture à propos du déplacement des fantômes, mais j'ai finalement choisi un déplacement aléatoire pour les délais).

Comme je l'ai dit dans un message précédent, il y a 5 clones de Pac-Man sur Thomson:
- Glouton de Titus (le plus proche de l'original)
- Glouton (une version beaucoup plus lente et inintéressante)
- Bidul (Infogramme 1984) : une version où lm'on doit échapper au réveil matins en gobant les gomme et aller à la maison (mauvaise jouabilité et jeu assez dur)
- Crocky 2 (qui ressemble assez à PacMan, les graphismes sont pas mal et quand on ramasse des marteaux, ça crée temporairement des barrières sur le labyrinthe... Il y a différents labyrinthes).
- Panic Atomic chez NovaSoft (pas un vrai pacman, mais le principe est un peu le même... Le graphisme et l'animation sont très chouettes mais le jeu est assez difficile).

Je pense que normalement tu pourras avoir fini le jeu avant la fin 2020 (une dizaine d'heure par semaine c'est suffisant). La partie difficile c'est surtout la gestion des déplacement des fantômes. Trouver un algorithme de recherche de parcours pour rejoindre la "cage" des fantômes quand ils ont été gobés. Il y a aussi les autres sprites (fruits) mais concernant l'animation, tu n'as pas à redessiner le labyrinthe, juste à remplacer les gommes avalées par un carré noir

Pour info, il y a eu également Miss Pacman avec 4 labyrinthes différents, PacLand (qui est aussi faisable sur TO, si on considère des jeux tels Mission ou MGT!!) et il y a un jeu méconnu de tous mais qui pourtant est un dérivé "réussi" de pacman à mon sens "labybug" (pas le dessin animé mais le jeu d'arcade de 1981).


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 05 Mar 2020, 17:25 
Hors ligne

Inscription: 06 Avr 2010, 01:59
Messages: 477
salut, merci.

Ouais c'est pas gagné, ça prend du temps !! en plus je dois réécrire ma routine d'affichage de sprite car
j'ai mis pas mal de FCB.... et ça ma bouffé toute la mémoire non commutable de FCB donc plus de place pour ecrire du code ! :voyons:

du coup j'ai LOADM mes sprites en mémoire.
Avec des FCB je pouvais mettre une valeur pour chaque fin de colonne du sprite et une pour la fin du sprite, 2 CMP dans la boucle et voila.

... alors que pour charger depuis un ficher moto export .BIN modifié de grafX2, les octets sont plus rangés pareils mais entrelacés en mémoire
(et c'est découpé en ram A $A000->... / ram B $BF80->...) !

A moins d'écrire un script qui mets mes FCB en fichier .BIN que je peux charger peut être, comme ça je pourrais garder ma routines ! à voir !

bref, galère de réécrire la routine...

en plus j'ai trop de taf en ce moment ...

_________________
Image


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 06 Mar 2020, 23:59 
Hors ligne

Inscription: 06 Avr 2010, 01:59
Messages: 477
Bon c'est pas fluide le process de créer le .BIN, mais ça marche.

J'ai viré les graphismes stockés dans les FCB en code, vers la bank6 en mémoires, du coup j'ai libéré de la mémoire non commutable. :good:

ET, je peux utiliser ma routine d'affichage de sprite sans modification. :good:

_________________
Image


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 07 Mar 2020, 02:51 
Hors ligne

Inscription: 06 Avr 2010, 01:59
Messages: 477
Pour faire joujou :)

Image

https://www.oxustudio.com/to8/forum/pacman-dev26-20200307.fd

B : load disk
SPACE : display page (splashscreen->intro->game)
JOYSTICK : Pacman directions (ctrl+arrows to emulate joystick in DCMOTO emulator)

[Edit] MAJ du fichier .fd, j'ai activé la music d'intro...

_________________
Image


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 07 Mar 2020, 16:45 
Hors ligne

Inscription: 06 Avr 2010, 01:59
Messages: 477
Autre artwork... :langue:

Image

_________________
Image


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 08 Mar 2020, 21:34 
Hors ligne

Inscription: 21 Fév 2020, 11:38
Messages: 366
adnz a écrit:
Pour faire joujou :)

https://www.oxustudio.com/to8/forum/pacman-dev26-20200307.fd

B : load disk
SPACE : display page (splashscreen->intro->game)
JOYSTICK : Pacman directions (ctrl+arrows to emulate joystick in DCMOTO emulator)

[Edit] MAJ du fichier .fd, j'ai activé la music d'intro...


Wow c'est franchement pas mal!! La vitesse est relativement fluide. Un petit bug qui fait que parfois PacMan passe sur des zones à un pixel à droite (par rapport aux obstacles). Je veut dire que quand tu décales Pacman d'un Pixel sur la droite ca peut sembler aller sur les obstacle, tu n'a pas dû employer ma méthode (c'est à dire utiliser une matrice de 1 et 0 et pour le déplacement sur le labyrinthe se servir de ça... Prend exemple sur mon jeu PoppyMan en JavaScript pour comprendre les déplacements et comment ça fonctionne!!)

D'autres remarques :
- Pacman est sensé toujours "courir" sauf quand il arrive face à un mur (et là tu peux changer de direction.. Dans Poppy Man, j'avais pris l'option de pouvoir changer de direction tous les 16 Px (modulo16=0), après c'est un choix perso
- Pour les 2 sorties, il faut utiliser le modulo (exemple, quand tu sors vers la droite, si c'est en X = 24, le cran suivant tu l'obtiens en faisant X=(X+1)%24 (ici je parle en terme de "caractère" pas de Pixel).. Pour le terrain tu adaptes en multipliant par 8. Si c'est par la gauche, tu fais If X-1<0 X=X+24. En revanche, vu que le pacman fait

Au niveau graphisme c'est impec, cependant je me demande ce que sont ces petits traits de couleur en haut ?

Comment tu fait pour les chiffres vu qu'en mode bitmap 16, ça ne gère pas les caractères ?

Je remets le Lien PoppyMan


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 09 Mar 2020, 10:24 
Hors ligne

Inscription: 06 Avr 2010, 01:59
Messages: 477
salut, merci.

Pour l'affichage des nombres, j'en ai parlé ici http://www.logicielsmoto.com/phpBB/viewtopic.php?f=3&t=571&start=150#p6086
Ca affiche un sprite...

Pour le test de collision, oui y'a un petit bug, car c'est un code de test pixel noir ou pas !! c'est provisoire !
Je réfléchi le comment de la structure ASM du tableau avec les tests et tous ...

Le truc en ASM c'est qu'il faut trouver des astuces, bidouilles, si je balance des calcules maths partout comme je le ferais en JS, ça va trop ralentir !!
j'étudie un peu les sources des demos de HCL, les trucs techniques qu'ils font :eek: !

Les points de couleurs du haut c'est ma palette de 16 couleurs, c'est plus pratique de l'avoir sous la main, car je MAJ souvent, je l'enlèverais à la fin...

_________________
Image


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 09 Mar 2020, 21:41 
Hors ligne

Inscription: 21 Fév 2020, 11:38
Messages: 366
adnz a écrit:
salut, merci.
Pour le test de collision, oui y'a un petit bug, car c'est un code de test pixel noir ou pas !! c'est provisoire !
Je réfléchi le comment de la structure ASM du tableau avec les tests et tous ...

Les points de couleurs du haut c'est ma palette de 16 couleurs, c'est plus pratique de l'avoir sous la main, car je MAJ souvent, je l'enlèverais à la fin...


Je te conseille ma méthode celle de PoppyMan (et que j'ai décrite auparavant)... Tu crée une matrice shorty (du genre 10x20 octets) dans laquelle tu mets mettons "255" si c'est un obstacle et 0 (si c'est un couloir) ou 1 (s'il contient une gomme) ou 2 (si grosse gomme). Et la position de ton Pacman se fera modulo 8 ou 16 (suivant les dimensions adoptées). Si le modulo est à 0 tu regarde la position dans la petite matrice pour vérifier que c'est pas un mur. Tu devrais regarder mon code PoppyMan pour t'en inspirer, tout (ou presque) le nécessaire pour PacMan y est. Tester les points de couleur sur le vrai labyrinthe est galère... Tu dois dessiner le labyrinthe en fonction de la Matrice des "murs". Je rajoute le lien vers les data (maze[0] ici, puisque je projette d'y ajouter les labyrinthes de Miss Pacman également) du labyrinthe du Poopy-Man (qui est exactement le même que le Pac-man Originai, donc celui que tu es en train de construire).. Pour info, la taille de chaque "case" est sensée être celle de chaque PacGum, donc /4 par rapport au Pacman (on va dire 4x8 sur ton projet Thomson, alors que ton Pacman doit faire 8x16, idem pour la largeur des couloirs). Ici 255 représente un mur (faire le test en comparant avec 192, soit les 2 premiers bits !: ex : (if c & 192 == 192)), et 127 représente la porte du manoir des fantômes=> voir mon code pour comprendre comment j'ai fait), 1 représente un couloir avec un pac gum, 0 un couloir vide. Tu peux ajouter 2 pour la grosse pacgom, ou un autre nombre représentant un des "bonus" fruits (mon jeu Poppy Man ne lui permet pas de se transformer pour dévorer les fantôme, j'ai fait le strict minimum).
Concernant les fantômes, ils ne sont PAS inclus dans la matrice!! Chacun a son propre système de coordonnée tout comme PacMan. Tu as toutes les billes en mains maintenant, si ce n'est le choix que tu fait pour le déplacement des fantômes! Tu as une routine de l''extramoniteur "random" (Mais tu peux en créer une je peux te fournir l'algorithme en Pascal!), ou il y a également les règles du Pacman Originales (chaque fantôme a sa propre identité, mais c'est assez complexe!! Miss PacMan n'avait pas ce genre de complexification, c'est à toi de voir... Si tu veux que je te fournisse un algo de recherche pour atteindre Pacman... C'est possible également, mais ça serait plus simple de le faire en Pascal pour la récursivité!).

Alors c'est sûr que ceci serait plus court à programmer avec Pascal Base...

D'après ce que je sais, je crois que Namco avait mis 18 mois pour créer PacMan! Moi j'ai mis 1 mois à développer PoppyMan (intro inclus) sachant que j'ai perdu pas mal de temps dans la recherche de déplacement idéale des fantômes (c'est à dire choisir ce qui était le mieux).


Haut
 Profil  
Répondre en citant le message  
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 276 messages ]  Aller à la page 1, 2, 3, 4, 5 ... 19  Suivante

Heures au format UTC + 1 heure


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 4 invités


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages
Vous ne pouvez pas joindre des fichiers

Rechercher:
Aller à:  
cron
Développé par phpBB® Forum Software © phpBB Group
Traduction par phpBB-fr.com