Oyez, oyez !

Les résultats du vote sur les meilleurs RPG de tous les temps sont désormais dévoilés dans ce message !

Merci à toutes et à tous pour votre participation !

N'hésitez pas à aller commenter, ajouter des jeux auxquels vous n'auriez pas pensé...

Besoin de traduire des opérations sur les bits

Regroupe tous les sujets sur les commandes, les fonctions, les routines, les modifications des fichiers systèmes (ids, 2da...)...
Répondre
Avatar du membre
Freddy_Gwendo
Adepte de Grondemarteau
Orbe ancien
Messages : 5877
Enregistré le : sam. 23 avr. 2011, 00:26
Localisation : Égaré dans un vortex entre Féérune et le Royaume de Diamant Éternel
Statut : Hors ligne

Besoin de traduire des opérations sur les bits

.

Message par Freddy_Gwendo »

Le code suivant représente des bornes

Code : Tout sélectionner

Notation for slot range: slot/range
  where "slot" can be defined as formula: [x,y] means range x to y (inclusive)

CGameAnimationTypeMonster:              (0x7002 + ([0x00,0x1f] << 4))/0xd
                                        (0x7004 + ([0x20,0x2f] << 4))/0xb
                                        (0x7000 + ([0x30,0x3f] << 4))/0xf
                                        (0x7003 + ([0x40,0x4f] << 4))/0xc
                                        (0x7002 + ([0x50,0x5f] << 4))/0xd
                                        (0x7003 + ([0x70,0x7f] << 4))/0xc
                                        (0x7005 + ([0x90,0xaf] << 4))/0xa
                                        (0x7007 + ([0xb0,0xbf] << 4))/0x8
                                        (0x7002 + ([0xc0,0xcf] << 4))/0xd
                                        (0x7002 + ([0xe0,0xef] << 4))/0xd
                                        (0x7000 + ([0xf0,0xff] << 4))/0xf

CGameAnimationTypeMonsterOld:           (0x7000 + ([0x00,0x1f] << 4))/0x1
                                        (0x7000 + ([0x20,0x2f] << 4))/0x3
                                        (0x7000 + ([0x40,0x4f] << 4))/0x2
                                        (0x7000 + ([0x50,0x5f] << 4))/0x1
                                        (0x7000 + ([0x60,0x6f] << 4))/0xf
                                        (0x7000 + ([0x70,0x7f] << 4))/0x2
                                        (0x7000 + ([0x80,0x8f] << 4))/0xf
                                        (0x7000 + ([0x90,0xaf] << 4))/0x4
                                        (0x7000 + ([0xb0,0xbf] << 4))/0x6
                                        (0x7000 + ([0xc0,0xcf] << 4))/0x1
                                        (0x7000 + ([0xd0,0xdf] << 4))/0xf
                                        (0x7000 + ([0xe0,0xef] << 4))/0x1
J'ai du mal avec les expressions [0x20,0x2f] << 4
J'ai beau savoir utiliser le décalage gauche sur un offset, je patauge un peu sur son utilisation dans un intervalle comme dans cette formule.

Quel est le résultat de (0x7000 + ([0x20,0x2f] << 4))/0x3 ? :wacko:
CARPE DIEM...Co-modérateur de La Forge et de La Chambre des Scribes
Moddeur qui s'arrache les cheveux...
rivvers
Ours brun
Messages : 300
Enregistré le : sam. 21 janv. 2012, 14:36
Statut : Hors ligne
.

Message par rivvers »

Freddy_Gwendo a écrit :
Quel est le résultat de (0x7000 + ([0x20,0x2f] << 4))/0x3 ? :wacko:
Hum, je n'ai jamais vu de décalage sur un intervalle (surtout en hexadécimal) cela va dépendre de la méthode employée mais d'habitude le travail se fait exclusivement sur des bits donc...

En partant de ce principe, cela sera l'équivalent de : ([7200, 72F0])/3

Un décalage à gauche de 4, en théorie, décale de 4 bits soit une multiplication par 2^4, donc 16. Comme le travail se fait en hexadécimal, cela revient simplement à rajouter un 0.
[0x20,0x2F] << 4 revient à [0x200, 0x2F0]
Exactement comme une multiplication par 10 pour la base 10.

Bien sûr une vérification manuelle s'impose pour vérifier la théorie. ;)



edit: en revanche j'ignore si le pas est décalé. Les valeurs de l'intervalle sont-elles 7200, 7201, 7202, 7203,... 72F0 ou bien 7200, 7210, 7220, 7230,... 72F0 ?
J'opterais pour la seconde option.
Avatar du membre
Freddy_Gwendo
Adepte de Grondemarteau
Orbe ancien
Messages : 5877
Enregistré le : sam. 23 avr. 2011, 00:26
Localisation : Égaré dans un vortex entre Féérune et le Royaume de Diamant Éternel
Statut : Hors ligne
.

Message par Freddy_Gwendo »

Effectivement, comme toi, je me posais des questions sur l'intervalle. :)

Problème résolu en utilisant WeiDU. Double bonne nouvelle :

1. Mes calculs sont bons. Confirmés par Argent77 dont les explications ont conforté ma première impression (big thanks to you if you pass by ;) ). Mais comme l'hexa et moi, ça fait deux...
2. Pour les ceusses intéressés : il s'agit des slots diponibles pour les animations de type BGII (SPIT et UNSPLIT) dans les moteurs EE.

Une prise de tête pour pas grand chose, si ce n'est qu'ils confirment les paramètres d'une fonction que j'ai écrite il y a un moment pour mon mod et pour IA. Je joins les résultats en annexe.
Fichiers joints
CGameAnimationTypeMonsterOld.txt
(4.87 Kio) Téléchargé 75 fois
CGameAnimationTypeMonster.txt
(4.53 Kio) Téléchargé 61 fois
CARPE DIEM...Co-modérateur de La Forge et de La Chambre des Scribes
Moddeur qui s'arrache les cheveux...
Répondre

Retourner vers « Programmation WeiDU »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 0 invité