MSX Village forum

L'atelier [RESOLU] "NO WAIT" OUTPUT - S3527 - 10% de cycles CPU très simplement

GDX Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 17/01/2011 à 08h52

Messages: 3004

Le 22/11/2011 à 02h43

Reprise du message précédent

Moi, je trouve que la différence est à peine remarquable sur les vidéos mais c'est déjà ça de pris. Tout ce travail est quand même bien utile pour comprendre les entrailles du MSX.

igal :


Voici le résulta des testes.

- Bosconian - Star Destroyer (Namco) : Le titre Bosconian est-il entièrement rouge ?

Le quart supérieur de la lettre B de BOSCONIAN est rouge lorsque le WAIT est désactivé.

En activant à chaud le WAIT, la partie rouge devient blanche.

Nb: Le Titre est en blanc, pas en rouge. (quelque soit la position du switch WAIT On ou Off)


Je suis formel. Sur un MSX japonais à 60Hz les lettres de BOSCONIAN sont entièrement rouges comme sur le jeu d'arcade.

igal :


- Seleniak (Guzuta Raster Leisure) (La rom M1) : Jouable ?

Présente strictement les mêmes symptomes que Space Manbow...

De très nombreux parasites à l'écran!

(Il reste cependant tout à fait jouable au sens stricte du Gameplay!)


Désolé, je me suis trompé. Ce n'est pas la ROM M1 mais l'autre version qu'il fallait tester. C'est indiqué dans la doc. La version M1 est une version modifiée pour fonctionner même si les timing sont différents d'un MSX d'origine. La version M1 fonctionne mais avec quelques défauts dans le son et les graphismes.

igal :


- Retaliot (Video Hazard Electronic) : Jouable ?

Complètement buggé avec ou sans WAIT!

J'ai essayé plusieurs options differentes, mais impossible de jouer.


On dit que le développeur a mis une protection comme pour Seleniak. Le jeu n'est pas jouable si les timing changent. Peut-être qu'il marche que sur un MSX à 60Hz. Je n'ai pas testé à 50Hz.

igal :


- Sweet Acorn : Pas de problème de son dans certains stages ?

J'ai pas remarqué de pb particulier dans la musique!

J'ai pas dépassé le premier stage (pas assez patient lol)


Lorsque les timing sont faux, il arrive que la musique ne soit pas audible à partir du stage 2.

igal :


- Shuffle Puck : Jouable ?

A peine plus rapide qu'en normal...

Il est un peu plus rapide... le jeu est déja trop rapide même avec le WAIT.


OK.

igal :


- Compile Gamecase (JAM) : : Le logo apparait-il normalement ?

Le logo apparait un peu plus rapidement.

Flashé avec la commande /K. Le jeu ne se lance pas...Juste un message S.O.S et retour au logo!



- Activision Gamecase (JAM) : Le logo apparait-il normalement ?

Le logo apparait un peu plus rapidement.

Flashé avec la commande /K. Le jeu ne se lance pas...Juste un message (pas S.O.S) et retour au logo!


Faudrait essayer en 60hz.

igal :


Par curiosité, j'ai testé Manbow 2 et aucun parasite!

Pourtant le moteur graphique est le même que Space Manbow je crois :heink


Le moteur graphique n'est pas le même.

igal :
Si vous avez une solution pour faire tourner Space Manbow en Rom 50 Hz, je suis preneur ;)


Si je me souviens bien, il y a une interruption ligne avec en même temps, un changement de mode d'écran pour afficher le score. En 50Hz, ça doit déconner encore plus. Ça serait amusant de voir ce que ça donne. Edité par GDX Le 22/11/2011 à 14h03
   
igal Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 29/07/2010 à 17h19

Messages: 5492

Le 22/11/2011 à 15h19
Fabf :
Et à part les jeux on sent une différence ?

Une boucle en basic ou un dir sous dos par exemple




Salut Fabf...



En fait lorsque tu fais un DIR sous dos, les noms des fichiers sont affichés de façon incohérente.

Manque de lettres dans les titres, ou encore lettre en quadruple etc...



