MSX Village forum

La Place des Développeurs moteur de jeu en basic création, optimisation

igal Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 29/07/2010 à 17h19

Messages: 5492

Le 19/11/2010 à 13h27

Reprise du message précédent

Hello Obelix.

(Ma fille aussi adore Winnie)
J'ai testé WINNUSAS avec BlueMsx en émulation Turbo-R, et à ma grande surprise, c'est extrêmement plus rapide.
Virtuellement, l'ajout d'une ou plusieurs autres animation simultanées devraient fonctionner à 100/100 :)


Tiens... voila du boudin, voila du boudin, voila du boudin... :siffle
Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10731

Le 19/11/2010 à 14h57
il ne faut pas oublier que le vrai Turbo-R tourne 2 fois plus vite qu'un MSX2 d'ou les performances

avec blueMSX on peux régler sa vitesse avec le curseur rotatif et atteindre des cadences impossibles a faire avec la vraie machine


:noel
Site web    
BibiZen Membre non connecté

Maire-adjoint

Rang

Avatar

Inscrit le : 03/10/2009 à 18h34

Messages: 1455

Le 19/11/2010 à 18h11
Je suis tombé sur un autre utilitaire : OX crée par Parallax

Il semble fonctionner avec Age, il a servi pour Blade Lords, Akin & Core Dump ^^

E-mail    
igal Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 29/07/2010 à 17h19

Messages: 5492

Le 20/11/2010 à 03h53
Bonsoir à tous.

Winnie en vadrouille dans l'univers Usas, est amusant, mais avec toute la bibliothèque Musicale et Sonore de Salamander en SCC, c'est encore mieux ;)

J'ai donc isolé la partie "Player" contenu dans la démo SALAMANDERD et épuré le programme (avec mes connaissances limités) pour arriver à lancer des Musiques au choix (Pendant le jeu) et des sons en interaction avec les divers Items récoltés avec les sons désirés.

Il reste néanmoins un zone d'ombre.
Les musique(s) joué(es) font planter le MSX (Bluemsx), d'une façon assez surprenante, puisque le BUG a lieu lorsqu'un ITEM est collecté à moment précis de la partition musicale jouée :heink
Après avoir procédé à de nombreux testes, en me servant d'une Image instantané du CPU, j'ai remarqué avec CERTITUDE, que le BUG à lieu lors de certaines Moments de la "partition musicale, et pas jamais à d'autres moments. (Testes de diverses Musiques, divers Sons en interaction avec la collecte des ITEMs etc..)

Le player en lui même fonctionne parfaitement selon moi. N'hésitez pas à vous en servir.

LE PLAYER (Isolé depuis Salamander"D" démo)
20000 '---------DEBUT DE SALAMANDER DEMO MODIFIE----------------
20010 'POKE&HFBB1,1: 'EMPECHE CONTROL+STOP
20030 BLOAD"1.006":DEFUSR4=&HD600:' CHARGE LE PLAYER ?
20040 BLOAD"1.007":U=USR4(1):' CHARGE SONS ET MUSIQUES
20050 BLOAD"1.008":U=USR4(2):' CHARGE SONS ET MUSIQUES
20060 BLOAD"1.009":U=USR4(3):' CHARGE SONS ET MUSIQUES
20070 BLOAD"1.010":U=USR4(4):' CHARGE SONS ET MUSIQUES
20080 BLOAD"1.011":FORT=0TO2000:NEXT
20090 DEFUSR=&HD000:A=USR(0): 'PREREQUIS ARRET LA MUSIQUE
20100 DEFUSR2=&HD003:' PREREQUIS FONCTION INCONNUE
20101 POKE&HFD9F,201
20105 POKE&HFDA0,&H6:POKE&HFDA1,&HD0:POKE&HFD9F,&HC3
20115 ' LISTE COMPLETE DES MUSIQUES ET SONS DANS POKE SALAMANDER
20117 '
20120 DEFUSR=&HD000:A=USR(0):POKE&HCFFF,32:A=USR2(0):' MUSIQUE STAGE 6
20750 'POKE&HCFFF,67:A=USR2(0):' EXPLOSION D'ENNEMI MOYENNE
20755 '
20760 'DEFUSR=&HD000:A=USR(0):FORP=0TO10:NEXT:POKE&HFD9F,201:'PERMET ACCES DISK ET ARRETE LA MUSIQUE AVANT
20770 GOTO 44:' RETOUR A L ANIMATION
20800 '
20810 '---------FIN DE SALAMANDER DEMO MODIFIE-------------------


