[Recherche]Tutoriel pour le SPED-3

Discussion dans 'Discussions générales' créé par miyoyo, 24 Novembre 2012.

  1. miyoyo

    miyoyo Poison mortel pour tuer le calme

    Bonjour,

    J'ai cherché pendant plusieurs jours sur google (et déséspérément) un tutoriel pour le SPED-3
    J'aimerais(au possible) savoir comment définir un point dans l'espace et faire des lignes,simplement.

    Merci

    Miyoyo
  2. ikurhai

    ikurhai Premier maître

    A défaut de tutoriel, tu peux toujours lire ceci :
    http://dcpu.com/3d-vector-display/
    Si tu connais le fonctionnement du moniteur, celui du SPED-3 est quasiment similaire.
  3. miyoyo

    miyoyo Poison mortel pour tuer le calme

    Bien merci,mais quelles sont les adresses mémoire? avant ou après les adresses monitoriales?
    (non,ce n'est pas du français,et je suis belge, DEAL WITH IT)
  4. Meewan

    Meewan Capitaine de 0x10c.fr Staff Member

    j'ai pas lu les spec du sped-3 depuis un moment mais si il fonctionne comme l'écran c'est a toi de lui donner un tableau (zone mémoire) a l'initialisation et donc ça peut être a peu pres n'importe ou en ram.
  5. miyoyo

    miyoyo Poison mortel pour tuer le calme

    ouh,ca va faire mal mais...

    Comment on définis une adresse mémoire et surtout combien d'adresses le SPED-3 a besoin?

    EDIT:

    Apparament,le SPED-3 a besoin de 2 adresses pour chaque vertex (ligne?)
  6. ikurhai

    ikurhai Premier maître

    Code:
        .--------------------.
    ----! INTERRUPT BEHAVIOR !------------------------------------------------------
        '--------------------'
       
    A, B, C, X, Y, Z, I, J below refer to the registers on the DCPU
       
    A: Behavior:
     
    0  Poll device. Sets B to the current state (see below) and C to the last error
      since the last device poll.
     
    1  Map region. Sets the memory map offset to X, and the total number of vertices
      to render to Y. See below for the encoding information.
     
    2  Rotate device. Sets the target rotation for the device to X%360 degrees.
    Pour fixer le début de la mémoire allouée au SPED-3, il faut lui envoyer l'interruption 1, avec comme arguments dans X et Y, le début de la mémoire allouée et le nombre total de vertex que tu veux en mémoire.
    Après pour ajouter un vertex, il suffit de modifier les adresses mémoires comprises entre X et X+2Y.
  7. miyoyo

    miyoyo Poison mortel pour tuer le calme

    Désormais,je cherche comment placer un point ou une ligne,j'ai essayé:
    Code:
    set X, 1000
    set Y, 1000
    set Z, 1000
    set c, 3
    set i, 0
    hwi [SPED3]
    Pour avoir un effet (je m'en fiche de l'effet,juste que ca affiche un truc quoi)
    Malheureusement sans succès
  8. ikurhai

    ikurhai Premier maître

    Tu n'as pas lu la doc du SPED-3 ou nos explications...

    Tu dois insérer dans la RAM, aux emplacement prévu deux mots qui définisse un vertex.
    Code:
        .-----------------.
    ----! VERTEX ENCODING !---------------------------------------------------------
        '-----------------'
     
    Each vertex occupies two words of information in the main DCPU RAM. The data is
    encoded as (in LSB-0 format):
    First word: YYYYYYYYXXXXXXXX
    Second word: 00000ICCZZZZZZZZ
    Where XXXXXXXX is the X-coordinate of the vertex, YYYYYYYY is the Y-coordinate,
    ZZZZZZZZ is the Z-coordinate, CC is color, and I is intensity.
    Z is deeper into the screen, if the device is placed face up on the ground, this
    translates to "up" relative to the user.
    Possible color values are 0: black, 1: red, 2: green, 3: blue.
    If the intensity bit is set, the color is drawn as more intense.
    The black color is meant to barely be visible at all, except for in very dim
    environments, or if the intensity bit is set. 
    Donc explication:
    • Le premier mot renseigne sur les positions en X et en Y du vertex. Par exemple: 0b0000101100000101 (0x0B05). On découpe ce nombre en deux, 0b00001011 (0x0B) et 0b00000101 (0x05), donc le vertex composé de ce premier mot a Y = 0x0B = 11 et X = 0x05 = 5
    • Le deuxième mot renseigne sur l'intensité, la couleur et la position en Z du vertex. Par exemple: 0b0000011000000110 (0x0606). Si l'on découpe ce mot comme ce qui est dit dans la doc, on obtient Intensité = 0b1 = 1, Couleur = 0b10 = 2 = vert et Z = 0x06 = 6
    Pour terminer mon exemple, on va supposer que l'on a fixé (grâce à l'interruption que je t'ai expliqué) le début de la mémoire du SPED-3 à l'adresse 0x5000.
    En mettant la valeur 0x0B05 en [0x5000] et 0x0606 en [0x5001], le SPED-3 aura en mémoire un vertex avec X=5, Y=11, Z=6, de couleur verte et d'intensité 1.
  9. miyoyo

    miyoyo Poison mortel pour tuer le calme

    /me a (enfin) tout compris

    Merci :D
  10. 7Ombre111

    7Ombre111 Revenant

    Moi, je n'ai pas compris grand chose :D. Le DCPU n'est pas encore à l'ordre du jour chez moi, j'ai suffisamment à faire avec l'HTML et L.M.M.S..
  11. miyoyo

    miyoyo Poison mortel pour tuer le calme

    Bon,re-up,je me suis inspiré d'un autre programme et je me heurte a un problème

    J'utilise devkit 1.7.6
    quand ce code est compilé:
    Code:
    .org 0x1000
    dat 0x0000, 0x0000
    dat 0x00ff, 0x0100
    dat 0xff00, 0x0200
    dat 0x0000, 0x03ff
    dat 0xffff, 0x0400
    dat 0xffff, 0x05ff
    dat 0xff00, 0x06ff
    dat 0x00ff, 0x07ff
    devkit me crie:
  12. azertyfun

    azertyfun Premier maître

    Les .org ne fonctionnent pas avec devkit, mais y'a pas besoin. Demain je te poste un code qui marche super pour imprimer un modèle 3D :D
  13. Faërie

    Faërie As himself.

    Tiens moi aussi j'ai envie de m'amuser avec ce moniteur 3D. :D
    Un snake en 3D, ça doit être sympa...
  14. azertyfun

    azertyfun Premier maître

    xD
    Par contre un snake en 3D ça risque d'être plus pratique dans le vaisseau avec le projecteur, car les émulateurs utilisent plutôt une vue 3D qui ne respecte pas les proportions (une barre de 10cm à 1m paraitra aussi grosse qu'à 20cm de nous ._.)
  15. miyoyo

    miyoyo Poison mortel pour tuer le calme

    faudrait déja voir la fréquence de rafraichissement,si il prend 1 seconde à rafraichir,on va en chier!
  16. azertyfun

    azertyfun Premier maître

    Bien sur que non, il s'update en temps réel ^^
  17. miyoyo

    miyoyo Poison mortel pour tuer le calme

    Ouf...
  18. Faërie

    Faërie As himself.

    C'est pas grave, vu que ce sera codé. :)

Partager cette page