Salutations à tous !
Je me lance actuellement dans une phase de recherches sur le fonctionnement de Blues Brothers sur snes pour un/plusieurs futur TAS.
Voici mes quelques travaux qui seront complétés avec le temps :
Rom : Blues Brothers, The (U) !
Snes
plate-forme
1 à 2 joueurs
Développé par Titus Software
Édité par Titus Software
Sorti le 26.03.1993 (Japon)
Sorti en 06.1993 (USA)
Sorti en 1993 (Europe)
Emulateur : lsnes rr1-(delta)18(epsilon)3[bsnes v085 (Compatibility core)]
Les Touches : (BYsSudlrAXLR)
B : saut
Y : accélération
s : utile pendant le menu pour le choix des options et du perso
S : pour activer l'étape suivante du menu, pour passer les chapitres, pour mettre le jeu en pause
u : pour s'accrocher/monter sur une échelle/chaine
d : pour déscendre une échelle/chaine, pour se baisser, pour faire perdre de la vitesse.
l : pour se déplaçer à gauche
r : pour se déplaçer à droite
A : pour lançer un disque vinyle
X : pour lançer un disque vinyle
L,R : Scrolling de l'écran vers la gauche ou la droite.
Attribution des touches pour Manette Xbox360
joystickbutton0 B
joystickbutton1 A
joystickbutton2 Y
joystickbutton3 X
joystickbutton4 L
joystickbutton5 R
joystickbutton6 select
joystickbutton7 Start
Memory Watches
player 1 (Elwood)
player 2 ( Jake )
Timer59 : 0x7e09ac (Lorsque Timer59 passe à 59, le temps est décrémenté)
Menu
Début des inputs à la frame 659 pour passer ou choisir les options sonore. (possibilité d'activer à la frame 658 après avoir macher la touche "start" de manière ampirique ,je n'en ai pas encore décortiquer la raison)
Choix de l'un des persos ou des deux à la frame 812. (frame 811 pour le cas cité au dessus)
Différence entre les persos
Il semble qu'il y ai un déséquillibrage entre le perso 1 et le perso 2 pour à la fois l'acceleration horizontal et vertical.
Le repaire de la fenêtre :
Le point P(0;0) se situe en haut à gauche de la fenêtre.
-------------Caractéristiques de JAKE-----------------
Vitesse X
La valeur maximal (absolue) de la vitesse horizontal du perso est de 3 en course/saut/chûte libre.
La variable vitesse.X s'incrémente pour chaque dépassement maximal de la variable sub.vitesse.X
Le pas "d'incrémentation" de la variable sub.vitesse.X n'est pas toujours le même suivant la position du perso (mais tourne globalement à '64') de même que son initialisation. à vérifier.
Tirer un vinyle pendant un déplacement vers la droite à une vitesse.X = 3 la fait baisser à 2 pendant le moment de l'animation du tir.
Tirer un vinyle pendant un déplacement vers la gauche n'entraine pas de modification de la vitesse.
Lors d'un déplacement à gauche, la variable vitesse.X évolue comme cité plus haut. Cependant, lorque la vitesse atteind sa valeur maximal (-3) ,on peut observer que la sub.vitesse.X dépasse la valeur 0. Maintenir les touche [Y] + [l] entraine une diminution de la sub vitesse jusqu'à atteindre 0.
Pour maintenir une valeur suppérieur à 0, la technique consciste à alterner [Y] + [l] et [l].
On pourrait penser qu'il s'agit là d'une astuce pour se déplaçer plus rapidement vers la gauche mais ce n'est pas le cas. Le systeme réagis comme si :
Si Deplacement gauche
Si Vitesse.X < 3
Si sub.vitesse.X < (255-Constante) alors sub.vitesse.X += Constante //64 ?
Sinon
sub.vitesse.X += Constante
Vitesse.X++
fin Si
Position.X = Vitesse.X
Sinon
Si touche[Y]==on alors sub.vitesse.X -= Constante //64 ?
Sinon
sub.vitesse.X += Constante
fin Si
Position.X = Vitesse.X – sub.vitesse.X
fin Si
fin Si
Exploitable pour un glitch ??
Vitesse Y
Une collision énemis n'affecte pas la vitesse vertical.
La vitesse Y est maximal au début d'un saut. Sa valeur maximal est de -6 à la manette et peut atteindre -11 grâce à certain items comme les champignons.
La vitesse Y lors d'une chûte sature à 7.
Saut
le saut s'active deux frames après l'appuis sur B
On obtient une multitude de saut en fonction de la vitesse.X et du bouton B activé pendent N frames.
saut mini :
Avec Vitesse.X = 3 et Sub.Vitesse.X = 0 (constantes)
Saut maximum :
Frames d'Invulnérabilité
Lors de l'initialisation du level, le perso possède quelques frames d'invulnérabilité (environ 55 frames)
Influence des objets sur les déplacements
Echelles & Chaines : Les déplacement sur les échelles ou les chaines prennent énormément de temps. Lors d'un saut ou d'une chûte, on doit maintenir la touche haut au minimum 1 frames pour s'agripper sur ses élements et pouvoir éffectuer un nouveau saut.
Prise de vitesse au début du level
L'initialisation de la position du perso dépend des levels.
Comparaison de la prise de vitesse avec et sans saut :
à la frame 1 : le perso viens de toucher le sol
Une étude sur les 6 premiers levels m'a donné une indication directe sur le facteur de la prise de vitesse.
Il semble qu'elle soit lié à la position du perso.
cas des level 1,2 et 5 :
Position.X d'initialisation : 16 pixels
Nombre de frames pour atteindre la Vitesse.X maximal : 11 frames
cas du level 3 :
Position.X d'initialisation : 32 pixels
Nombre de frames pour atteindre la Vitesse.X maximal : 11 frames
cas des levels 4 et 6 :
Position.X d'initialisation : 64 pixels
Nombre de frames pour atteindre la Vitesse.X maximal : 12 frames
Le retard provient peut être des sub pixel de position mais je n'ai pas encore trouvé son adresse pour le confirmer.
Je n'ai pas non plus trouvé de solution pour récupérer cette frame perdu.
On remarque de même qu'à certains levels, la position y d'initialisation varie.
Scrolling de l'écran
Il n'est utilisable qu'à deux conditions :
- La caméra ne doit pas atteindre les limites mini et maxi du niveau.
- Le perso doit avoir une vitesse mini à ne pas dépasser (proche d'une vitesse nulle).
On peut la manier à son avantage pour initialiser des objets gênants tel que les boules à pique/les murs à deplacement vertical voir même certain énemis à des instants t+n ou t-n.
des exemples seront donnés d'ici peu.
Liens Utiles
http://tasvideos.org/forum/viewtopic.php?t=7973
snes9x-1.43v18
http://code.google.com/p/snes9x-rr/downloads/detail?name=snes9x-1.43-rerecording-v18-win32.zip (pour pouvoir lire les movies du lien cité plus haut)
http://tasvideos.org/2242S.html