Logicielsmoto.com

Nous sommes le 28 Mar 2024, 23:03

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 598 messages ]  Aller à la page Précédente  1 ... 11, 12, 13, 14, 15, 16, 17 ... 40  Suivante
Auteur Message
MessagePosté: 22 Sep 2021, 13:00 
Hors ligne

Inscription: 21 Avr 2019, 21:48
Messages: 433
Localisation: Var
Le but initial étant de pouvoir afficher de grandes maps variées en terme de décors, j'utilise un affichage par bloc de 16x8, ça permet d'avoir un tileset "contenu".

Comme tu le dis un affichage par ligne serait plus performant pour le scroll, mais on n'aurait pas assez de place pour les maps de Rick.
Ceci dit c'est une idée qui pourrait s'appliquer dans d'autres cas.


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 22 Sep 2021, 22:59 
Hors ligne

Inscription: 06 Juin 2004, 08:23
Messages: 464
J'observe qu'il y a un scroll vertical mais pas horizontal. De vague mémoire (j'y ai beaucoup joué !), je crois que c'est aussi comme ça dans le rick dangerous d'origine ? Mais ma question, c'est plutot est-ce que ce serait possible d'avoir aussi le scroll horizontal ? Je pense toujours à un jeu d'aventure type Zelda, c'est pour ca que je pose cette question (encore que dans Zelda, toute la carte se deplace a chaque mouvement du personnage, pas aux extremites de l'ecran - mais le scroll en limite d'ecran m'irait bien aussi pour un tel jeu)


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 22 Sep 2021, 23:06 
Hors ligne