Pour ce qui est du Basic, voici un bref extrait de la Démo Zelda MSX2 , avec le fond musical en 60Hz.

Les deux premier couplets sont à une allure normale WAIT actif...Le troisième couplet quant à lui est sensiblement plus rapide!












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

Conseiller Municipal

Rang

Avatar

Inscrit le : 17/01/2011 à 08h52

Messages: 3004

Le 22/11/2011 à 15h37
Le troisième couplet est carrément plus rapide! Pour le DOS, ça craint par contre.
   
Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10731

Le 22/11/2011 à 17h01
l'affichage sous DOS laisserait penser que le VDP n'as pas le temps de finir son travail tandis que le Z80 lui envoi déja la suite


:noel
Site web    
igal Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 29/07/2010 à 17h19

Messages: 5492

Le 23/11/2011 à 19h47
Effectivement, j'étais très étonné de voir que même en screen 0, 80 colonnes, le VDP puisse avoir du retard sur un simple affichage de caractères ASCII :oups

Heureusement, une simple bascule de l'interrupteur, et tout rentre dans l'ordre.

@GDX. Toi qui aime bien mettre les mains dans les Roms, t'aurais pas une solution pour forcer Space Manbow .ROM en 50 Hz?
Un truc du genre...

1) Tu lances l'editeur hex ....
2) Tu cherches l'expression MA CH IN CH OU ET TE
3) Tu remplaces par TR UC MU GE

Tu flash et le tour est joué!

Comme j'sais pas ou j'ai mal :heink , je voudrais forcer le 60 Hz cette fois, pour Manbow 2 :fou
Il tourne en 50Hz à l'origine. Peut être pour tourner sur les vieux TV!? lol

Merci


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

Conseiller Municipal

Rang

Avatar

Inscrit le : 17/01/2011 à 08h52

Messages: 3004

Le 24/11/2011 à 03h15
Pour mettre Space Manbow à 50 Hz, il faut changer les octets suivants.

00A40 : 80 -> 82
066CA : 00 -> 02
13063 : 80 -> 82

C'est possible qu'il y ait d'autres endroits à modifier. Il faut tester le jeu jusqu'à la fin pour le savoir.

Space Manbow fonctionne mieux que je l'imaginai à 50 Hz. Seul le son de la demo se coupe avant la fin et l'interruption ligne sous le score ne se fait plus proprement. Ça se voit à partir du stage 2.
   
igal Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 29/07/2010 à 17h19

Messages: 5492

Le 24/11/2011 à 12h36
Merci GDX.

J'ai pu faire l'essai qui m’intéressait à savoir lancer la ROM depuis la Mégaflash 55Nano en 50Hz avec le mode "No Wait".

Je me rend compte que contrairement à ce que je pensai, les "parasite" ne s'affichent pas de façon anarchique, mais il y a une sorte de balayage de l'écran.
Dit avec un dessin, ces parasites se déplacent rapidement et de façon très régulière en balayant l'écran comme sur le schéma ci dessous.



La partie en Orange (High Score), n'est jamais parasité!
Les diagonales vertes schématisent la quantité et le positionnement de ces parasite
En rouge, les flèches indiquent le sens de déplacement.
Le tout se fait très rapidement, et c'est d'ailleurs la raison pur laquelle, j'ai voulu tester le jeu en 50 Hz.
Contrairement à ce que je pensai, il ne s'agit pas de blocs aléatoires, mais bien d'une répétition du même "Bloc" en déplacement rapide comme décrit par les pointillés verts, jusqu'à ce qu'il soit remplacé par un autre "Bloc".
Il peut y avoir 2 ou 3 "Bloc" différents, simultanément dans l'écran.

Je sais pas si c'est parlant pour certains, mais une idée peut être concernant la partie de l'image qui n'est pas touchée par ces symptômes.

@Gdx: Merci pour ta solution :top

Je voudrais voir si Manbow 2 génère lui aussi des "parasites" si il est soumis à un cycle VDP plus rapide.
J'ai bien essayé de lancer la version Hackée sur la Flashrom en utilisant l'option OPF /6 /X.
Je bascule bien en 60Hz sous OPX, mais une fois la ROM lancée, il semblerait que le rafraîchissement rebascule en 50Hz.