LISTE DES MUSIQUES ET SONS (Listé par mes soins soins :D )
(Peut être utilisé n'importe ou et n'importe quand dans le programme de votre choix, sauf!!!????)
1010'DEFUSR=&HD000:A=USR(0):'STOPE MUSIQUE ET SON
1020'POKE&HCFFF,02:A=USR2(0):'PAUSE KONAMI
1030'POKE&HCFFF,03:A=USR2(0):'TIR PETIT
1040'POKE&HCFFF,04:A=USR2(0):'TIR FIN
1050'POKE&HCFFF,05:A=USR2(0):'TIR LASER
1030'POKE&HCFFF,06:A=USR2(0):'TIR RIPPLE
1070'POKE&HCFFF,08:A=USR2(0):'TIR GIGANTESQUE
1080'POKE&HCFFF,09:A=USR2(0):'TIR GIGANTESQUE AUTRE
1090'POKE&HCFFF,10:A=USR2(0):'TIR MINI BRUIT DE CANARD
1100'POKE&HCFFF,11:A=USR2(0):'IMPACT ENNEMI PETIT
1110'POKE&HCFFF,12:A=USR2(0):'UPGRADE DE L'OPTION
1120'POKE&HCFFF,13:A=USR2(0):'TIR LASER BRUIT BIDON
1130'POKE&HCFFF,14:A=USR2(0):'EXPLOSION D'ENNEMI BASIQUE
1140'POKE&HCFFF,15:A=USR2(0):'EXPLOSION D'ENNEMI PUISSANTE
1150'POKE&HCFFF,16:A=USR2(0):'RECUPERATION D'UN ITEM
1160'POKE&HCFFF,17:A=USR2(0):'EXPLOSION D'ENNEMI MOYENNE
1170'POKE&HCFFF,18:A=USR2(0):'UPGRADE UN CREDIT SUPPLEMENTAIRE
1180'POKE&HCFFF,19:A=USR2(0):'TIR BISARE COURT
1190'POKE&HCFFF,20:A=USR2(0):'BRUIT EFFRAYANT
1200'POKE&HCFFF,21:A=USR2(0):'EXPLOSION DE MONSTRE DE FIN DE NIVEAU
1210'POKE&HCFFF,22:A=USR2(0):'EXPLOSION DE MONSTRE DE FIN DE NIVEAU PLUS LONGUE
1220'POKE&HCFFF,23:A=USR2(0):'SON D'ALERTE
1230'POKE&HCFFF,24:A=USR2(0):'BRUIT DE DESTRUCTION COURT
1240'POKE&HCFFF,25:A=USR2(0):'MUSIQUE D'UN NIVEAU
1250'POKE&HCFFF,26:A=USR2(0):'ARRETE LA MUSIQUE
1260'POKE&HCFFF,27:A=USR2(0):'MUSIQUE STAGE 1
1270'POKE&HCFFF,28:A=USR2(0):'MUSIQUE STAGE 2
1280'POKE&HCFFF,29:A=USR2(0):'MUSIQUE STAGE 3
1290'POKE&HCFFF,30:A=USR2(0):'MUSIQUE STAGE 4
1300'POKE&HCFFF,31:A=USR2(0):'MUSIQUE STAGE 5
1310'POKE&HCFFF,32:A=USR2(0):'MUSIQUE STAGE 6
1320'POKE&HCFFF,33:A=USR2(0):'MUSIQUE COMBAT MONSTRE DE FIN DE NIVEAU
1330'POKE&HCFFF,34:A=USR2(0):'MUSIQUE INTERLUDE
1340'---POKE&HCFFF,35:A=USR2(0):'AUCUN SON NI MUSIQUE ET AUCUN EFFET
1350'POKE&HCFFF,36:A=USR2(0):'BRUITAGE D ASPIRATION PAR UN VAISSEAU MERE COMME NEMESIS 2
1360'POKE&HCFFF,37:A=USR2(0):'BRUITAGE DE DESTRUCTION DU VAISSEAU MERE
1370'---POKE&HCFFF,38:A=USR2(0):'AUCUN SON NI MUSIQUE ET AUCUN EFFET
1380'POKE&HCFFF,39:A=USR2(0):'DESTRUCTION DU VAISSEAU DU JOUEUR
1390'POKE&HCFFF,40:A=USR2(0):'DEMARRAGE DU VAISSEAU APRES DEMO ET AVANT LE JEU
1400'---POKE&HCFFF,41:A=USR2(0):'AUCUN SON NI MUSIQUE ET AUCUN EFFET
1410'---POKE&HCFFF,42:A=USR2(0):'AUCUN SON NI MUSIQUE ET AUCUN EFFET
1420'---POKE&HCFFF,43:A=USR2(0):'AUCUN SON NI MUSIQUE ET AUCUN EFFET
1430'---POKE&HCFFF,44:A=USR2(0):'AUCUN SON NI MUSIQUE ET AUCUN EFFET
1440'---POKE&HCFFF,45:A=USR2(0):'AUCUN SON NI MUSIQUE ET AUCUN EFFET
1450'POKE&HCFFF,46:A=USR2(0):'MUSIQUE DE DEMO D INTRODUCTION. SE TERMINE
1460'POKE&HCFFF,47:A=USR2(0):'MUSIQUE DE DEMO AUTRE INTERLUDE
1470'POKE&HCFFF,48:A=USR2(0):'MUSIQUE DE STAGE FINAL?
1480'POKE&HCFFF,49:A=USR2(0):'MUSIQUE DE DEMO DE FIN?
1490'POKE&HCFFF,50:A=USR2(0):'MUSIQUE GAME OVER
1500'---POKE&HCFFF,51:A=USR2(0):'AUCUN SON NI MUSIQUE ET AUCUN EFFET
1510'POKE&HCFFF,52:A=USR2(0):'BRUITAGE COUPLAGE DEUX VAISSEAUX
1520'---POKE&HCFFF,53:A=USR2(0):'AUCUN SON NI MUSIQUE ET AUCUN EFFET
1530'---POKE&HCFFF,54:A=USR2(0):'AUCUN SON NI MUSIQUE ET AUCUN EFFET
1540'---POKE&HCFFF,55:A=USR2(0):'AUCUN SON NI MUSIQUE ET AUCUN EFFET
1590 POKE&HCFFF,55:A=USR2(0):'BRUIT DE DESTRCTION DE CELLULES
1600 POKE&HCFFF,56:A=USR2(0):'BRUIT DE DESTRUCTION DE ROCHERS ?
1610 POKE&HCFFF,57:A=USR2(0):'BRUIT DE PETITE MITRAILLEUSE
1620'---POKE&HCFFF,58:A=USR2(0):'AUCUN SON NI MUSIQUE ET AUCUN EFFET
1630'---POKE&HCFFF,59:A=USR2(0):'AUCUN SON NI MUSIQUE ET AUCUN EFFET
1640'POKE&HCFFF,60:A=USR2(0):'BRUIT PETITE EXPLOSION SOURDE
1650'---POKE&HCFFF,61:A=USR2(0):'AUCUN SON NI MUSIQUE ET AUCUN EFFET
1660'POKE&HCFFF,62:A=USR2(0):'BRUIT PETIT IMPACT DE LASER
1670'---POKE&HCFFF,63:A=USR2(0):'AUCUN SON NI MUSIQUE ET AUCUN EFFET
1680'POKE&HCFFF,64:A=USR2(0):'EXPLOSION
1690'POKE&HCFFF,65:A=USR2(0):'EXPLOSION DE VELOUR
1700'POKE&HCFFF,66:A=USR2(0):'LASER TRES AIGU
1710'POKE&HCFFF,67:A=USR2(0):'OPTION COLLECTE SUPER ITEM GEANTE
1720'POKE&HCFFF,68:A=USR2(0):'COUPLAGE DE VAISSAU OU BRUIT DE SONAR
1730'POKE&HCFFF,69:A=USR2(0):'COUPLAGE DE VAISSAU OU BRUIT DE SONAR AVEC ECHO
1740'POKE&HCFFF,70:A=USR2(0):'BRUIT REPERCUTION NEGATIVE
1750'POKE&HCFFF,71:A=USR2(0):'BRUIT D IMPACTE SUR DU SABLE
1760'POKE&HCFFF,72:A=USR2(0):'BRUIT DECOLLAGE PRECIPITE DU VAISSEAU
1770'---POKE&HCFFF,73:A=USR2(0):'BRUIT DE PRISE D UN PETIT ITEM
1780'POKE&HCFFF,74:A=USR2(0):'OPTION UPGRADE D UNE OPTION NORMALE
1790'POKE&HCFFF,75:A=USR2(0):'BRUIT D ALERTE QUI PREND LA TETE ET SE REPETE
1800'POKE&HCFFF,76:A=USR2(0):'EXPLOSION D UN VAISSEAU APRES UN DISCOURS
1810'POKE&HCFFF,77:A=USR2(0):'BRUIT D UN PAVE DANS LA MARE
1820'POKE&HCFFF,78:A=USR2(0):'EXPLOSION BRUIT VIOLENTE AVEC ECHO
1830'POKE&HCFFF,79:A=USR2(0):'OPTION ITEM ABSORBTION DE GIGAS ITEMS
1840'POKE&HCFFF,80:A=USR2(0):'EXPLOSION PETITE PIERRE
1850'POKE&HCFFF,81:A=USR2(0):'EXPLOSION GROSSE PIERRE?
1860'POKE&HCFFF,82:A=USR2(0):'OPTION ITEM ABSORBTION DE GROS ITEMS
1870'---POKE&HCFFF,83:A=USR2(0):'AUCUN SON NI MUSIQUE ET AUCUN EFFET
1880'---POKE&HCFFF,84:A=USR2(0):'AUCUN SON NI MUSIQUE ET AUCUN EFFET
1890'POKE&HCFFF,85:A=USR2(0):'COUPLAGE DE VAISSEAU OU ARRIMAGE
1900'POKE&HCFFF,86:A=USR2(0):'MOTO QUI DOUBLE AVEC ECHO MULTIPLE
1910'POKE&HCFFF,87:A=USR2(0):'COUPLAGE DE VAISSEAU OU ARRIMAGE AUTRE
1920'---POKE&HCFFF,88:A=USR2(0):'AUCUN SON NI MUSIQUE ET AUCUN EFFET
1930'POKE&HCFFF,89:A=USR2(0):'COUPLAGE DE VAISSEAU OU ARRIMAGE AUTRE
1940'POKE&HCFFF,90:A=USR2(0):'AUCUN SON NI MUSIQUE ET AUCUN EFFET