Inscription: 21 Aoû 2006, 09:06
Messages: 1802
Localisation: Brest
Fool-DupleX a écrit:
J'observe qu'il y a un scroll vertical mais pas horizontal. De vague mémoire (j'y ai beaucoup joué !), je crois que c'est aussi comme ça dans le rick dangerous d'origine ?

Oui c'est comme ca
phpBB [video]

Ca fait parti de l'image de marque du jeu (rick est un jeu "vertical") et on retrouve ce scroll sur toutes les plateformes:
phpBB [video]

phpBB [video]

phpBB [video]


Sauf sur MSX, mais là tout est moche:
phpBB [video]


A noter: les bruitages font beaucoup à l'ambiance du jeu, je trouve perso. Les versions dont les bruitages ne sont pas les mêmes sont vraiment moins bien.

_________________
Good morning, that's a nice Tnetennba


Dernière édition par Samuel Devulder le 22 Sep 2021, 23:32, édité 2 fois.

Haut
 Profil  
Répondre en citant le message  
MessagePosté: 22 Sep 2021, 23:13 
Hors ligne

Inscription: 21 Avr 2019, 21:48
Messages: 433
Localisation: Var
Oui pas de problème pour un scroll horizontal avec le système mis en place, c'est juste qu'il n'y en a pas dans Rick.
Dans qq jours je ferai une map type zelda si tu veux comme ça je montrerai le scroll dans les deux directions sur une grande carte.
Tu as raison, étant donné que le framerate tombe à 10fps lors du scroll, mieux vaut l'utiliser pour les transitions que de faire un scroll à chaque mouvement.

(Edit) merci sam pour le recensement !


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 23 Sep 2021, 17:21 
Hors ligne

Inscription: 06 Juin 2004, 08:23
Messages: 464
Punaise, le graphisme sur Sinclair, il est ultra-chiadé, j'adore :love:


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 23 Sep 2021, 18:01 
Hors ligne

Inscription: 21 Aoû 2006, 09:06
Messages: 1802
Localisation: Brest
On aurait presque envie de le faire pour MO5, n'est-ce pas :)
(mais je crois qu'il utilise les attributs de demi-intensité)

_________________
Good morning, that's a nice Tnetennba


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 23 Sep 2021, 18:08 
Hors ligne

Inscription: 06 Juin 2004, 08:23
Messages: 464
Mais carrément ! :up:


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 25 Sep 2021, 22:09 
Hors ligne

Inscription: 06 Avr 2010, 01:59
Messages: 478
Pratiquement au pixel comme sur amiga, et le color clash est super bien géré on dirait que y'en n'a même pas (à part le perso, normal ;) )
mais moi aussi cette version spectrum m'a bien surpris :good:

_________________
Image


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 30 Sep 2021, 10:13 
Hors ligne

Inscription: 21 Avr 2019, 21:48
Messages: 433
Localisation: Var
Je bosse sur l'intégration des graphismes en RLE pour enrichir le moteur de rendu des sprites.
Cela permettra de gagner de la place par rapport à certains cas ou les sprites compilés n'ont pas d'interet (menus, images statiques, ...)
Je suis reparti du format map (pas le header mais juste la partie données compressées) et j'ai ajouté la notion de pixel transparent de la manière suivante :


Code:
nn xx              ; run of n consecutive identical bytes (2 to 255) or non-identical bytes (1), value xx
00 nn xx xx xx ... ; run of n consecutive non-identical bytes (2 to 255), values xx follow
00 01 xx           ; apply write ptr offset xx 1 to 254 (decode should use abx to apply offset)
00 01 ff xx xx     ; apply write ptr offset xx 1 to 32767      
00 00              ; end of bitplane   


j'utilise la balise 00 01 xx (3 octets) qui n'a pas d'intérêt dans le format MAP d'origine, car déjà couvert par la balise 01 xx (2 octets)
Du coup je peux encoder l'usage des 16 couleurs ainsi que les déplacements du pointeur de destination.

Une autre idée pour le format ou ça vous semble bon ?
Je ne cherche pas la compatibilité MAP, c'est juste pour pas réinventer la roue ...


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 30 Sep 2021, 14:36 
Hors ligne

Inscription: 21 Avr 2019, 21:48
Messages: 433
Localisation: Var
Après quelques essais, le format suivant semble plus efficace en terme de taille :

Code:
        // nn xx              ; run of n consecutive identical bytes (2 to 254) or non-identical bytes (1), value xx
      // 00 nn xx xx xx ... ; run of n consecutive non-identical bytes (2 to 255), values xx follow
      // ff xx              ; apply write ptr offset xx (1 to 255) (decode should use abx to apply offset)
      // ff 00 xx xx        ; apply write ptr offset xx (1 to 32767)      
      // 00 00              ; end of bitplane   


Sur mon jeu de test, les images prennent 2 fois moins de place avec ce format par rapport aux sprites compilés.
reste à voir la rapidité d'affichage ;-)


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 30 Sep 2021, 19:09 
Hors ligne

Inscription: 21 Aoû 2006, 09:06
Messages: 1802
Localisation: Brest
Citation:
// ff 00 xx xx ; apply write ptr offset xx (1 to 32767)

Pourquoi 32767 ? tu peux aller jusqu'à 65535, non ? (bon en pratique ca n'a pas d'intérret.

Quelque part je pense que les répétitions ne sont jamais très nombreuses horizontalement. Du coup je me demande si en travaillant au niveau bit tu ne peux pas être encore plus compact:
Code:
bits
00000000 -> fin
0nnnnnn0 XX -> répète XX nn+1 fois (1 à 64 inclus)
0nnnnnn1  -> n octets transparents
10nnnnnn XX YY ... -> recopie XX YY ... (nn + 1 octets)
11xxxxxx XX --> saute au dessus des 1 +xxxxxxXX (14 bits = 16384 octets, soit une page RAM)
ou dans le même genre. Le décodage peut être assez rapide
Code:
LOOP
  LDB ,Y+
  BMI  L1xxxx
  BPL  L0xxxx
  RTS
L1xxxx
  LSLB
  BPL  L10xxx
  LDD -1,Y
  LEAY 1,Y <-- beurk lent, mais rare
  LEAY 1,X <-- beurk lent, mais rare
  ANDA #%00111111
  LEAX D,X
  BRA LOOP
L10xxx
  LDA ,Y+
  STA ,X+
  SUBB #2 <-- ben oui on a fait LSL
  BGE  L10xxx
  BRA LOOP
L0xxxx
  LSRB
  BCC L0xxx0
  ABX
  BRA LOOP
L0xxx0
  LDA ,Y+
LOOP2
  STA ,X+
  DECB
  BGE LOOP2
  BRA LOOP
on doit pouvoir faire encore mieux en utilisant les codes long pour les trucs rares comme "FIN" et "saut sur 14 bits".

_________________
Good morning, that's a nice Tnetennba


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 30 Sep 2021, 19:49 
Hors ligne

Inscription: 21 Avr 2019, 21:48
Messages: 433
Localisation: Var
Merci !

Oui c'est vrai compte tenu de l'entrelacement les répétitions sont plus courantes en vertical. D'ailleurs le format MAP encode dans le sens vertical puis horizontal si j'ai bien compris ...

Pour le déplacement je voulais dire +-15 bits : -32768,32767
(le négatif c'est pour le positionnement de départ car la référence de position est centrée dans le moteur)

Je termine de debug ma routine actuelle et je me penche sur le code que tu m'a envoyé.


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 30 Sep 2021, 22:35 
Hors ligne

Inscription: 21 Avr 2019, 21:48
Messages: 433
Localisation: Var
Bon j'ai oublié un léger détail ... il faut que j'encode les cas de pixels partiellement transparent (à gauche ou à droite). la transparence ne peut pas être gérée par l'index couleur ;-) c'est la que ça va se compliquer !
il va falloir effectivement passer par un encodage bit à bit.

Edit : ou alors justement j’utilise un id de couleur comme indice de transparence. Charge a l’encodeur via une balise de positionner un code couleur non utilisé sur un segment de l’image pour indiquer au décodeur quel est l’index de transparence. Pour encoder on cherche la séquence la plus longue jusqu’à ce que tous les indexes de couleurs aient été utilisés et on prend la dernière couleur trouvée comme indice de transparence. On fait ça sur chaque segment jusqu’à la fin du fichier.

Autre solution : on gere les quantités répétées et les offsets de déplacement en nibble et pas en byte …


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 30 Sep 2021, 23:32 
Hors ligne

Inscription: 21 Aoû 2006, 09:06
Messages: 1802
Localisation: Brest
Pour la transparence tu peux avoir un code supplémentaire qui réalise un masque et/ou. Il servira au debut et aux fins de lignes.
  • 00 000000 => fin
  • 00 nnnnnn => skip(n unsigned 6 bits)
  • 01 000000 (and) (or) => masque (code supplémentaire en tenant compte que skip(0) sert à rien
  • 01 nnnnnn (byte) => repéte byte nnnnn fois (6 bits unsigned)
  • 10 nnnnnn (b1) .. (bn+1) ==> recopie les n+1 octets
  • 11 000000 => inutilisé peut servir plus tard
  • 11 nnnnnn (byte) => skip(14 bits signés)
Code:
LOOP
  LDA ,Y+
  LSLA
  BCC L0x
  BPL L10x
L11x (skip 14 bits)
  LSLA 
  ASRA     extension de signe
  ASRA     extension de signe
  BEQ INUTILISE
  LDB ,Y+
  LEAX D,X
  BRA LOOP
L10x (recopie)
  LDB ,Y+
  STB ,X+
  SUBA #2
  BCC L10x
  BRA LOOP
L0x
  BEQ FIN
  BMI L01x
SKIP (saute 6 bits)
  LDB -1,Y
  ABX
  BRA LOOP
L01x
  ANDA #%00111111
  BEQ MASK
  LDB ,Y+
REPETE (répète octet)
  STB ,X+
  SUBA #2
  BCC  REPETE
  BRA LOOP
MASK
  LDB ,Y+
  ANDB ,X
  ORB ,Y+
  STB ,X+
  BRA LOOP

_________________
Good morning, that's a nice Tnetennba


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 01 Oct 2021, 08:36 
Hors ligne

Inscription: 21 Avr 2019, 21:48
Messages: 433
Localisation: Var
bien vu, ça va faire gagner pas mal de place.

Le fait que le nombre de répétitions, ou l'offset soit codé sur moins de bits n'est pas gênant, on a rarement de grandes répétitions ou de grands sauts.


Haut
 Profil  
Répondre en citant le message  
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 598 messages ]  Aller à la page Précédente  1 ... 11, 12, 13, 14, 15, 16, 17 ... 40  Suivante

Heures au format UTC + 1 heure


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 47 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