Posts for Dica

Experienced Forum User
Joined: 1/10/2014
Posts: 24
Je te déconseille d'utiliser Windows XP, c'est un vieux système qui n'est plus supporté par Micro$oft, la sécurité ce n'est pas quelque chose à prendre à la légère
Experienced Forum User
Joined: 1/10/2014
Posts: 24
J'ai vite fait regardé, je merge tout ça dès que j'ai un peu plus le temps, thx.
packsciences wrote:
Ton outil a l'air pas mal, mais il n'est pas très permissif.
Tu saurais détailler ? Si c'est juste qu'il est limité par le nombre de fonctions disponibles j'ai prévu d'en ajouter. L'autre problème c'est que je ne connais pas bien les besoins pour TASer, du coup si tu pouvais m'indiquer les plus gros manques ça serait cool. En tout cas merci pour le retour, c'est sympa.
Experienced Forum User
Joined: 1/10/2014
Posts: 24
Virtual Boy Advance: Crash HA lua - 2.1.5-beta (6.4 kb) Issues:
    Probably something
Added/Changed (2.1.4 to 2.1.5):
    Changed SSS to SS (bot). Cleaned the bot's logic. Added shield cooldown in Dingodile's level.
Experienced Forum User
Joined: 1/10/2014
Posts: 24
Ca m'a bien plu d'apprendre qu'on pouvait TASer ces jeux, du coup un grand merci. Par contre j'ai été très déçu de la "facilité" à faire les TAS, du coup je me suis dis : Pourquoi ne pas faire un nouveau "langage" qui sera plus facile à utiliser ? C'est donc bien évidement ce que j'ai fait... Je mets ici le lien vers GitHub, normalement tout est plus ou moins expliqué (malheureusement dans un anglais un peu bancal). J'ai aussi mis quelques exemples. Pour peut être un peu préciser la différence entre mon "langage" et celui de Portal/Source Pause Tool, c'est que avec SPT c'est "à telle frame lance cette action" alors que chez moi c'est "fait ceci puis attend 10 frames puis fait ceci et cela". Comme c'est une première version je n'ai intégré que le strict minimum mais le gros du travail est fait, maintenant il est très facile d'ajouter de nouvelles commandes puisque le bouzin fonctionne par modules (une commande par module, donc très basique mais efficace) Trêve de blablatteries voici le lien vers le projet Note: Certaines commandes utilisent des fonctions du Source Pause Tool de Packsciences, faudrait que je pense à le préciser quelque part... (ce qui veut aussi dire qu'il ne faut pas charger le SPT normal si vous les utilisez mais bien celui de Packsciences)
Experienced Forum User
Joined: 1/10/2014
Posts: 24
N'oublie pas ceci sachant qu'il existe aussi un TAS de la version snes (je ne sais pas les différences entre les versions, je ne fait que te le préciser)
Experienced Forum User
Joined: 1/10/2014
Posts: 24
Feedback about the bot
  • The first cycle is always SS instead of SSS, whatever the way the bot is activated (before moving / the frame Crash moves)
  • The cycle currently used is SSS-9 instead of SSS-11 (I made a little mistake in my math. In my previous post the best cycle was SSS-10 but SSS-11 is better (it's corrected now))
  • Why SSS ? SS is supposed to be faster
  • The current bot doesn't need any logic, it reproduces always the same sequence, so a macro is adequate (and probably easier to code). (I made a script to use macros in Bizhawk if it can be useful in any way)
  • The button B is pressed during the slides but has no effect. I guess it's a bug
About the script:
  • I still don't understand why you are using readword (2 bytes) to read x/y pos instead of readlong (4 bytes). By the way, the current addresses are misaligned, most of the time it means that they are not good. (The addresses slightly change if they are 4b long, x pos: 0x2010A14 and y pos: 0x2010A18)
  • I have no idea what is the purpose of real_speed but why not...
Experienced Forum User
Joined: 1/10/2014
Posts: 24
Okay okay, I'm back (one year between now and my last message wow...) First the lua script, I modified Spikestuff's lua script (avaible here : User movie #21888782487052199) Changelog:
    * Use unsigned 4b for x/y position instead of 2b * Refactorisation (well Spikestuff doesn't like what I did, I should probably not call this refactorisation :p)
Here are my notes about the movements:
Units:
    du : distance unit
    f : frame

Related info:
    The speed displayed by the lua script is _NOT_ the real speed (you can check it yourself by calculating the position difference between two consecutive frames when Crash starts to move). I didn't used the speed to find the fastest way to move, instead I used the position to calculate the real speed.
    "start spin at frame X" means that I press the spin button when the script shows "Slide Time: 22/ X"



SSS (Slide-Slide-Spin):
	start spin at frame 9  => 35744 du (over 59 frames) => 605.8 du/f
	start spin at frame 10 => 36408 du (over 60 frames) => 606.8 du/f
	start spin at frame 11 => 37016 du (over 61 frames) => 606.81 du/f

Slide-Spin:
	start spin at frame 10 => 22096 du (over 36 frames) => 613.77 du/f
	start spin at frame 11 => 22704 du (over 37 frames) => 613.62 du/f
	start spin at frame 12 => 23256 du (over 38 frames) => 612.02 du/f
	start spin at frame 13 => 23752 du (over 39 frames) => 609.02 du/f
	start spin at frame 14 => 23752 du (over 39 frames) => 609.02 du/f

Sooooo:
	best in Slide-Slide-Spin : full slide then 11 frames slide then spin => 606.81  u/f
	best in Slide-Spin       : Slide then start to spin at the frame 10  => 613.77 du/f 

	best of all : Slide-Spin 10 frame

The Slide-Slide-Spin could probably be used in some circumstances where it's needed to travel a longer distance
And a movie example : User movie #21886983363057402 ------------------------------------ I found another none interesting "bug", how to jump above the map limit, here is the movie User movie #21888329955606213 Edit : The lua script is now fixed (previous version here : User movie #21887470776514321 )
Experienced Forum User
Joined: 1/10/2014
Posts: 24
Je tape mes notes ici au cas où ça interesse quelqu'un. (Je dois pouvoir retrouver un WIP du premier niveau si besoin) Voila :
Thermes:
    1b = 1 byte
    2b = 2 byte
    4b = 4 byte
    u  = unsigned
    s  = signed
    le = little endian
    be = big endian

Adresses:
    En rapport avec le joueur:
        011CAC (1b u):
            Direction du joueur
            0 = Up
            1 = Up+Right
            2 = Right
            3 = Down+Right
            4 = Down
            5 = Down+Left
            6 = Left
            7 = Up+Left

        011D66 (2b u le):
            Coord X du joueur

        011D6A (2b u le):
            Coord Y du joueur

        008740 (4b?):
            Valeurs des armes:
                0: gun
                1: grenade

        008744 (4b?):
            Nombre de munitions restantes dans le chargeur

        008748 (4b?):
            0 si une grenade dans les airs sinon 1

        00874C (4b?):
            Nombre total de munitions

        008750 (4b?):
            nombre de grenades sans celle déjà 'chargée'

        008738 (4b?):
            point de vie du joueur

        009604 (2b):
            Contient les boutons actuellement pressés

        009606 (2b):
            Contient les boutons nouvellement pressés (juste pendant une frame)

        011DDA (2b):
            Coord X de l'ombre du joueur
        
    Probablement en rapport avec le joueur:
        011D68 (2b?): 
            Rapport avec les collisions (y axe): 
                FFFF lors d'une collision (haut)
                0000 lors d'une collision (bas)
            comportement étrange lorsque 'R' est appuyé

        011D64 (2b?):
            Rapport avec les collisions (x axe):
                FFFF lors d'une collision (droite)
                0000 lors d'une collision (gauche)
            comportement étrange lorsque 'R' est appuyé

        006178 (2b?) && 00618C:
            Change quand une arme est utilisée, à la manière d'un 'timer'

        01271C (2b?):
            Aussi un 'timer' quand l'arme est utilisée (juste le fusil)
            Prend la valeur 0x3 lorsque utilisé puis décrémente jusqu'à 0 ensuite
                prend la valeur 0x17 et décrémente aussi jusqu'à0
            Prend la valeur 0x60 lors d'un rechargement ou d'un lancé de grenade



Tricks:
    Rapid fire: A, _, B, _, B
        Peut être utilisé en se déplaçant

    Fast open-close menu: Start et A à la même frame


Niveau 1:
    Les ennemis qui lancent des grenades ne sont pas nécessaires pour passer à l'écran suivant s'ils sont hors de l'écran.
    On en trouve dans le niveau 1 au deuxième écran sur les monticules de terre et au dernier écran en dessous du phare.


recherche glitches:
    oob après les cinematiques:
        Quand la camera re-focus sur le joueur, il est poussé pour être dans les limites définies pas le jeu, possible oob ?
        Note: En modifiant directement la ram pour faire de l'oob il semble difficile de dé-oob manuellement, à creuser

    Fast open-close menu: 
        Les options du menu ne sont pas les bonnes (elles sont toutes affichées avec les mots "Main Objective") 
        et sont affichées de manière partielle (la fin des mots est tronquée)
        Le menu select est aussi affecté de la même manière

    Overflow avec un ennemi dans le niveau 1-2 (à vérifier):
        Quand on défonce un ennemi avec le tir secondaire, on peut tirer dessus avec le tir principale et faire poper des items de vie
        Y a peut être moyen de faire de l'overflow s'il n'y a pas de limite d'items
        (Les tonneaux produisent le même effet)

Autre:
    There are some strings in EWRAM : "Player", "Enemy", "WaveBox", "PlayWep"

    En modifiant la position du personnage (directement dans la ram) on peut voir que son ombre ne le suit pas

    Forum JVC (par lolo858):
      "Quand vous finisez le jeu il vous dite campagne terminer avant de sauvegarder.quand vous voyer campagne terminer 
        taper a puis b et il ya une phrase en haut et si vous le faite a chaque fois a apres b ca defile d´autre mot ex:film;grenade."

    Détruire les tonneaux débloque des armes pour la suite (à vérifier)

    Walkthrough: http://www.gamefaqs.com/gba/917848-medal-of-honor-infiltrator/faqs 
Experienced Forum User
Joined: 1/10/2014
Posts: 24
I made a lua script for BizHawk a few weeks ago Here is the link User movie #19987242045801795 You just have to modify the variable sequences. Here I have two macros, the first is triggered by the key 'J' and the second by the key 'C'
Language: lua

sequences = {J = {{"A"}, -- first frame the button A is pressed {}, -- nothing this frame {"B"}, -- Just B {}, -- Nothing (again) {"B"}}, -- and ends with B -- Macro 'C' C = {{"Left", "A", "B"}, -- Left, A and B at the same time {"Left", "Up"}, {}, {"B"}}, }
Feature :
  • Macros triggered by keys
  • Display a message that indicates the end of a macro (very useful if you need to use another macro the next frame)
  • Register infinite number of macros (well you might want to use a keyboard with an infinite number of keys to trigger all of them)
  • No length limit
Limitations :
  • Only one macro at a time (the script could be easily modified if needed)
  • No combination like Ctrl+E (I don't really know if it is possible with BizHawk)
  • I only tested this script with GBA games so joysticks are probably not supported
Experienced Forum User
Joined: 1/10/2014
Posts: 24
Les valeurs m'ont l'air bonnes (mais j'ai check sur BizHawk donc les adresses sont un peu différentes) Le record actuel te bat et très largement, t'aurais pu aussi aller voir le topic sur le forum Bref manque de recherche comme tout le monde te l'a déjà dit :/ PS : VBA n'est plus l'émulateur à préféré, utilise BizHawk à la place
Experienced Forum User
Joined: 1/10/2014
Posts: 24
Je ne l'ai jamais fais personnellement mais l'article de TASVideos sur le reverse engineering me semble une bonne première approche. Il y a aussi pas mal de liens en bas de page qui te seront probablement utiles. (Notamment ceux vers le site de fceux qui me semblent très instructifs)
Experienced Forum User
Joined: 1/10/2014
Posts: 24
Je pense que ça ne sert plus à rien de continuer à lui répondre, tout ce que ça aurait comme conséquence serait de la rage et faire monter son taux de messages/jour qui est déjà probablement le plus élevé de tout TASVideos
Experienced Forum User
Joined: 1/10/2014
Posts: 24
Merci pour le complément d'info, c'est vrai que je passe un peu vite fait sur l'approche plus formelle.
Experienced Forum User
Joined: 1/10/2014
Posts: 24
@Eszik Étonnant, c'est du à quoi ? @gamerretro2 Le temps de déplacement ?
Experienced Forum User
Joined: 1/10/2014
Posts: 24
@gameretro2 Pour la vitesse horizontale c'est assez facile:
  1. tu sautes
  2. tu mets le jeu en pause en étant en phase ascendante/descendante*
  3. tu commences à chercher une valeur différente de 0 (vu que tu montes/descends la vitesse est forcément différente de 0)
  4. tu dé-pause le jeu et attends de retomber au sol
  5. arrivé au sol, la vitesse est nulle, donc suffit de chercher une valeur nulle
  6. maintenant faut recommencer à l'étape 1 jusqu'à trouver
Ensuite, une chose que je vérifierais c'est que les autres vitesses (des axes x et y généralement si z est utilisé pour la hauteur) se trouvent pas dans une zone mémoire proche. C'est en fait une technique de programmation assez courante de regrouper les différents vitesses (positions/accélérations) dans un même objet appelé Vecteur, ce qui a pour effet qu'au moment de la compilation du programme (donc du jeu ici) ces valeurs se trouvent proches dans la RAM. Si ce n'est pas le cas, l'idée est de faire comme pour la vitesse horizontale mais en bougeant simplement ton personnage. Par contre il faut faire attention à la manière dont tu le bouges, si tu le bouges en étant perpendiculaire à l'axe que tu cherches, la vitesse ne changera pas (en pratique ça m'étonnerais que ça arrive souvent mais il faut quand même le savoir) Par rapport au type des valeurs que tu cherches (entier, réel, etc) je sais bien que les positions sont souvent des réels et sont représentées sous forme de nombre à virgule flottante (float/double), pour les vitesses je suppose qu'il en est de même Autre point important : certains jeu 2D n'ont pas de vitesse, le jeu modifie en fait directement la position. Ça m'étonnerais de trouver ça dans un 3D mais c'est quand même bon à savoir D'une manière générale, il faut trouver des "cas" ou ton personnage est dans des états différents, ici on a le fait d'être au sol (vitesse = 0), de monter (vitesse positive/négative) et de descendre (vitesse position/négative). Quand t'as compris ça, il faut essayer de se mettre dans un de ces cas la de faire une recherche puis de passer sur un autre et recommencer, etc. *Il faut faire attention si tu utilises cette même technique mais avec une phase descendante et que tu recherches l'accélération, si le jeu utilise un Vecteur différent de celui du personnage pour coder la gravité (qui est une accélération) dans ce cas tu ne trouveras rien.
Experienced Forum User
Joined: 1/10/2014
Posts: 24
En mappant des touches spéciales comme ctrl/alt/shift sur certaines touches de la manette ça permet d'augmenter le nombre de fonctions disponibles (en utilisant des combinaisons touche spéciale + touche normale). Après faut encore réussir à utiliser ça sans se foirer...
Experienced Forum User
Joined: 1/10/2014
Posts: 24
Les adresses des valeurs que tu donnes pour les différentes vitesses semblent être regroupées dans une même zone mémoire, tu devrais peut être chercher à cet endroit là pour "Sub vitesse Y" si ce n'est pas déjà fait
Experienced Forum User
Joined: 1/10/2014
Posts: 24
gamerretro2 wrote:
Je revien sur rayman advance j'ai fais un test au 2e niveau des montagnes je battais got4n de 50 frames (non optimisé)
C'est marrant j'ai cru que le bouton Edit fonctionnait, il semblerait que non au final...
Experienced Forum User
Joined: 1/10/2014
Posts: 24
Whaa mais ça clash fort ici...
got4n wrote:
gamerretro2 wrote:
oui maintenant je commence a maitriser j'ai testé dans sonic. 2 et j'ai trouvé moi meme 4 valeurs la vitesse X et Y les position X et X sub pixel (j'ai fait en 4bytes pour que ce soit plus précis) et oui mais je vais arreter de mettre dew topic.je vais mettre uniquements les WIP
T'es sûr? Le 4 byte c'est beaucoup beaucoup moins précis que un 2 bytes ou 1 byte, on dirait que tu nous mens là.
Si ton nombre entier est codé sur 4 bytes il pourra prendre plus de valeurs que sur 1 ou 2, donc rien avoir avec la précision. Par contre si c'est un flottant (float/double) dans ce cas il sera plus précis avec 4. J'aurais loupé un truc ?
Experienced Forum User
Joined: 1/10/2014
Posts: 24
Pas moyen de te trouver sur Skype, t'as le bon pseudo ? Je t'envoie un PM avec mon pseudo Skype
Experienced Forum User
Joined: 1/10/2014
Posts: 24
Yop le monde, j'ai vite fait une partie du premier niveau mais avec une "route" différente. Je me suis arrêté à l'écran où des ennemis viennent par trois cotés différents. Je précise aussi que c'est pas vraiment très optimisé, y a moyen de regagner quelques secondes à mon avis Du coup, quelques trucs que j'ai remarqué :
  • Utiliser les bombes pour casser les portes c'est plus rapide.
  • On peut faire un "rapid fire" en changeant d'armes entre deux tirs. Les tirs sortent plus vite qu'en laissant A enfoncé et sortent tout droit.
  • Le nombre de vague peut varier sur le dernier écran (celui où je me suis arrêté)
Et le fichier : ici (Si vous voulez un encodage, dites moi)
Experienced Forum User
Joined: 1/10/2014
Posts: 24
Spikestuff wrote:
Exact. Same. Input.
Okay I see now. I uploaded the wrong file that's why the inputs are the same. I re uploaded the file.
Spikestuff wrote:
The X/Y Pos are actually 2bytes not 4
I don't understand why 2. I'll investigate. And sorry about the mistakes...just a waste of time...
Experienced Forum User
Joined: 1/10/2014
Posts: 24
Spikestuff wrote:
For Crash runs going via LOAD GAME instead of NEW GAME is unacceptable.
I didn't know that. Why is it unacceptable ?
Spikestuff wrote:
2nd I looked back at the input file. You completely took all of Lil_Gecko's input.
I used the first part of Lil_Gecko's input (from the beginning to the title screen) and made the rest by myself (that's why the author is Lil_Gecko). I shouldn't do that, sorry. Actually my movie is a little bit faster than Lil_Gecko's one (24 frames I think) and it's NOT the same.
Spikestuff wrote:
Exact. Same. Input.
Nope. Similar, but not the same. (You can see the difference in a video)
Spikestuff wrote:
You haven't given us your lua.
Just a mistake. The link is updated.
Spikestuff wrote:
Every other feature was used from me and got4n
My script is totally different but most of the features are the same.
Spikestuff wrote:
And.... what exactly is this "better precision"
I'm using 4 bytes adresses instead of 2 (you) Actually I'm French, is my sentence understandable ? (I'm talking about the sentence in my first post)
Spikestuff wrote:
Your files on the 3 glitches are known.
I never heard about them so I shared those glitches
Spikestuff wrote:
Welcome to TASVideos.
Hum...thank you
Experienced Forum User
Joined: 1/10/2014
Posts: 24
Hi, i made my own lua script (using some of your addresses). You can download it here Features:
    > Crash's position (X and Y with a better precision) (current and next frame) > Crash's speed (X and Y with a better precision) > Lives, boxes, apples and mask > Spin/slide cooldown > Spin progress and cooldown (water level) > Shoot cooldown (fly level) > Show "where" you are (in the air, on the ground, etc) > Show the state of Dungodile's shield (On/Off) > re-record count > Alert message when movie is not recording > Values are displayed depending on the kind of level (water, fly, normal, boss, etc) so you can easily add/remove your own values
I also made a WIP (only the first stage) I used an interesting trick at the beginning, instead of starting a new game I press "Load game" and then I go back the warp room. By doing that I won +/- 15 frames. And I found three glitches : slide, walljump and enterfloor You are allowed to use all my files