Voici maintenant WINNUSASALAMANDER WINNUSASALAMANDER.zip

Si vous avez une idée pour résoudre le BUG qui fait planter WINNIE, ou une idée à soumettre, je suis preneur.






Tiens... voila du boudin, voila du boudin, voila du boudin... :siffle
igal Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 29/07/2010 à 17h19

Messages: 5492

Le 21/11/2010 à 01h56
A la demande de Galine.

Un vaisseau, des étoiles et c'est l’Amérique :)

J'ai animé le vaisseau avec une rotation des options qui tient compte des mouvements du joueur.
Voici la disquette prète à l'emploi => RTYPE.zip

Seul bémol toujours ce fameux Bug qui fait tout planter!
Pour rappel, ce Bug est dû à l'utilisation des ITEMS "Objets à récupérer et qui s'affichent en bas de l'écran"
Ce bug est aléatoire sur cette action de collecte des Items.
J'ai pensé à supprimer la "Fonction Item" du programme, de sorte à éliminer le problème, mais cela réduirait considérablement l’intérêt.

Voici la source ( par Galine):


Prochainement, pour faire plaisir à ma fille, le mod Barbapapa :) Edité par igal Le 21/11/2010 à 01h56


Tiens... voila du boudin, voila du boudin, voila du boudin... :siffle
TurboSEB Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 08/08/2010 à 20h57

Messages: 5886

Le 21/11/2010 à 07h26
une idée pour le Bug Winnie^^

ceci est une simple deduction, car mes compétences en programmation sont loin d'arrivé a ton niveau:oups

la serie des POKE &HCFFF,xx correspondent peut etre a la simulation de l'appuie sur une touche du clavier qui induirait un BUG.

ONCE UPON A TIME , SO FAR AWAY, jadis, j'ai utilisé ces fichiers musicaux dans mes Mags ,et dans la demo sons on pouvait entendre ces sons en appuyant sur une touche, et effectivement certaines touches n'avaient aucuns sons (d'ou la deduction)

A savoir donc a quoi correspond exactement ce Poke et surtout cette ligne :
20100 DEFUSR2=&HD003:' PREREQUIS FONCTION INCONNUE

un probleme de conflit memoire, probablement:hum

Felicitation pour ces Niveaux Igal :top

:oups Mince, mais c'est l'heure de la Récré la , fault que je me planque moa:oups Edité par TurboSEB Le 21/11/2010 à 07h30



MSX 1&2 + Moniteurs+divers (environ 0.70Tonnes)
   
igal Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 29/07/2010 à 17h19

Messages: 5492

Le 21/11/2010 à 11h41
TurboSEB :
une idée pour le Bug Winnie^^



ceci est une simple deduction, car mes compétences en programmation sont loin d'arrivé a ton niveau:oups



la serie des POKE &HCFFF,xx correspondent peut etre a la simulation de l'appuie sur une touche du clavier qui induirait un BUG.



ONCE UPON A TIME , SO FAR AWAY, jadis, j'ai utilisé ces fichiers musicaux dans mes Mags ,et dans la demo sons on pouvait entendre ces sons en appuyant sur une touche, et effectivement certaines touches n'avaient aucuns sons (d'ou la deduction)



A savoir donc a quoi correspond exactement ce Poke et surtout cette ligne :

20100 DEFUSR2=&HD003:' PREREQUIS FONCTION INCONNUE



un probleme de conflit memoire, probablement:hum



Felicitation pour ces Niveaux Igal :top



:oups Mince, mais c'est l'heure de la Récré la , fault que je me planque moa:oups




Lut turboSeb.



Merci de ta réponse.



Juste un petite précision, je n'y connais absolument rien en programmation, je pratique par contre allègrement le recyclage de routines par ci par là :p

J'essais de toujours citer mes sources, au moins lors de la première édition de mon recyclage :glass

Pour ce qui est des Pokes, j'ai pensé que:



MOD CERTITUDE [ON]

Les adresses Hexadécimales HCFFF ne représentent pas ici des [Appuies] de touches, mais des "Blocs" conteneurs de Sons SCC.

L'ensemble de la bribe de programme [Demo salamanderD] ne contient pas de Bug.

L'ensemble du Moteur [WINNIE] de Msxosaure, ne contient pas de Bug.

La corrélation des programmes [WINNIE] et [DEMO SALAMANDERD] ne Bug pas!



Sauf Si ces trois conditions sont réunis.

1) Initialisation de tous les Poke de [SALAMANDERD DEMO]

2) Avec ou Sans Musique, Avec ou sans Sons

3) Ramassage ITEM => (Disparition ITEM).

Autre essais:

4) J'ai simplement initialisé tous les POKES sauf démarrage Musiques et/ou Sons, et le BUG est toujours présent.

5) L'item de [Mort] ne fait jamais BUGé => (Pas de disparition ITEM).

6) J'en conclu que la gestion de l'effacement des ITEMS en corrélation avec un moment cyclique précis du programme SalamanderD Créer le BUG.

MOD CERTITUDE [OFF]



Vais faire des essais en modifiant le programme de Msxosaure et te tiens au courant!



Ps: T'inquiète pour la récrée, deux carambars et on en parle plus :p








Tiens... voila du boudin, voila du boudin, voila du boudin... :siffle
Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10731

Le 21/11/2010 à 11h48
il faut essayer de mettre une instruction CLEAR200,&HC000 en début de programme

ça sert a définir le zone du basic et celle du machine afin de ne pas avoir de conflit

le programme machine est en 2 parties

la premiére 1.006 de &HD600 a &HD711 charge les sons en mémoire dans le mapper

la seconde 1.011 de &HD000 a &HDB7 initialise ( appel &HD000 ) et joue les sons ( appel &HD003 avec valeur dans &HCFFF )

les 4 autres parties de 8k chacune sont les données des sons et vont s'installer dans le mapper


:noel
Site web    
Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10731

Le 21/11/2010 à 14h34
si on enléve les instructions POKE&HCFFF,79:A=USR2(0) de la ligne 5005 ça ne plante plus

si on fait un CTRL/STOP dans le jeu et que l'on tape ces instructions les 2 sons sont joués en même temps sans problémes

on peux tester tous les sons en changeant la valeur du POKE&HCFFF

si on met 1 on stoppe le son

en changeant la valeur de 79 par 50 ça plante toujours

aprés un CTRL/STOP il est impossible de redémarrer par un RUN ça bloque

il faut voir du coté interruptions vers &HD006 qui s'installent en &HFD9F

a suivre ......


:noel
Site web    
igal Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 29/07/2010 à 17h19

Messages: 5492

Le 22/11/2010 à 18h28
Salut Jipe.

Je te remercie pour tes indications, qui m'ont conduit à isoler la "Conjoncture Buggante :)" de WINNIE.BAS et SALAMANDER.BAS.

Voici la disquette avec le mod Spacemanbow :)
SPACEMANBOW.zip



Voici le listing original:
4901 ' SP gestion rencontre avec objet
4902 '
5000 IF P=10THEN6000 ' si trou -> SP tombe
5005 PSET(INT((X+15)/16),202+INT((Y+4)/16)),15:B=P*6:F=P*5
5010 COPY(240,191)-(255,206),1TO((INT((X+15)/16))*16,(INT((Y+36)/16))*16),2
5020 COPY(208,P*16-112)-(223,P*16-97),1TO(C*16+32,196),0
5040 C=C+1
5100 GOTO 310
5900 '

Voici le correctif:
5005 'PSET(INT((X+15)/16),202+INT((Y+4)/16)),15:B=P*6:F=P*5:
5010 'COPY(240,191)-(255,206),1TO((INT((X+15)/16))*16,(INT((Y+36)/16))*16),2
J'ai empêché l'exécution des lignes 5005 et 5010.
Il en résulte une répétition sans fin de la Collecte de l'item. Comme une jauge de carburant qui augmente dès que l'on est sur l'icone Carburant :D

Faute de connaissances, suffisantes, je n'ai pas pu trouver mieux :oups
Je reste tout ouïe à tes indications!

Ps: J'espere que Msxosaure verra pas ca, j'en ai marre de m'prendre des coups de règles sur les doigts lol Edité par igal Le 22/11/2010 à 19h29


Tiens... voila du boudin, voila du boudin, voila du boudin... :siffle
igal Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 29/07/2010 à 17h19

Messages: 5492

Le 25/11/2010 à 00h15
Jipe :
si on enléve les instructions POKE&HCFFF,79:A=USR2(0) de la ligne 5005 ça ne plante plus



si on fait un CTRL/STOP dans le jeu et que l'on tape ces instructions les 2 sons sont joués en même temps sans problémes



on peux tester tous les sons en changeant la valeur du POKE&HCFFF



si on met 1 on stoppe le son



en changeant la valeur de 79 par 50 ça plante toujours



aprés un CTRL/STOP il est impossible de redémarrer par un RUN ça bloque



il faut voir du coté interruptions vers &HD006 qui s'installent en &HFD9F



a suivre ......




Salut Jipe.

J'ai suivi ta voix et effectivement, la ligne 5005 pose problème, ainsi que 5010 d'ailleurs. J'ai complètement éludé ces deux lignes, cela a résolu le BUG.

La seule différence sans ces deux lignes, réside en la NON disparition des ITEMS de l'écran. Pour le reste, rien ne change.



Voici une Synthèse des différentes modification du moteur de Msxosaure ayant pour objectif d'animer un petit SPRITE dans le Genre Shoot Them Up ;)

Les points suivants sont considérés comme résolus:

1) Un Sprite de 16X16 Suffit.

2) 4 Animations suffisent.

3) Vitesse d'animation de la position Statique Similaire aux autres positions (FORI=0TO15 au lieu de 90)

4) Bande Son attrayante et interactive.



1) Recalibrer la la taille du sprite de 26X38 en 16X16. (Affichage réadapté et Cohérent)

310 D=D+16:IFD=64THEND=0

1030 COPY(D,A)-(D+15,A+15),1TO(4,4),3,TPSET

2520 X=X-4*(P>6):A=16:RETURN

6030 COPY(D,A)-(D+15,A+15-I),1TO(4,4+I),3,TPSET

6050 A=A+16:IFA=192THENA=16

********RESOLU**********



2) Limiter le nombre d'animations de 8 à 4 "IFD=64 anciennement IFD=208" (Affichage réadapté et Cohérent)

310 D=D+16:IFD=64THEND=0

********RESOLU**********



3) Modifier la latence entre les différentes étapes d'animation statique de 90 à 15 Unités.

1500 FORI=0TO15:A=0:NEXTI:RETURN

********RESOLU**********



4) Insérer une Musique et des Sons Scc interactifs ( Interactivité en relation avec les ITEMS différenciés et émission d'un son spécifique à la création d'un nouveau décor)

45 DEFUSR=&HD000:A=USR(0):POKE&HCFFF,32:A=USR2(0):' MUSIQUE STAGE 6

5005 'PSET(INT((X+15)/16),202+INT((Y+4)/16)),15:B=P*6:F=P*5:' LIGNE DE COMMANDE ELUDEE - INCOMPATIBLE AVEC SALAMANDER AUDIO

5010 'COPY(240,191)-(255,206),1TO((INT((X+15)/16))*16,(INT((Y+36)/16))*16),2:'LIGNE DE COMMANDE ELUDEE - INCOMPATIBLE AVEC SALAMANDER AUDIO

