1. #1
    Membre à l'essai
    Homme Profil pro
    Dessinateur technique
    Inscrit en
    mars 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Canada

    Informations professionnelles :
    Activité : Dessinateur technique

    Informations forums :
    Inscription : mars 2008
    Messages : 11
    Points : 11
    Points
    11

    Par défaut [65816] Registre $2115 VMAINC

    Bonjour,
    Je me casse la tête à essayer de bien comprendre la documentation sur le registre VMAINC.
    7 bits 0
    i---ggii
    i = choisir si l'on incrémente lors de l'écrire dans l'octet du haut ou du bas
    gg = Vram address full graphic
    ii = sequence mode sc increment

    Je comprends bien l'utilité du bit 7(i) servant à choisir l'ordre d'écrire dans les registres $2118 et $2119 pour ensuite incrémenter l'adresse de départ dans la VRAM configuré avec les registres $2116 et $2117.
    Ce qui me cause des maux de tête ce sont les bits 0 à 3(ggii) . Par défaut il sont à (0000) donc l'incrémentation de l'adresse se fait 1 par 1 dans la VRAM. Je voudrais comprendre l'utilité de faire des incrémentations par 8 adresses pour 32 fois avec des formations de 2 bits (ggii = 0100). Est-ce que c'est une fonction utilisée lors de l'écrire avec le DMA qui utilise l'écrire en parallèle ?

  2. #2
    Expert confirmé
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    mai 2010
    Messages
    1 937
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : mai 2010
    Messages : 1 937
    Points : 5 404
    Points
    5 404

    Par défaut

    On faite ta question peut être générique sur tout les autre machine on trouve aussi des 'abbération' sur le PC/x86.

    Son utilité , la seule que je vois c'est pour l'écriture sur les map(tile) si on veut écrire sur une colonne (donc que l'adresse incrémente de 32 ou 128).


    Mais je peux aller plus loin sur Neo Geo il y'a un Bios , et si tu te dis est que il est utile ?
    Ben non apparemment aucun jeu commerciaux utilisait vraiment le Bios , la Neo Geo possédait un DMA mais apparemment son DMA était plus long qu'une copie 'manuelle' et donc jamais utilisé.
    Comme sur PS2 la lecture de certain registre sont très long (et apparemment aucune jeux commerciaux ne les lisait).

    Et sur toute on pourrait se poser la question pourquoi ? et ce que c'est utile ?
    Aucune machine n'est parfaite ,la SNES possède de nombreux défaut et certaine option qu'elle propose sont même obslotete a mes yeux ,un exemple simple les registres OAMDATA et VMDATA , il est plus rapide d'utiliser le DMA que t'utiliser ces registres directement :p
    Anecdote que j'avais lu le mode7 est très difficilement utilisable sur la SNES (ça demande des calcul mathématique poussé) et je l'ai utilisé et je te le confirme que le mode 7 est vraiment pas super exploitable sur une SNES , pour cela que Super Mario Kart possède une puce faite pour exploiter ce mode 7
    Une autre truc a savoir tu pourrait te poser la question pourquoi le 9bits de la position X de l'OAM est aussi mal foutu , ben la raison est simple la compatibilité Nes ! ah mais what la SNES ne lis pas les jeux Nes x)
    (En faite ils ont sortis la console avant qu'elle ne soit fini pour concurrencer la Mega Drive qui prenait des part du marché).
    Aller encore une dernière c'est comme les différents mode de la SNES enfaîte le mode le plus utilisé et le mode 1 (a 99% facile) a quoi serve les autre mode ? en général pas a grand chose (a part pour afficher une image xD ).
    Le mode 0 lui est clairement fait pour la compatibilité Nes , cela veut dire que son utilité est proche de 0

    Mon conseil utilise seulement ce que tu as Besoin .

    Voila je que j'ai fait sur SNES :


    Et j'utilise pas tout pas que je ne saurais pas faire , juste que ben certaine option me semble pas nécessaire.
    J'utilise donc principalement SNES_VMAINC $80
    SNES_VMAINC $00 pour le mode7 (on gros c'est que le mode 7 enregistre ces donner très différemment un octet pour la palette un autre pour les tiles).
    SNES_VMAINC $81 pour écrire sur une colonne (pour le scrolling).

    voila

  3. #3
    Membre à l'essai
    Homme Profil pro
    Dessinateur technique
    Inscrit en
    mars 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Canada

    Informations professionnelles :
    Activité : Dessinateur technique

    Informations forums :
    Inscription : mars 2008
    Messages : 11
    Points : 11
    Points
    11

    Par défaut

    ça m’éclaircit un peu mieux, merci.

    Pour le scrolling c'est intéressant. Je ne suis pas encore rendu à cette étape de mon apprentissage. je vais penser à utiliser le mode d'incrémentation 32x32 pour le scrolling par colonne.
    Pour l'incrément par 8 je suppose que c'est pour accélérer le transfert en DMA 8 channels pour un écran complet. le 8x32 = 256 donc pour les grandes tuiles 16x16 (16x14 dans l'écran). le 8x64 = 512 pour les petites tuiles 8x8 (32x28) à l'écran. et le 8x128 doit être quand on veut écrire sur plusieurs écrans à la fois (bits 0 et 1 du BG1SC à BG4SC).

  4. #4
    Expert confirmé
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    mai 2010
    Messages
    1 937
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : mai 2010
    Messages : 1 937
    Points : 5 404
    Points
    5 404

    Par défaut

    Pour l'incrément par 8 je suppose que c'est pour accélérer le transfert en DMA 8 channels pour un écran complet. le 8x32 = 256 donc pour les grandes tuiles 16x16 (16x14 dans l'écran). le 8x64 = 512 pour les petites tuiles 8x8 (32x28) à l'écran. et le 8x128 doit être quand on veut écrire sur plusieurs écrans à la fois (bits 0 et 1 du BG1SC à BG4SC).
    Euh c'est surtout en faite pour utiliser le DMA
    Si je faisais un 0x80 ça écrirait sur une ligne tout simplement
    Et si tu utilise VMADD + VMDATA pour écrire sur le bon endroit c'est beaucoup trop long.


    Donc oui le transfert DMA doit gerer tout les configuration possible (moi je suis en 16x16pixel en 32x32 tiles).
    Mais effectivement la colonne change si on est en 8x8pixel et/ou qu'on est en 64x64tiles par exemple
    (donc utiliser 0x82 / 0x83)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Windows]accès base de registre windows
    Par Greg01 dans le forum APIs
    Réponses: 27
    Dernier message: 05/06/2007, 15h14
  2. Accès à la base de registre windows à distance
    Par xavame dans le forum Sécurité
    Réponses: 4
    Dernier message: 13/07/2005, 15h23
  3. Comparaison d'un registre 8 bits avec une variable 32 bits
    Par tupperware dans le forum x86 32-bits / 64-bits
    Réponses: 3
    Dernier message: 15/10/2002, 10h25
  4. registre de connexion windows internet
    Par lafaryan dans le forum Web & réseau
    Réponses: 2
    Dernier message: 21/08/2002, 12h52
  5. Utilisez vous la base de registres ?
    Par gRRosminet dans le forum C++Builder
    Réponses: 8
    Dernier message: 04/06/2002, 13h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo