instruction SET

Le coin des demomakers et des programmeurs en herbe.

Modérateurs : SirG, Redfield1, shubibiman, Laucops

Répondre
Avatar de l’utilisateur
touko
NECromancer
Messages : 2297
Inscription : lun. 31 mars 2008 14:32

instruction SET

Message par touko »

Je suis en train de tester cette superbe instruction ..

Sur la doc elle est certifié pour adc,sbc,and,eor,or .
Est ce que quelqu'un sait si d'autres opcodes marchent avec ??
J'ai testé avec mednafen, mais bon comme je sais pas si le 6280 est 100% emulé correctement j'ai des doutes sur d'autres instructions .

J'ai vu une utilisation bizarre de set dans du code desassemblé

Code : Tout sélectionner

l_4fdb: SET     
        .db     $eb
        TIA     $d3db, $c2cb, $b2ba
        TAX     
        LDX     #$9a
        STA     [$8a]
Si y'a des infos dessus je suis preneur, merci d'avance les gars .
Avatar de l’utilisateur
MooZ
Administrateur
Messages : 2090
Inscription : jeu. 16 déc. 2004 14:25
Contact :

Re: instruction SET

Message par MooZ »

Pour plus d'infos, il y a un chapître dédié dans la doc de Charles: 2.3) T flag http://cgfm2.emuviews.com/txt/pcetech.txt

Sinon ton code est bizarre. Ou alors le désassembleur a un bug et l'opcode #$eb existe vraiment.
Le flag T est remis à zéro après l'instruction qui suit SET. Par exemple si tu as:

Code : Tout sélectionner

    ldx    #$04
    set
l0: adc    #$10
l1: adc    #$02
L'instruction en l0 ajoutera 16 à l'octet situé en $2004 (X vaut #$04). Par contre l1 ajoutera 2 au registre A.
Ainsi dans ton code, le set ne sert rigoureusement à rien.
Avatar de l’utilisateur
touko
NECromancer
Messages : 2297
Inscription : lun. 31 mars 2008 14:32

Re: instruction SET

Message par touko »

Merci pour les infos mooz, je vais lire ça de suite ..
Ce petit bout de code est tiré du désassemblage de seiya monogatari que m'avait filé tom ..
En fait c'est ce passage que je comprends pas

Code : Tout sélectionner

SET     
.db     $eb
Sinon des .db $xx, y'en a plein dedans .

J'avais compris comment set marchait, mais je trouvais bizarre que des instructions comme trb,tsb ne marchent pas comme adc,and etc ..
Dernière modification par touko le mer. 18 juin 2014 15:17, modifié 2 fois.
Avatar de l’utilisateur
MooZ
Administrateur
Messages : 2090
Inscription : jeu. 16 déc. 2004 14:25
Contact :

Re: instruction SET

Message par MooZ »

A mon avis ce bout de code est du pâté.

Code : Tout sélectionner

    l_4fdb: SET     
            .db     $eb
            TIA     $d3db, $c2cb, $b2ba
            TAX     
            LDX     #$9a
            STA     [$8a]
Si tu traduis, ça fait.

Code : Tout sélectionner

    l_4fdb: SET                              ; T flag = 1
            .db     $eb                      ; Opcode inconnu. Il sera interprété comme un NOP. Le flag T est remis à 0.
            TIA     $d3db, $c2cb, $b2ba      ; Transfère $b2ba octets depuis $d3db en incrémentant l'addresse source vers $c2cb et $c2cc alternativement.
            TAX                              ; Transfère la valeur du registre A vers X.
            LDX     #$9a                     ; Initialise X à #$9a.
            STA     [$8a]                    ; Stocke la valeur du registre A vers l'octet pointé par $208a/$208b.
Pour résumé, WTF! :)
Avatar de l’utilisateur
touko
NECromancer
Messages : 2297
Inscription : lun. 31 mars 2008 14:32

Re: instruction SET

Message par touko »

Par contre dans la doc que tu m'as donnée charles donne comme instructions modifiées par SET adc, and,eor,or, mais pas sbc, hors dans le rip de code, sbc marche aussi,et sous mednafen aussi .

Sinon pour le WTF, bah je sais pas, mon interrogation est là en fait .. :?

.db #$ comme si on définissait un tableau d'1 octet en plein milieu du code, mais avec un SET avant dont je saisi pas l'utilité .
Compiler un:
set
.db #$xx

Ne renvoie pas d'erreur sous pceas .

Je peux mettre tout le rip si tu veux, en fait ce sont des routines de décompressions, et de gestion du CD,et plein d'autres choses développées pour ce jeu .

PS: Tom a utilisé ton désassembleur :P
Dernière modification par touko le mer. 18 juin 2014 15:57, modifié 2 fois.
Avatar de l’utilisateur
MooZ
Administrateur
Messages : 2090
Inscription : jeu. 16 déc. 2004 14:25
Contact :

Re: instruction SET

Message par MooZ »

Je m'en doutais :D
Etripator est assez "bête". Tu lui donnes une soupe d'octet et il essaye de transformer ça en assembleur. Ca donne des trucs bizarres quand il essaye de desasselbler des données ou quand l'addresse de décodage est décalée.
Un CD est particulièrement tendu à désassembler off-line. Tu ne sais pas où le code va être copier en RAM et surtout ce qui s'y trouve déjà.
Avatar de l’utilisateur
touko
NECromancer
Messages : 2297
Inscription : lun. 31 mars 2008 14:32

Re: instruction SET

Message par touko »

Un peu plus du code

Code : Tout sélectionner

        ROL     <$1d
        ORA     <$0c, X
        TSB     <$fc
l_4fdb: SET     
        .db     $eb   <------------- LA 
        TIA     $d3db, $c2cb, $b2ba
        TAX     
        LDX     #$9a
        STA     [$8a]
        TST     #$7b, <$73
        .db     $6b
        .db     $63
        .db     $5c
        CSL     
        JMP     $3d45   ;// routine in sys ram
        AND     <$2e, X
        ROL     <$1f
        RMB1    <$10
        PHP     
        ORA     [$f9, X]
        SBC     [$eb]     <------------- ET LA 
        CPX     <$dc
        CMP     <$ce, X        
Regardes entre le "LA" et le "ET LA", coïncidence ???
Je m'en doutais :D
Etripator est assez "bête". Tu lui donnes une soupe d'octet et il essaye de transformer ça en assembleur. Ca donne des trucs bizarres quand il essaye de desasselbler des données ou quand l'addresse de décodage est décalée.
Un CD est particulièrement tendu à désassembler off-line. Tu ne sais pas où le code va être copier en RAM et surtout ce qui s'y trouve déjà.
C'est la faute au dev qui a developpé un desassembleur pourri :P
Avatar de l’utilisateur
MooZ
Administrateur
Messages : 2090
Inscription : jeu. 16 déc. 2004 14:25
Contact :

Re: instruction SET

Message par MooZ »

Ce bout de code m'a l'air foutrement bizarre :)
Avatar de l’utilisateur
touko
NECromancer
Messages : 2297
Inscription : lun. 31 mars 2008 14:32

Re: instruction SET

Message par touko »

Bah ouai, à moins que le desassemblage se soit vraiment mal fait, mais c'est vraiment bizarre ..

Sinon ça voudrai dire que SET est pour le TIA, aucun intérêt,en plus de ne surement pas marcher du tout. ..
Avatar de l’utilisateur
MooZ
Administrateur
Messages : 2090
Inscription : jeu. 16 déc. 2004 14:25
Contact :

Re: instruction SET

Message par MooZ »

Le SET est surtout pour le db #$eb. Un SET sur un NOP c'est un peu inutile je trouve :D
Avatar de l’utilisateur
touko
NECromancer
Messages : 2297
Inscription : lun. 31 mars 2008 14:32

Re: instruction SET

Message par touko »

Oui je pense aussi, mais si y'a pas d'erreur, c'est vraiment étrange comme code .
J'ai essayé de coder un truc pour voir, et bah rien de concluant .
Avatar de l’utilisateur
Orion_
NECstasien
Messages : 217
Inscription : mer. 11 juil. 2007 20:56
Localisation : Perpignan
Contact :

Re: instruction SET

Message par Orion_ »

c'est pas du code executé a mon avis, si y'a un jmp en plein milieu, le code qui est après n'a que peu de chance d'être executé
surtout quand tu vois ça:
TAX
LDX #$9a
ça n'a pas de sens de trasher X après avoir sauver A dans X
Avatar de l’utilisateur
touko
NECromancer
Messages : 2297
Inscription : lun. 31 mars 2008 14:32

Re: instruction SET

Message par touko »

Ouai y'a pas mal d'incohérences dans ce code, presque à croire que les pros, n'étaient pas tellement si pros que ça en fin de compte .

J'ai aussi vu pas mal de trucs dans le genre:
tii source, dest,$2

Vachement rapide comme truc, niveau codage surement, mais niveau exécution, pas vraiment ..
Avatar de l’utilisateur
Orion_
NECstasien
Messages : 217
Inscription : mer. 11 juil. 2007 20:56
Localisation : Perpignan
Contact :

Re: instruction SET

Message par Orion_ »

c'est aussi peut être a cause des macro
c'est tellement galère de coder en 6502 que il devait y avoir pas mal de macro avec au final plus du scripting que de la prog.
j'ai vu ça pas mal dans les sources leaké de chez plus quel jeu CD
Avatar de l’utilisateur
touko
NECromancer
Messages : 2297
Inscription : lun. 31 mars 2008 14:32

Re: instruction SET

Message par touko »

Ouaip les routines du bios Cd en sont remplies ..
Ou des trucs (moins graves certe) du style ldx #$00 ..
Répondre