5020 COPY(208,P*16-112)-(223,P*16-97),1TO(C*16+32,196),0:POKE&HCFFF,79:A=USR2(0):'OPTION ITEM ABSORBTION DE GIGAS ITEMS

6060 B=I+40:POKE&HCFFF,70:A=USR2(0):'BRUIT REPERCUTION NEGATIVE

10017 POKE&HCFFF,69:A=USR2(0):'COUPLAGE DE VAISSAU OU BRUIT DE SONAR AVEC ECHO

20000 '---------DEBUT DE SALAMANDER DEMO MODIFIE----------------

20010 'POKE&HFBB1,1: 'EMPECHE CONTROL+STOP

20030 BLOAD"1.006":DEFUSR4=&HD600:' CHARGE LE PLAYER ?

20040 BLOAD"1.007":U=USR4(1):' CHARGE SONS ET MUSIQUES

20050 BLOAD"1.008":U=USR4(2):' CHARGE SONS ET MUSIQUES

20060 BLOAD"1.009":U=USR4(3):' CHARGE SONS ET MUSIQUES

20070 BLOAD"1.010":U=USR4(4):' CHARGE SONS ET MUSIQUES

20080 BLOAD"1.011":FORT=0TO2000:NEXT

20090 DEFUSR=&HD000:A=USR(0): 'PREREQUIS ARRET LA MUSIQUE

20100 DEFUSR2=&HD003:' PREREQUIS FONCTION INCONNUE

20101 POKE&HFD9F,201

20105 POKE&HFDA0,&H6:POKE&HFDA1,&HD0:POKE&HFD9F,&HC3

20115 ' LISTE COMPLETE DES MUSIQUES ET SONS DANS POKE SALAMANDER

20117 '

20120 DEFUSR=&HD000:A=USR(0):POKE&HCFFF,32:A=USR2(0):' MUSIQUE STAGE 6

20750 'POKE&HCFFF,67:A=USR2(0):' EXPLOSION D'ENNEMI MOYENNE

20755 '

20760 'DEFUSR=&HD000:A=USR(0):FORP=0TO10:NEXT:POKE&HFD9F,201:'PERMET ACCES DISK MAIS ARRETER MUSIQUE AVANT

20770 GOTO 44:' RETOUR A L ANIMATION

20800 '

20810 '---------FIN DE SALAMANDER DEMO MODIFIE-------------------

********RESOLU**************



Voici un problème ouvert à tous. Si vous avez LA solution, n'hésitez pas :top

*****************************BESOIN D'AIDE****************************************

Je butte sur un problème depuis 3 jours, et je trouve pas la solution!!!!

Je n'arrive pas à réduire la Zone de Point d'Accroche Selon X et Y. (Concernant mon SPRITE VAISSEAU de 16 X 16 anciennement WINNIE de 26 X38)

Par Exemple, lorsque je déplace "MON SPRITE 16 X 16" vers une buté située dessous, "MON SPRITE 16 X 16" butte à une distance relative à WINNIE (26 X 38 "plus les espaces réservés par X et Y ) au lieu d'une distance de (16 X 16 + X et Y)





Je dois reconnaître que je me suis perdu dans les explications de Msxosaure. J'ai vraiment essayé de m'y reprendre, mais je suis dépassé.

Source => http://www.msxvillage.fr/forum/topic.php?pt=2&id=521#m7191

Début de Citation:

-----------------



En rouge ce sont les coordonnées du gabarit ayant permis d'afficher le niveau. Il faudra ajouter 200 à la valeur Y pour être bon!

En zone le point d'accroche en X et Y de notre Winnie (décalés de 4 points: valeur de déplacement).

En rose la "ligne de pieds de Winnie.

Le point vert est le point à scruter pour un déplacement sur la gauche :

- Sa valeur en X = INT ( (X+6) /16 )

- Sa valeur en Y = 200 +INT( (Y+41) /16)

On scrute le point obtenu:

- P= POINT ( INT ( (X+6) /16 ) , 200 +INT( (Y+41) /16))

On va faire un peu de math en comparant pour déterminer si ce n'est pas un obstacle; P>6 renvoie -1 si l'équation est vraie (pas d'obstacle) et 0 si elle est fausse (obstacle).

- X=X+ 4 * (P>6)

On aura bien X-4 c'est à dire X + 4*(-1) quand il n'y aura pas d'obstacle et X+0 c'est à dire X + 4*(0) quand il y a un obstacle.



Fin de sitation:

-------------



D'autre part, je souhaiterai augmenter la quantité de DECORS contenu dans cette page:

25 ' Chargement ecran des "sprites" en page 2

26 '

30 SETPAGE0,1:BLOAD"winnie.sc5",S

40 COLOR=RESTORE

41 '

En effet Winnie en 26X38 avec une animation en 8 étapes fois 5 positions prenait beaucoup de place. Soit: 208X190=39520 Pixels

Un Sprite Vaisseau en 16X16 avec une animation de 4 étapes fois 5 position prends beaucoup moins de place. Soit: 64X80=5120 Pixels

Soit un Gain de place de 34400 Pixels de décors en plus. Soit: 128 Blocs DECORS supplémentaires aux 16 premiers.





Comment "Plaquer" ces nouveaux décors sur la page visible, sachant que l'éditeur de niveau de MsxOsaure ne peut identifier que 16 Blocs en se référant à un code de 16 couleurs?



Idée farfelue "ON"

Superposer deux passes consécutives de décors :heink :hum :moue :gne :heink



Une première passe conventionnelle:

Lecture du Premier Niveau Secteur ALPHA de FONDW => Interpétation => Affichage sur la page Visible!

Lecture du premier Niveau Secteur BETA de FONDW => Interprétation => Superposition par dessus la Page déjà visible! (N'effaçant pas les décors générés par ALPHA)

Lecture du premier Niveau Secteur GAMA de FONDW => etc etc...

Chaque passe ayant la capacité de choisir entre 16 Blocs différents!

Idée farfelue "OFF"



Turbo Seb :@

J'attends mes Bombecs :gre Edité par igal Le 25/11/2010 à 18h03


Tiens... voila du boudin, voila du boudin, voila du boudin... :siffle
TurboSEB Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 08/08/2010 à 20h57

Messages: 5886

Le 25/11/2010 à 21h09
Plus je lis ce poste, moins je le comprend:oups (hormis les deux dernieres phrases:D )

Besoins de plus de couleur : passe en SCREEN 8

probleme 2 pages dispo au lieu de 4:moue (possibilité de stocker en RAM ou d'optimisé une seul page avec decors/Sprites/Niveaux):heink



MSX 1&2 + Moniteurs+divers (environ 0.70Tonnes)
   
igal Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 29/07/2010 à 17h19

Messages: 5492

Le 25/11/2010 à 22h24
TurboSEB :
Plus je lis ce poste, moins je le comprend:oups (hormis les deux dernieres phrases:D )



Besoins de plus de couleur : passe en SCREEN 8



probleme 2 pages dispo au lieu de 4:moue (possibilité de stocker en RAM ou d'optimisé une seul page avec decors/Sprites/Niveaux):heink




Salut TruboSeb :)



Pas de soucis de couleurs! Tout va bien de ce coté là.



Mon seul problème actuellement:

Mon vaisseau ne descend pas jusqu'en bas, et ne monte pas jusqu'en haut (Et deux pléonasmes dans la même phrase, deux :lol )



Pour le reste, c'est du bonus!



A) Augmenter le nombre de Blocs de décors affichables!

Une méthode claire dans ma tête serait de se servir de trois couches successives de décors au lieu d'une seule couche actuellement.

Sachant que le code de Msxosaure procède comme suit:



1) Lecture d'une première ZONE de FONDW identifiant grâce à 16 couleurs, 16 blocs disposés sur une ligne "CUCUL", créer un DECOR.

il suffit de répéter l'opération de la façon suivante:

2) Lecture d'une seconde ZONE de FONDW identifiant grâce à 16 couleurs, 16 blocs disposés sur une ligne "KIKI",superpose une seconde couche sur le même DECOR!

3) Lecture d'une troisième ZONE de FONDW identifiant grâce à 16 couleurs, 16 blocs disposés sur une ligne "POPOT",superpose une troisième couche sur le même DECOR!



Au total, au lieu de se retrouver avec un DECOR avec seulement un CUCUL, on a un DECOR riche de 48 blocs différents pouvant afficher CUCUL, KIKI et POPOT!



B) Modifier le code des commandes de déplacement.

Actuellement, le moteur Winnie, ne reconnait que les quatre points cardinaux!

Pour pouvoir déplacer librement un Vaisseau, il faut envisager les diagonales, donc huit direction au total.

Stapha à soumis quelques lignes de code assez intéressantes permettant les diagonales.

A suivre donc...



Ps:J'attends le code complet de Msxosaure qui à quelques peu changé depuis sa première diffusion.




Tiens... voila du boudin, voila du boudin, voila du boudin... :siffle
TurboSEB Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 08/08/2010 à 20h57

Messages: 5886

Le 25/11/2010 à 22h49
Ah avec des mots clair , on compend mieux:p :lol MERCI:D

J'ai bien compris le principe general du prog, mais je l'imagine, car je ne peut pas l'observé, vue que l'emulateur plante sur mon EEEPC.

une solution, utilisé le code d'origine de MSXosaure , en modifiant au maximum les 'Sprites'
(pourquoi se bloqué a du 16x16, vu que ce ne sont pas des Vrais Sprites:hum )
en utilisant la couleur transparente aux maximum, et en gardant les dimentions d'origine, mais effectivement ce ne sera pas optimisé:moue

PS : J'ai compris le principe des 3 Couches : Cucul/Kiki,...:moue et j'ai beaucoup appris avec ce post Edité par TurboSEB Le 25/11/2010 à 23h01



MSX 1&2 + Moniteurs+divers (environ 0.70Tonnes)
   
Stapha Membre non connecté

Touriste

Rang

Avatar

Inscrit le : 22/11/2010 à 14h17

Messages: 35

Le 25/11/2010 à 23h48
Citation :
*****************************BESOIN D'AIDE****************************************

Je butte sur un problème depuis 3 jours, et je trouve pas la solution!!!!

Je n'arrive pas à réduire la Zone de Point d'Accroche Selon X et Y.
Comme promis, pas de code pour l'instant mais je vais essayer de te répondre.



Commençons par expliquer la méthode :

Le but est de pouvoir détecter un décor. La méthode adoptée par MSXosaure consiste à ne pas travailler avec le sprite mais avec le rectangle dans lequel il se trouve.

- Inconvenient : pas de détection au pixel près

- avantage : beaucoup plus rapide (de façon software). En basic, c'est essentiel...

Pourquoi est-ce plus rapide ? C'est simple : on ne s'occupe que de 4 points : les 4 bords du rectangle.

MSXosaure fait mieux : il ne teste que 2 point parce qu'il ne s'occupe que des premiers bords du rectangle. Premiers dans le sens ou le rectangle avance.

(On va a droite : on teste les 2 points haut et bas du bord droit. On va en bas : on teste les 2 points gauche et droit du bord inférieur. et ainsi de suite.)



Bien sur, la zone testée pour Winnie ne faisant qu'un pixel de haut, dans le cas d'un mouvement horizontal il n'y a plus qu'un point à tester (les 2 pixels haut et bas sont confondus...) et dans le cas d'un mouvement vertical, les 2 points à tester sont identiques qu'on aille vers le haut ou le bas.



Appliquons sur Winnie pour voir si ça marche :

Winnie fait 26x38 pixels. Les coordonnées de ses pixels vont de (0,0) à (25,37). La zone à tester est sur la dernière ligne. Comme les pieds sont moins larges, MSXosaure a choisit de la placer du 7eme au 18eme pixels (la ligne rose sur son dessin). Donc les coordonnées de la zone vont de (6,37) à (17,37). Il ne faut pas oublier que ça commence à 0...

Ensuite, à ces coordonnées, il faut ajouter 4 à cause des 4 pixels ajoutés pour effacer le précédent sprite. ça devient donc (10,41) à (21,41). Dans le code buggé ;) que j'ai donné, ce sont les valeurs qu'on retrouve...

MSXosaure a travaillé différemment : il traite les bords AVANT de calculer les nouvelles coordonnées : il leur ajoute donc simplement le décalage que Winnie va subir : +4 ou -4 pixels vers le haut ou vers le bas.

Donc ça donne, pour les coordonnées à tester, selon que Winnie aille :

à gauche : -4 sur les X -> (6,41) à (17,41)

à droite : +4 sur les X -> (14,41) à (25,41)

en haut : -4 sur les Y -> (10,37) à (21,37)

en bas : +4 sur les Y -> (10,45) à (21,45)

Ce sont les valeurs qui se trouvent dans le code, avec seul la valeur de gauche ou de droite dans le cas d'un mouvement horizontal (revoir le point sur le rectangle plat plus haut...)





C'est ok ? Appliquons ça au vaisseau.



Cette fois la zone à tester n'est pas plate. On a un vrai rectangle qu'il faut définir sur 4 points. Place ce rectangle autour du vaisseau (tu le fais passer par tous les pixels exterieurs). Releve les coordonnées et notons ça (x1,y1) pour le point haut gauche et (x2,y2) pour le bas droit (haut droit = (x2,y1) et bas gauche = (x1,y2)). N'oublie pas de commencer à 0 et pas à 1...

Ensuite, Il faut ajouter 4 à toutes les coordonnées pour le bord. (le rectangle n'est pas plat). Enfin on applique le même principe qu'au-dessus et ça donne :

à gauche : -4 sur les X -> (X1,Y1+4) et (X1,Y2+4)

à droite : +4 sur les X -> (X2+8,Y1+4) et (X2+8,Y2+4)

en haut : -4 sur les Y -> (X1+4,Y1) à (X2+4,Y1)

en bas : +4 sur les Y -> (X1+4,Y2+8) à (X2+4,Y2+8)



N'oublie pas qu'il faut calculer P et Q (et tester les 2) dans tous les cas cette fois. Ce n'est pas une perte de vitesse car ce qui compte c'est le temps maximum. L'idéal étant de mettre un temps identique, ce qu'essayais de faire mon bout de code (1 seul code pour tous les cas). Dommage qu'il ne marchait pas... :lol

J'espère que je ne me suis pas trompé dans les calculs mais le principe est là. Si tu as besoin que j'éclaircisse quelque chose n'hésite pas.



La prochaine fois, je t'explique une méthode pour gérer davantage de décor.;)

Elle sera simple et, bien que je ne connaisse pas l'architecture MSX, je suis sur qu'elle sera plus rapide.



Une question : j'adorais le jeu HERO sur 800 XL. Est-ce qu'il existe sur MSX ? ça ferait une bonne idée de jeux en basic, non ? Edité par Stapha Le 25/11/2010 à 23h57
Site web    
kirem Membre non connecté

Touriste

Rang

Avatar

Inscrit le : 05/11/2010 à 13h29

Messages: 45

Le 26/11/2010 à 00h33
Pour Igal:
Le plus simple pour augmenter le nombre de blocs c'est de coder sur 2pixels consécutif (facile avec un vpoke numéro du bloc désiré) et de lire le numéro du bloc par un vpeeek,tu as comme cela 256blocs possible(merci Stapha).Mais il faut modifier tout le code,ou alors lire les 2 pixels avec point(x,y) et creer un octet avec les 2valeurs de couleurs et tu retrouve ton numéros de bloc.

Pour Stapha:
Oui H.E.R.O existe sur MSX,moi j'ai jamais aimé ce jeu qui est un grand hit des années 80,il est sur ebay actuellement mais hors de prix http://cgi.ebay.fr/Jeu-MSX-H-E-R-O-HERO-/260683872526 .

Site web    
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie