Logicielsmoto.com

Nous sommes le 13 Déc 2024, 04:01

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 602 messages ]  Aller à la page 1, 2, 3, 4, 5 ... 41  Suivante
Auteur Message
MessagePosté: 11 Aoû 2020, 17:46 
Hors ligne

Inscription: 21 Avr 2019, 21:48
Messages: 437
Localisation: Var
Bonjour à tous,

J'ai écrit un outil de développement pour TO8 (mode bitmap 16) que je souhaite partager avec vous.
Il permet de gérer :
- la génération d'une image fd
- le boot en assembleur
- les animations de sprites en double buffering
- la génération de sprites compilés a partir de planches d'images
- la routine d'effacement de sprite
- la routine de positionnement de sprite par pas de 2 pixels
- l'organisation optimisée de sprites en page mémoire
- le chargement des données de sprites en page mémoire
- la conversion d'une image en données prête à l'affichage
- la génération de la palette de couleur

Il fonctionne en java et prend en entrée un fichier de config.
L'outil permet de faire un build a partir de votre code source assembleur en y intégrant des images compilées et des données d'animation.
Le résultat est une image de disquette fd et sd
Utilisé dans un IDE comme Eclipse, il permet de builder et de tester sous emulateur en un clic.

Vous trouverez en pièce jointe l'outil et une démo.
La démo montre un jeu de plateforme, mais il est possible d'implémenter n'importe quel style de jeu, l'outil à pour vocation d'être principalement un moteur d'animation.

phpBB [video]


Voici en exemple, le fichier de config de la demo livrée avec l'outil :
Code:
# Configuration du BuildDisk
# **************************

# le fichier bootfile contient le code assembleur qui sera encodé dans le secteur d'amorçage
bootfile=./input/CODE/BOOT.ASM

# le fichier mainfile contient le code assembleur qui sera chargé depuis
# la disquette par le code d'amorçage et implanté dans la mémoire vive pour y être exécuté
mainfile=./input/CODE/MAIN.ASM

# le fichier outputfile est le nom qui sera donné aux fichiers .fd et .sd qui seront produits en sortie
outputfile=./output/DISK

# indique l'executable à utiliser pour la compilation du code pour Thomson TO8
compiler=c6809.exe

# indique le tag utilisé dans le fichier mainfile pour positionner les scripts d'animation
animation.tag=<ANIMATION_TABLE>

# Liste les pages réservées pour les sprites compilés (la page impaire suivant chaque page paire est également occupée)
# Lors du build, la log affiche les pages réellement occupées et celles disponibles suite à la compilation des sprites
memorypages=4;6;8;10;12;14;16;18;20;22;24;26;28;30


# Fichier PNG de type couleurs indexées 8Bits, Index de palette : Transparence=0, couleurs=1-16
# animation.image.n=asmtag;tag;pagegroup;subgroup;file(png);images(nb);flipH(0|1)
animation.image.1=HERO_IDLE_L;HIL;1;0;./input/SPRITES/HERO_IDLE-R.png;1;1
animation.image.2=HERO_IDLE_R;HIR;1;0;./input/SPRITES/HERO_IDLE-R.png;1;0
animation.image.3=HERO_WALK_L;HWL;1;0;./input/SPRITES/HERO_WALK-R.png;12;1
animation.image.4=HERO_WALK_R;HWR;1;0;./input/SPRITES/HERO_WALK-R.png;12;0
animation.image.5=HERO_RUN_L;HRL;1;0;./input/SPRITES/HERO_JOG-R.png;10;1
animation.image.6=HERO_RUN_R;HRR;1;0;./input/SPRITES/HERO_JOG-R.png;10;0
animation.image.7=HERO_JUMP_L;HJL;1;0;./input/SPRITES/HERO_JUMP-R.png;10;1
animation.image.8=HERO_JUMP_R;HJR;1;0;./input/SPRITES/HERO_JUMP-R.png;10;0

# animation.script.n=asmtag;frameDuration;nbFrames;ABS(nbFrames absolue)|GSP(nbFrames relatif a la vitesse);tagRef;Image;...;GO|RET;asmtag cible;image cible;image retour
animation.script.1=HERO_IDLE_L;24;ABS;HIL:0;GO;HERO_IDLE_L;0;0
animation.script.2=HERO_IDLE_R;24;ABS;HIR:0;GO;HERO_IDLE_R;0;0
animation.script.3=HERO_WALK_L;6;GSP;HWL:0;HWL:1;HWL:2;HWL:3;HWL:4;HWL:5;HWL:6;HWL:7;HWL:8;HWL:9;HWL:10;HWL:11;GO;HERO_WALK_L;0;0
animation.script.4=HERO_WALK_R;6;GSP;HWR:0;HWR:1;HWR:2;HWR:3;HWR:4;HWR:5;HWR:6;HWR:7;HWR:8;HWR:9;HWR:10;HWR:11;GO;HERO_WALK_R;0;0
animation.script.5=HERO_RUN_L;6;GSP;HRL:0;HRL:1;HRL:2;HRL:3;HRL:4;HRL:5;HRL:6;HRL:7;HRL:8;HRL:9;GO;HERO_RUN_L;0;0
animation.script.6=HERO_RUN_R;6;GSP;HRR:0;HRR:1;HRR:2;HRR:3;HRR:4;HRR:5;HRR:6;HRR:7;HRR:8;HRR:9;GO;HERO_RUN_R;0;0
animation.script.7=HERO_JUMP_L;4;GSP;HJL:0;HJL:1;HJL:2;HJL:3;HJL:0;HJL:1;HJL:4;HJL:5;HJL:0;HJL:1;HJL:6;HJL:7;HJL:0;HJL:1;HJL:8;HJL:9;GO;HERO_JUMP_L;0;0
animation.script.8=HERO_JUMP_R;4;GSP;HJR:0;HJR:1;HJR:2;HJR:3;HJR:0;HJR:1;HJR:4;HJR:5;HJR:0;HJR:1;HJR:6;HJR:7;HJR:0;HJR:1;HJR:8;HJR:9;GO;HERO_JUMP_R;0;0

# l'image PNG est celle affichée au lancement du programme. Fichier PNG de type couleurs indexées 8Bits, Index de palette : couleurs=1-16 ne doit pas contenir de pixel avec couleur 0
init.video=./input/BACKGROUND/GHZ_BACKGROUND.png


On y retrouve :
- Le fichier ASS qui contient le code de boot (BOOT.ASS)
- le fichier ASS qui contient le programme principal (MAIN.ASS)
- La balise qui permet de positionner la déclaration des données d'animation
- L'image de disquette générée
- l'image de fond a charger au démarrage du programme
- Les pages mémoires qui sont réservées à la génération des sprites compilés. A noter que les pages impaires (5, 7, ...) doivent être libres car utilisées dans le cadre du double buffering.
- les planches d'images: elles contiennent des images de tailles identiques organisées horizontalement. les colonnes "pagegroup" et "subgroup" ne sont pas utilisées pour le moment. Il faut indiquer le nombre d'images (pour la découpe). On peut demander un flip horizontal de l'image, ce qui évite de devoir faire des planches en double pour la symétrie. le tag ASM est celui qui sera intégré dans le code source, le tag est celui référencé dans le script d'animation.
Remarques: Pour chaque image les codes couleurs de palette sont affichées à l'écran, il faut choisir une de ces palettes et intégrer le code manuellemet dans le fichier MAIN.ASS
Les images doivent être au format PNG indexé 8bit, avec en position 0 la couleur transparente, puis les 16 couleurs utiles de 1 à 16.
- les scripts d'animation permettent de définir les images d'une animation, la durée de chaque image, si la durée de chaque image est proportionelle a la vitesse du sprite, l'enchainement des animations (branchement, retour, ...).
Dans votre code assembleur en fonction des mouvements de manette et de l'intelligene du jeu, un sprite pourra être amené a changer d'animation. il suffira d'appeller
Code:
   LDX #HERO_WALK_R
   STX HERO_ANIMATION_ADR

Le moteur d'animation se chargera en permanence d'afficher la bonne image du sprite au bon moment.

Exemple : si vous souhaitez remplacer toutes les images de la démo par une seule, effectuez les changements suivants dans le fichier de config. Il n'y a aucune ligne de code assembleur a modifier, le personnage se déplace selon le même moteur physique, il n'y a qu'une image chargée en mémoire et sur la disquette.
Cela permet une grande latitude dans la conception en ajustant les animations en fonction des ressources mémoire, sans avoir a refaire tout le code. Evidement dans cet exemple c'est un peu extrême ;-)
Code:
# Fichier PNG de type couleurs indexées 8Bits, Index de palette : Transparence=0, couleurs=1-16
# animation.image.n=asmtag;tag;pagegroup;subgroup;file(png);images(nb);flipH(0|1)
animation.image.1=HERO_IDLE_R;HIR;1;0;./input/SPRITES/HERO_IDLE-R.png;1;0

# animation.script.n=asmtag;frameDuration;nbFrames;ABS(nbFrames absolue)|GSP(nbFrames relatif a la vitesse);tagRef;Image;...;GO|RET;asmtag cible;image cible;image retour
animation.script.1=HERO_IDLE_L;24;ABS;HIR:0;GO;HERO_IDLE_L;0;0
animation.script.2=HERO_IDLE_R;24;ABS;HIR:0;GO;HERO_IDLE_R;0;0
animation.script.3=HERO_WALK_L;24;ABS;HIR:0;GO;HERO_WALK_L;0;0
animation.script.4=HERO_WALK_R;24;ABS;HIR:0;GO;HERO_WALK_R;0;0
animation.script.5=HERO_RUN_L;24;ABS;HIR:0;GO;HERO_RUN_L;0;0
animation.script.6=HERO_RUN_R;24;ABS;HIR:0;GO;HERO_RUN_R;0;0
animation.script.7=HERO_JUMP_L;24;ABS;HIR:0;GO;HERO_JUMP_L;0;0
animation.script.8=HERO_JUMP_R;24;ABS;HIR:0;GO;HERO_JUMP_R;0;0


phpBB [video]


L'outil est fonctionnel, mais il manque encore pas mal de choses. Les évolutions a venir sont :
- Une organisation des pages mémoires en "tableaux" ou "niveaux" de jeu, pour pouvoir changer le set de sprites et de fond d'ecran facilement
- Un moteur d'animation pour plusieurs sprites et non un seul !
- Une optimisation du générateur de sprite compilés actuel
- Le choix entre plusieurs méthodes pour la génération de sprite compilés, en particulier une version sans la gestion de l'effacement intégrée
- l'intégration des données de palette en automatique
- Correction du comptage des cycles et taille du code compilé en log

... La liste est longue, a vous de donner votre avis !
Si vous voulez participer au projet, n'hésitez pas.

Complément:
J'ai bien avancé sur une application indépendante qui permet de travailler sur un ensemble d'images, d'établir automatiquement une palette commune avec un nombre fixe et réduit de couleurs (en passant par le référentiel CIE Lab).
On peut ensuite enregistrer toutes les images réindexées en une fois. A suivre donc ... je pense que c'est interressant dans le cas d'adaptation de jeux existants.

Mode opératoire :
1. Installer OpenJDK 12 ou supérieur si ce n'est pas déjà fait (ex: https://jdk.java.net/14/)
Ajouter le chemin complet du répertoire bin du jdk dans le PATH
2. Ajouter c6809.exe dans le répertoire racine de l'outil (dans le même répertoire que config.properties)
3. Pour lancer le build, utiliser la ligne de commande suivante dans le répertoire racine de l'outil
java.exe -classpath ".\bin" fr.bento8.to8.build.BuildDisk config.properties
Si vous n'avez pas d'erreur, vous trouverez l'image de disquette dans le répertoire output

Pour lancer la démo, appuyer sur B !

Je n'ai jamais pris la peine de remercier tous les contributeurs des différents forum, alors je prend le temps de le faire :
Un grand merci à vous tous pour tous les conseils et le code que vous publiez sans relache depuis tant d'années !
Sans vous j'en serai resté au basic ... il y a 30 ans.

PS : Le moteur d'animation et la gestion du personnage de la demo ont été insiprés du code asm de Sonic.
http://info.sonicretro.org/Disassemblies
http://info.sonicretro.org/Sonic_Physics_Guide

PS : si vous voulez discuter en particulier du générateur de sprites compilés, un fil est déjà ouvert ici http://www.logicielsmoto.com/phpBB/viewtopic.php?f=3&t=619

(Update 18/09/2021) Dernière version du projet :
https://github.com/wide-dot/thomson-to8-game-engine

Archive obsolète :


Fichiers joints:
Bento8BuildTool.rar [209.04 Kio]
Téléchargé 798 fois


Dernière édition par Bentoc le 18 Sep 2021, 08:18, édité 3 fois.
Haut
 Profil  
Répondre en citant le message  
MessagePosté: 11 Aoû 2020, 21:35 
Hors ligne

Inscription: 13 Juin 2005, 21:50
Messages: 290
Localisation: Planete Zorg (31)
Mouais mais ça reste du PC'developpement


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 12 Aoû 2020, 07:52 
Hors ligne

Inscription: 21 Aoû 2006, 09:06
Messages: 1822
Localisation: Brest
Moi je trouve ca très intéressant. Les évolutions à venir (multi-sprites) sont très prometteuses. Il faudrait voir comment faire en sorte que, par exemple, le moteur soit intégrable avec du Pascal-Base pour faciliter le travail de Neotenien.

Avoir un jeu de plateau totalement fini avec ce moteur serait aussi un grand plus.

_________________
Good morning, that's a nice Tnetennba


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 12 Aoû 2020, 10:29 
Hors ligne

Inscription: 13 Juin 2005, 21:50
Messages: 290
Localisation: Planete Zorg (31)
Bien sûr que c'est intéressant, je ne dis pas le contraire. Mais avec tous ces outils on perd un peu le côté "artisanal" d'antan. C'est ce que je voulais dire ;)


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 12 Aoû 2020, 12:05 
Hors ligne

Inscription: 21 Aoû 2006, 09:06
Messages: 1822
Localisation: Brest
Oui, mais si c'est pour faire les jeux aussi poussifs qu'avant, ca vaut le coup de passer sur du "plus moderne" au niveau développement.

D'ailleurs, c'est un autre sujet, mais j'ai en tête une conversion (bytecode) java "simple" -> binaire 6809 qui me plairait bien d'experimenter. C'est l'étape suivante par rapport aux optims de pascal-base.

sam (développer pour Thomson depuis Eclipse ? :) )

_________________
Good morning, that's a nice Tnetennba


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 12 Aoû 2020, 12:14 
Hors ligne

Inscription: 21 Avr 2019, 21:48
Messages: 437
Localisation: Var
Je me souviens très bien dans les années 90 (sur TO8) avoir recopié via du calque une carte du monde sur papier millimétré ...
ensuite il fallait rentrer les pixels un à un avec les touches de direction et la barre d'espace dans le logiciel de dessin.

Puis attendre 8 heures que mon programme en basic trace une sphère à partir de la carte du monde sur une dizaine d'images.
elles étaient ensuite animées ... pour faire tourner la Terre à l'écran ;-)

Tu as raison, c'est mon meilleur souvenir de programmation !
Plus l'effort est grand, plus la satisfaction est grande.

Le problème c'est que j'aimerai bien réaliser un jeu jusqu'au bout, et je n'y suis jamais arrivé.
Je pense que je sous-estime le temps de réalisation à chaque fois, d'ou l'idée de s'outiller un peu pour partir du bon pied.

Voici une petite vidéo avec les images de bubble bobble paramétrées pour l'outil.
On y voit un bug du générateur de sprite ;-) va falloir que je corrige ça.

phpBB [video]


Pourquoi pas bosser sur un jeu, ça permet aussi de se restreindre aux fonctionnalités importantes à implémenter.
Par contre je ne connais absolument rien au Pascal Base.
Je préfère rester focalisé sur l'assembleur (que je ne pratique que depuis un an) et sur lequel il me reste beaucoup à apprendre encore.
Donc à voir si qq chose peut être réalisé, tout dépend de l'architecture, l'outil de build pourrait intégrer plusieurs bouts de binaires peu importe leur provenance. il faut trouver comment orchestrer tout ça (si Neotenien est interessé). ça risque d'être quand même compliqué si la compilation pascal est réalisée hors d'un environnement pc ... bref bcp d'interrogations.

D'ailleurs j'ai une question :
J'ai remarqué que lorsque j'utilise le bootloader pour démarrer en 6200, j'avais un comportement différent entre le lancement par B ou par C.
Peut-être un montage différent des pages en mémoire au moment ou on récupère la main ?


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 12 Aoû 2020, 12:19 
Hors ligne

Inscription: 21 Avr 2019, 21:48
Messages: 437
Localisation: Var
Samuel Devulder a écrit:
Oui, mais si c'est pour faire les jeux aussi poussifs qu'avant, ca vaut le coup de passer sur du "plus moderne" au niveau développement.

D'ailleurs, c'est un autre sujet, mais j'ai en tête une conversion (bytecode) java "simple" -> binaire 6809 qui me plairait bien d'experimenter. C'est l'étape suivante par rapport aux optims de pascal-base.

sam (développer pour Thomson depuis Eclipse ? :) )


Excellent ! Tiens moi informé ;-)


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 12 Aoû 2020, 12:50 
Hors ligne

Inscription: 21 Aoû 2006, 09:06
Messages: 1822
Localisation: Brest
Quand on boot par C, il bascule en "compatibilité TO7/70" et la commutation mémoire doit se faire via le PIA (comme sur TO9 et TO7/70). Il faut alors modifier le registre système pour restaurer la commutation de bank rapide comme sur TO8. D'ailleurs dans le BootLoader fait par Préhisto pour la démo "In the Shadow of the thomson", il y a ceci:
Code:
 (lda #2)
 ...
* PIA memory switch
boot1  cmpa   >$fff0  ! Error if not
       beq    boot2   ! TO9/8/D/9+
       ldb    #$ff-$10 !
       andb   <$6081   ! PIA switch
       stb    <$6081   ! RAM mode
       stb    >$e7e7   !
* Initialize system
boot2
   ...

Je pense que tu peux t'en inspirer.

_________________
Good morning, that's a nice Tnetennba


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 12 Aoû 2020, 13:36 
Hors ligne

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

D'ailleurs le seul endroit ou j'avais trouvé le source d'un bootloader c'était dans l'archive de TO-ale.
Donc double remerciement.

Cette fonctionnalité de boot elle est documentée officiellement quelque part ?
Ou c'est quelque chose qui a été découvert (il y a longtemps j'imagine). Sait-on qui l'a découvert ?


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 12 Aoû 2020, 19:15 
Hors ligne

Inscription: 21 Aoû 2006, 09:06
Messages: 1822
Localisation: Brest
En fait Il y a 2 sortes de bootLoader. Un qui n'est détecté que par le Basic1 (et que je pense avoir trouvé dans la litterature de l'époque), et un autre qui est aussi détecté par le Basic2 et que je pense avoir trouvé dans les différents forums qui ont existés (et disparus pour certains).

Un bonne source d'info est le site de Gislain Fournier: http://collection.thomson.free.fr/site/edito/page.php

Avec en particulier un paragraphe sur la copie rapide de zones mémoires: http://collection.thomson.free.fr/code/ ... XI=0&XJ=12

_________________
Good morning, that's a nice Tnetennba


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 08 Jan 2021, 12:44 
Hors ligne

Inscription: 21 Avr 2019, 21:48
Messages: 437
Localisation: Var
Un petit mot pour vous dire que la V2 est en préparation depuis septembre.
Il me reste beaucoup de code à produire mais la phase de conception est terminée (bcp de diagrammes ;-)).
Encore deux mois de code au moins !

Au programme :
- Chargement des ressources d'un niveau de jeu (sprites et leur code associé)
- Utilisation du nouveau générateur de sprite compilé (voir fil Sprites en BM16)
- La sauvegarde des données de fond de sprite se fait par une routine d'allocation/désallocation mémoire
- Gestion des priorités d'affichage de sprite (8 plans distincts dont un overlay)
- Moteur d'animation
- Gestions d'un pool dynamique de 64 objets/sprites (il y en aura peut être moins, ce sera fonction de la place mémoire une fois tout le moteur codé)
- Automatisme permettant de ne pas rafraichir (effacement+dessin) un sprite si celui-ci n'en a pas besoin (immobile, pas de changement d'image, pas de changement de priorité, ...)
=> ce dernier point est assez complexe, surtout avec le double buffering, car on doit vérifier qu'un sprite non rafraichi n'est pas en collision avec un autre qui passe en dessous.
mais je pense avoir un algo et une organisation des données qui devrait ne pas trop être pénalisant.

Dans cette version évidement le but est de pouvoir instancier n sprites d'un même type sans dupliquer son code.
J'ai décidé de me caler au plus près du moteur de Sonic2 (megadrive).
Certaines routines sont des traductions du 68000 en 6809.
Evidement tout ce qui touche au VDP est remplacé par du code spécifique ...

Au final ce qui restera a développer pour faire un jeu, c'est le code des objets/sprites.
(On ne parle pas encore des tiles en fond, ce sera en V3)

Un avant gout de ce qui devrait être réalisable en pj :
Le code d'intro de Sonic2 traduit en 6809 et compatible avec le futur moteur de jeu v2 ... (premier jet, hein ça fonctionne pas encore ;-)
Fichier(s) joint(s):
TitleScreen.rar [7.27 Kio]
Téléchargé 732 fois


A suivre ...


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 08 Jan 2021, 12:53 
Hors ligne

Inscription: 21 Avr 2019, 21:48
Messages: 437
Localisation: Var
Voici les diagrammes de conception pour ceux que ça intéresse (il y a plusieurs onglets).
Format: drawio (logiciel gratuit en ligne ou en appli desktop)

Fichier(s) joint(s):
TO8 game engine.rar [95.24 Kio]
Téléchargé 737 fois


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 08 Jan 2021, 16:32 
Hors ligne

Inscription: 06 Avr 2010, 01:59
Messages: 481
Wow! ça sera en genre de gameMaker pour Thomson ?

_________________
Image


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 08 Jan 2021, 21:58 
Hors ligne

Inscription: 21 Avr 2019, 21:48
Messages: 437
Localisation: Var
Ce ne sera certainement pas aussi poussé, mais c'est dans l'esprit.


Haut
 Profil  
Répondre en citant le message  
MessagePosté: 15 Fév 2021, 16:54 
Hors ligne

Inscription: 21 Avr 2019, 21:48
Messages: 437
Localisation: Var
Une petite vidéo qui illustre l'avancement ...
MD à gauche / TO8 à droite
phpBB [video]


:tourne:

Le moteur de jeu gère maintenant l'affichage des sprites compilés avec effacement.
C'est à dire que les données de fond de chaque sprite sont enregistrées dans un buffer avec un système d'allocation/désallocation de blocs mémoire (en page 0).

Le refresh (effacement/affichage) des sprites n'est déclenché que si le sprite se déplace ou change d'image.
S'il est rafraichi, il provoque aussi le rafraichissement des sprites en collision se trouvant au dessus de lui.
On économise ainsi pas mal de cycles par rapport à un rafraichissement systématique lors de chaque frame.

Dans cette intro, lorsque Sonic ou Tails monte, j'ai conservé la temporisation d'origine (un déplacement tt les 4 frames).
Avec le double buffering on a donc deux frames pour la gestion de l'effacement/affichage du sprite (env 15000-18000 cycles y compris le moteur de jeu)
Suivi de deux frames ou l'on ne fait rien ;-) de quoi laisser de la place pour gérer le masquage par l'emblème qui manque encore dans cette intro.

De même quand le bras de Sonic ou Tails bouge par dessus le personnage, celui-ci n'est pas réactualisé.

A la toute fin la petite étoile passe derrière les personnages, là on a des frame drop ...
derrière sonic cela provoque un refresh des 4 sprites, puis quand elle passe sous Tails, Sonic et son bras ne sont plus rafraichis.

Les priorités :
FRONT
large star p2
Sonic hand p3, Tails hand p3
Sonic p4, Tails p4
small star p5
BACK

en pj le fichier .sd si vous voulez le faire tourner sur un vrai TO8 ou sur émulateur.
Sur mon TO8 ça m'a fait "quelque chose" de voir ces gros sprites s'animer aussi vite ...

La suite :
Je dois implémenter un autre générateur de sprite compilé sans la gestion de l'effacement du fond.
Cela permettra de gérer les sprites de type overlay qui ne se déplacent pas et ne changent pas d'image.
Un peu de boulot en perspective.
Après je termine l'intro en ajoutant l'emblème, le fond ...
et je passe a la réalisation d'un premier niveau de jeu avec gestion d'une tilemap + collision associée et ajout d'un personnage jouable.
Pas de scrolling évidement, mais le fond changera quand le perso sort de l'écran

bcp de travail à l'horizon, mais des premiers résultats encourageants !!!
ça m'aide bcp d'avoir le code source commenté de Sonic, je ne pensais pas pouvoir adapter le code des objets (ici l'écran d'intro) aussi facilement.
Pour les graphismes j'ai été "obligé" de réaliser un petit programme java pour reconstruire des png à partir de la rom d'origine (des fichiers décompilés plus précisément).
En effet les planches de sprites que l'on trouve ne portent pas les informations de mapping, en particulier en ce qui concerne le centrage des images.

Je publierai tt à l'heure le projet complet "en l'état".


Fichiers joints:
SONIC2.rar [26.17 Kio]
Téléchargé 773 fois
Haut
 Profil  
Répondre en citant le message  
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 602 messages ]  Aller à la page 1, 2, 3, 4, 5 ... 41  Suivante

Heures au format UTC + 1 heure


Qui est en ligne

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