T'aurais pas une solution :D ? Edité par igal Le 24/11/2011 à 12h37


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

Conseiller Municipal

Rang

Avatar

Inscrit le : 17/01/2011 à 08h52

Messages: 3004

Le 24/11/2011 à 13h49
C'est possible en détournant la routine qui change le mode 50/60hz mais faut trouver la place dans la ROM et ça prend du temps.
Ou alors il faudrait que OPX patche la ROM au chargement en fonction du mode choisi mais faut le code source et la volonté.
   
Metalion Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 23/12/2009 à 15h32

Messages: 1503

Le 24/11/2011 à 14h10
Si j'ai tout bien compris, la suppression du signal WAIT augmente "seulement" la vitesse d'accès à la RAM. Tous les problèmes que tu rencontres avec les jeux (et particulièrement Space Manbow) sont simplement une conséquence directe de cette augmentation de vitesse.

Pour la réalisation d'effets graphiques et sonores rapides dans les jeux en assembleurs, on est rapidement confronté à la limite des accès I/O avec les périphériques. Il y a deux façons de contourner le problème : soit on attend que le périphérique soit prêt pour lancer la prochaine commande (mais alors on perd du temps en boucle d'attente, et parfois on ne peut même pas savoir que le périphérique est prêt), soit on construit le programme avec suffisamment de précision pour que chaque accès I/O intervienne exactement au moment où le périphérique est prêt.

Cette dernière option est très efficace, mais elle est plutôt difficile à mettre en oeuvre.

Mais, quand elle est mise en oeuvre, elle est très dépendante (évidemment) du timing d'exécution des instructions entre chaque accès I/O. En accélérant l'accès à la RAM, on diminue le temps d'éxécution des instructions qui y accèdent, et on modifie donc le timing précis construit par le programmeur.

Ces parasites en sont la conséquence directe : la synchronisation voulue par le programmeur entre le Z80 et le VDP est perturbée, et il y a un décalage entre le timing des actions prévues et leur réalisation. Edité par Metalion Le 24/11/2011 à 14h11


MSX1: Daewoo DPC-200 / Yamaha CX5M
MSX2: Sony HB-F9P
MSXVR
Vidéo: V9990 (GFX-9)
Audio: MSX-Music (FM-PAC) / MSX-Audio (Audiowave) / OPL4 (Monster Sound FM Blaster) / OPNB (Neotron)
   
igal Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 29/07/2010 à 17h19

Messages: 5492

Le 24/11/2011 à 15h49
@Gdx: Je comprends tout à fait ce que tu dis.
En fait Manbow2 ne se contente pas de "Laisser" le VDP à 50Hz, mais il le fait basculer volontairement.
A contrario, les Jeux MSX1 comme Némesis 2 etc, ne forçant pas la bascule à 50Hz, il suffit de basculer le VDP en 60Hz avec OPF pour que celui-ci y reste ;)

@Métalion: En extrapolant ce que tu dis, il faudrait comprendre que.
Selon la méthode de programmation,[Précision du programme] ou [Attente du périphérique] cela peut être la cause des "parasites"!

Cela voudrait dire que certains concepteurs de jeux, iraient jusqu'à "estimer" le nombre de cycles nécessaire à tel ou tel opération, entre tel ou tel périphérique, et adapter le programme en conséquence pour pousser au maximum des possibilités du MSX, et que SpaceManbow en serait le parfait exemple :moue Edité par igal Le 24/11/2011 à 17h53


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

Conseiller Municipal

Rang

Avatar

Inscrit le : 23/12/2009 à 15h32

Messages: 1503

Le 25/11/2011 à 16h16
igal :
Cela voudrait dire que certains concepteurs de jeux, iraient jusqu'à "estimer" le nombre de cycles nécessaire à tel ou tel opération, entre tel ou tel périphérique, et adapter le programme en conséquence pour pousser au maximum des possibilités du MSX, et que SpaceManbow en serait le parfait exemple :moue


Exactement.


MSX1: Daewoo DPC-200 / Yamaha CX5M
MSX2: Sony HB-F9P
MSXVR
Vidéo: V9990 (GFX-9)
Audio: MSX-Music (FM-PAC) / MSX-Audio (Audiowave) / OPL4 (Monster Sound FM Blaster) / OPNB (Neotron)
   
igal Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 29/07/2010 à 17h19

Messages: 5492

Le 23/03/2012 à 12h39
Le module COVOX et PLAYSMP 2.21.

Voici un autre périphérique profitant plaienement du NO WAIT puisque ce MODE permet l'écoute de Musiques .PCM à un taux de 44Khz et ce à la perfection ;)

Voici quelques extraits du rendu audio impossible sans le mode NO WAIT.

MSX 44Khz Mono:
http://igalsirour.hautetfort.com/media/01/00/262895484.mp3

PC 44 Khz Mono:
http://igalsirour.hautetfort.com/media/02/00/881861460.mp3

GRANDIA II:

MSX 44Khz Mono:
http://igalsirour.hautetfort.com/media/00/00/919604881.mp3

PC 44 Khz Mono:
http://igalsirour.hautetfort.com/media/02/01/3413464983.mp3

Je posterai prochainement un extrait ou je basculerai en temps réel entre le Mode NO WAIT activé et désactivé ;)


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 27/03/2012 à 10h48
Je vous propose de constater par vous même le gain de vitesse du mode "NO WAIT".

Voici une Vidéo qui dure dans son interprétation "Normale" 9 Minutes et 57 Secondes. (597 Secondes)

La lecture est faite sur PC avec un Frame Rate connu de 24 par seconde.

La même vidéo une fois convertie en EVA et lue sur MSX avec le mode "NO WAIT" enclenché ne dure plus que 9 Minutes et 5 secondes. (545 Secondes)
Nb: La vidéo commence à la seconde 6 et se termine à 9 Minutes 11 secondes (à quelques dixièmes près)
Visualisé en 320 / 240


En théorie, le MSX doit lire 12 Frames par seconde.
Normale => 9 Min 57 Sec => 540 + 57 => 597 Secondes X 12Fps => 7164 frames lues en 9 Minutes et 57 Secondes.
Le nombre de Frames est donc de 7164.
(Petite remarque: Remarquez le superbe rendu du ruisseau :kiss :kiss :kiss :kiss )

Quel est le Gain obtenu grâce au mode "NO WAIT"?
Le mode "NO WAIT" permet une lecture des 7164 frames en seulement 545 Secondes.(contre 597 secondes en Normal)
7164Frames Divisées par 545 Secondes => 13 Frames environs...Soit 10% de gain réel ;)

Je ferais un essais en créant un EVA avec la commande:
avi2eva nom.avi nom.eva -fps13 -dither
Au lieu de:
avi2eva nom.avi nom.eva -fps12 -dither

Concrètement, lorsque j'active le mode "NO WAIT", les sons sont plus aigus et les musiques plus rapides.
Cela confirme bien une lecture accélérée du nombre de frames par secondes :top
A suivre ;) Edité par igal Le 27/03/2012 à 14h01


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

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 18/06/2010 à 22h42

Messages: 6285

Le 28/03/2012 à 00h55
Je viens a l'instant de finir la mise en place d'un switch pour le "no wait" et ça fonctionne à la perfection :|
J'ai fait un test avec et sans sur un morceau musical de 40Khz sur speed 00 (le max). Autant c'est lent en normal, par contre le gain de vitesse est extraordinaire en desactivant le wait. Chapeau Igal pour cette trouvaille :top


KCX Bluetooth emitter Mono/ Stéréo, Smart USB
igal Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 29/07/2010 à 17h19

Messages: 5492

Le 28/03/2012 à 01h09
Bravo à tout les membres actifs ainsi qu'à Maître Joda Yoda.



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 28/03/2012 à 10h00
igal :
Bravo à tout les membres actifs ainsi qu'à Maître Joda Yoda.




Edit: C'est un membre de Msx.Org qui a trouvé ça. J'ai juste mis en application son idée tordu comme j'aime bien ^^


Tiens... voila du boudin, voila du boudin, voila du boudin... :siffle
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie