Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
846 connectés 

 

Sujet(s) à lire :
    - Article: un raytracer de base en C++
 

 Mot :   Pseudo :  
 
 Page :   1  2  3  4  5  6  7  8  9  10  11  12  13  14  15
Auteur Sujet :

La programmation d'effets de demos old-school (Assembleur + C)

n°1656823
FlorentG
Unité de Masse
Posté le 11-12-2007 à 20:18:59  profilanswer
 

Reprise du message précédent :
Bon, je vais me remettre à l'asm x86, je ferais bien le starfield (je l'avais fais y'a 5 ans). Je suis en train de revoir toute l'architecture x86 là.

mood
Publicité
Posté le 11-12-2007 à 20:18:59  profilanswer
 

n°1656830
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 11-12-2007 à 20:35:24  profilanswer
 

\o/
par contre fais moi plaisir : fais de l'assembleur 32 bits, du vrai, pas de seizebiterie des années 90 :o

n°1656844
FlorentG
Unité de Masse
Posté le 11-12-2007 à 20:53:24  profilanswer
 

Euh ouais, j'étais parti là-dessus :jap:

n°1656849
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 11-12-2007 à 21:00:34  profilanswer
 

et comme assembleur, je te conseille RosAsm. il se suffit à lui même, n'a pas besoin de linker, et truc sympa, il permet de sauvegarder le source du programme directement dans l'exécutable.
c'est du clé en mains

n°1656862
FlorentG
Unité de Masse
Posté le 11-12-2007 à 21:41:49  profilanswer
 

Ah, parce que je viens de chopper nasm, et il lui faut justement un linker à part (sauf pour des .exe 16bits, mais nan)... Je vais opter pour RosAsm alors [:dawa]


Message édité par FlorentG le 11-12-2007 à 21:45:16
n°1656882
dap++
Script kiddie
Posté le 11-12-2007 à 22:12:23  profilanswer
 

Je te conseille FASM, il est multiplateforme, innovant et le projet évolue encore beaucoup, pas comme NASM. http://flatassembler.net/docs.php?article=design


---------------
dap.developpez.com
n°1656888
FlorentG
Unité de Masse
Posté le 11-12-2007 à 22:16:07  profilanswer
 

Maintenant j'ai commencé à donf' sur rosasm, j'étudierais un peu plus tard les différents assembleurs. Là faut que je souvienne de tout, ça fait 5 ans que j'en ai pas fait :(

n°1656914
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 11-12-2007 à 22:55:31  profilanswer
 

+1 avec dap++, Fasm est le meilleur assembleur, que tu pourras utiliser quand tu auras récupéré les bases avec Rosasm, qui est également excellent mais surtout qui se suffit à lui même (entêtes Win32 compris)
Par la suite, tu pourras faire mumuse avec Fasm, couplé à un super IDE : RadAsm
Par contre, fuis HLA comme la peste (c'est un assembleur à base de macros, qui finit par ressembler à un langage de haut niveau. ou est l'interet ? autant faire du VB)


Message édité par Harkonnen le 11-12-2007 à 22:55:58
n°1656944
FlorentG
Unité de Masse
Posté le 11-12-2007 à 23:53:41  profilanswer
 

Ouais, en examinant les différents assembleurs dispos, je suis tombé sur HLA, et ça m'a direct moins interressé

n°1657074
FlorentG
Unité de Masse
Posté le 12-12-2007 à 11:44:03  profilanswer
 

Bon, j'ai parcouru toute la doc de rosasm, j'me suis remis dans le cerveau un peut toutes les notions de registre, d'adressage, etc.
 
Maintenant, rosasm ne sort que des PE win32, et pour utiliser les bonnes-vieilles interuptions DOS, forcément ça marche pas [:dawa] Je crois que je vais bouger sous FASM pour pouvoir refaire du bon vieux mode 10h, à moins que çe ne soit la forme de 16bits que tu ne voulais pas que je fasse...

mood
Publicité
Posté le 12-12-2007 à 11:44:03  profilanswer
 

n°1657121
bjone
Insert booze to continue
Posté le 12-12-2007 à 13:30:32  profilanswer
 

bah initialise un contexte directdraw :/

n°1657125
FlorentG
Unité de Masse
Posté le 12-12-2007 à 13:39:22  profilanswer
 

Ouais mais voilà quoi... J'veux faire du vieux en 13h, alors si je dois me taper du directX, ça va pas trop l'faire [:pingouino]
 
Et là j'ai bien avancé, j'arrive à afficher un pixel blanc au milieu [:dawak] Voilà le code :

Code :
  1. org 100h
  2.  
  3.     mov ax, 13h
  4.     int 10h
  5.  
  6.  
  7.     mov al, 30
  8.     mov bx, 160
  9.     mov cx, 100
  10.     call outPix
  11.  
  12. waitloop:
  13.  
  14.     mov ah, 01h
  15.     int 21h
  16.     test al, al
  17.     jz waitloop
  18.  
  19.  
  20.     mov ax, 4C00h
  21.     int 21h
  22.  
  23. outPix:  ; al => couleur, bx => x, cx => y
  24.  
  25.     push ax
  26.     mov ax, 0A000h
  27.     mov es, ax
  28.  
  29.     mov ax, 320
  30.     mul cx
  31.     add ax, bx
  32.     mov di, ax
  33.  
  34.     pop ax
  35.     stosb
  36.  
  37.     ret


J'ai tout pigé à 100% et tout refais moi-même [:petrus branlette]

n°1657180
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 12-12-2007 à 15:10:13  profilanswer
 

maintenant, tu me fais la même, mais avec le pixel qui se déplace de gauche à droite, synchronisé avec l'écran :o

n°1657188
FlorentG
Unité de Masse
Posté le 12-12-2007 à 15:21:53  profilanswer
 

AYééééééé !

 
Code :
  1. org 100h
  2.  
  3.     mov ax, 13h
  4.     int 10h
  5.  
  6. mainloop:
  7.  
  8.     mov edx, 0
  9.  
  10.     renderloop:
  11.  
  12.         ; Récupération de la position de l'étoile
  13.         mov bx, WORD [starsX+edx*2]
  14.         mov cx, WORD [starsY+edx*2]
  15.  
  16.         ; On efface la position actuelle
  17.         push edx
  18.             mov al, 0
  19.             call outPix
  20.         pop edx
  21.  
  22.         ; On soustrait la vitesse
  23.         push ax
  24.             movsx ax, [starsV+edx] ; conversion byte -> word
  25.             sub bx, ax
  26.         pop ax
  27.  
  28.         ; Si x < 0, on remet à 319
  29.         cmp bx, 0
  30.         jg assignX
  31.  
  32.         mov bx, 319
  33.  
  34.         assignX:
  35.             mov [starsX+edx*2], bx
  36.  
  37.         ; Affichage de l'étoile
  38.         push edx
  39.  
  40.             ; On addition la vitesse à 22 (histoire du dégradé qui va de 22 à 30)
  41.             mov al, 22
  42.             add al, [starsV+edx]
  43.             call outPix
  44.         pop edx
  45.  
  46.         ; Itération sur les 10 étoiles
  47.         inc edx
  48.         cmp edx, 19
  49.         jle renderloop
  50.  
  51.  
  52.     ; vérif si pas de touche pressée
  53.     push ax
  54.         mov ah, 06h
  55.         mov dl, 0FFh
  56.         int 21h
  57.         test al, al
  58.     pop ax
  59.     jz mainloop
  60.  
  61.  
  62.     mov ax, 4C00h
  63.     int 21h
  64.  
  65. outPix:  ; al => couleur, bx => x, cx => y
  66.  
  67.     push ax
  68.     mov ax, 0A000h
  69.     mov es, ax
  70.  
  71.     mov ax, 320
  72.     mul cx
  73.     add ax, bx
  74.     mov di, ax
  75.  
  76.     pop ax
  77.     stosb
  78.  
  79.     ret
  80.  
  81.  
  82. starsX dw 200, 120, 50, 20, 180, 310, 280, 10, 140, 190, 300, 40, 130, 80, 20, 170, 290, 95, 25, 170
  83. starsY dw 2, 10, 24, 35, 40, 52, 58, 62, 75, 82, 98, 110, 120, 122, 133, 148, 159, 182, 195
  84. starsV db 2, 1, 1, 8, 4, 5, 7, 3, 1, 4, 2, 1, 2, 2, 4, 5, 4, 1, 2, 6
 

Alors évidemment c'est pas très élégant, mais ça fonctionne :

  • 20 étoiles
  • Les plus "éloignées" vont moins vites et sont plus sombres
  • Trois tableaux pour position X, Y et vitesse (un peu moche, mais facile à implémenter
  • Les position et vitesses sont aléatoires, mais entrées à la main
  • Y'a pas de synchro verticale pour l'instant, sous DOSBox faut réduire le nombre de cycles CPU à 15 (c'est 3000 par défaut) pour que ça soit pas trop rapide


Message édité par FlorentG le 12-12-2007 à 15:22:11
n°1657612
FlorentG
Unité de Masse
Posté le 13-12-2007 à 11:28:21  profilanswer
 

Y'aurait un moyen simple de débugger en mode 13h ? Possible, pas possible ? Parce que là je suis en train de refactoriser, en utilisant mieux les registres, en utilisant la stack pour la méthode outPix, mais ça marche plus [:dawa]

n°1657711
bjone
Insert booze to continue
Posté le 13-12-2007 à 14:05:12  profilanswer
 

outPix ne doit pas être callé, mais inliné.

n°1657715
FlorentG
Unité de Masse
Posté le 13-12-2007 à 14:07:00  profilanswer
 

Uniquement pour des questions de performance, nan ? Là je veux le caller juste pour la science. Je verrais après pour les perfs

n°1657754
FlorentG
Unité de Masse
Posté le 13-12-2007 à 14:43:03  profilanswer
 

Bon sinon pour le debug j'ai trouvé : Une version debug de dosbox

n°1657817
bjone
Insert booze to continue
Posté le 13-12-2007 à 16:16:29  profilanswer
 

FlorentG a écrit :

Uniquement pour des questions de performance, nan ? Là je veux le caller juste pour la science. Je verrais après pour les perfs


 
certes  :)  
mais la philosophie de l'asm c'est les perfs :D

n°1657824
FlorentG
Unité de Masse
Posté le 13-12-2007 à 16:23:22  profilanswer
 

Effectivement :jap: Mais comme j'apprends, je tests quelques trucs. Là j'ai réussi, on push sur la stack la coordonnée x, la y et la couleur. On call la fonction outPix, et ça roule, tout est récupérer dans la stack frame.
 
Maintenant c'est sûr, ça à un coût. La permière version avec registres est normalement plus speed. J'ai vu ça en cherchant justement les conventions de calling, un __stdcall va faire en pushant les paramètres sur la stack, alors que __fastcall utilise des registres (mais est forcément plus limité). Enfin y'a l'inlining de la fonction, qui se passe de commentaires, c'est évidemment la plus rapide.

n°1658771
FlorentG
Unité de Masse
Posté le 15-12-2007 à 21:46:43  profilanswer
 

Alors j'ai modifié plein de trucs, notamment les étoiles sous formes de carrés.

 

http://img503.imageshack.us/img503/4662/stars2002ut9.png

 

Au lieu d'utiliser une fonction qui affiche un pixel tout seul, j'ai fait une
fonction qui affiche une ligne horizontale. Un carré est alors simplement une
succession de lignes horizontales.

 

On peut dessiner une ligne horizontale très facilement : on calcule l'adresse
du premier point, il suffit alors d'afficher un pixel en incrémentant l'adresse,
jusqu'à ce qu'on atteint la longueur de la ligne. Avec l'opérande rep stostb,
on peut faire justement ça. Suffit de stocker dans DI l'adresse de base, dans AX
la couleur, et dans CX la longueur de la ligne :

Code :
  1. ;
  2. ; Draws an horizontal line
  3. ;
  4. ; @param word x
  5. ; @param word y
  6. ; @param word length
  7. ; @param color
  8. drawHLine:
  9.  
  10.    push ebp
  11.    mov  ebp, esp
  12.  
  13.    push ax
  14.    push cx
  15.    push dx
  16.    push di
  17.  
  18.        mov ax, 320
  19.        mul WORD [ebp + 8]
  20.        add ax, WORD [ebp + 6]
  21.        mov di, ax
  22.  
  23.        mov ax, WORD [ebp + 12]
  24.        mov cx, WORD [ebp + 10]
  25.  
  26.        rep stosb
  27.  
  28.    pop di
  29.    pop dx
  30.    pop cx
  31.    pop ax
  32.  
  33.    pop ebp
  34.  
  35.    ret 8
 

J'ai utilisé la convention __stdcall, comme en C, pour les appels de fonction.
On push sur la stack les paramètres de droite à gauche, et on appelle la
fonction. Elle se charge de nettoyer la stack des paramètres ensuite.

 


Pour dessiner un carré, on appelle cette fonction de lignes horizontales. On
spécifie les coordonnées du coint supérieur gauche, et la longueur du côté.
On dessigne par lignes horizontales de la fin au début : on précalcule la dernière
ligne, et on dessine jusqu'à ce qu'on arrive à la coordonnée y spécifiée en
paramètres :

Code :
  1. ;
  2. ; Draws a square
  3. ;
  4. ; x & y are top left coords
  5. ;
  6. ; @param word x
  7. ; @param word y
  8. ; @param word size
  9. ; @param word color
  10. drawSquare:
  11.  
  12.    push ebp
  13.    mov  ebp, esp
  14.  
  15.    push ax
  16.    push di
  17.    push cx
  18.    push dx
  19.  
  20.        mov ax, WORD [ebp + 8]  ; y
  21.        add ax, WORD [ebp + 10] ; y + size (square is drawn bottom to top)
  22.  
  23.        squareLoop:
  24.  
  25.           push WORD [ebp + 12]
  26.           push WORD [ebp + 10]
  27.           push ax
  28.           push WORD [ebp + 6]
  29.           call drawHLine
  30.  
  31.           dec ax
  32.           cmp ax, WORD [ebp + 8]
  33.           jnz squareLoop
  34.  
  35.    pop dx
  36.    pop cx
  37.    pop di
  38.    pop ax
  39.    pop ebp
  40.  
  41.    ret 8


 
Il y a matière à optimisation, au lieu d'appeller drawHLine, on pourrait
précalculer l'adresse du pixel supérieur gauche, puis dessiner cash la ligne.
Pour passer à la ligne suivante, suffirait d'ajouter 320 à di, pas besoin
de recalculer l'adresse du point suivant. Je ferais ça plus tard.

 


J'ai aussi fait deux fonctions pour basculer en mode 13h, et une fonction pour
attendre la synchro verticale :

Code :
  1. ;
  2. ; Init mode 13h and init ES at base video address
  3. ;
  4. initScreen:
  5.  
  6.    push ax
  7.  
  8.        mov ax, 13h
  9.        int 10h
  10.  
  11.    pop ax
  12.  
  13.    push 0A000h
  14.    pop es
  15.  
  16.    ret
  17.  
  18.  
  19. ;
  20. ; Wait for VBL
  21. ;
  22. ; © Harko
  23. ;
  24. waitVbl:
  25.  
  26.    vblStart:
  27.  
  28.        mov  dx, 03DAh
  29.        in   al, dx
  30.        test al, 8
  31.        jnz vblStart
  32.  
  33.    vblEnd:
  34.  
  35.        in   al,  dx
  36.        test al, 8
  37.        jz   vblEnd
  38.  
  39.    ret
 


Avec tout ça, remplacer les étoiles sous forme de pixels par des étoiles sous
forme de carrés est trivial. Suffit de spécifier la taille de chaque étoile.

 

Faut juste encore modifier la réinitialisation des étoiles. On ne les remets pas
à 319 pixels, mais à 319 - taille, sinon les étoiles débordent, et un morceau
apparaît de l'autre côté de l'écran (on risque même d'écrire dans des adresses
pas trop autorisée)

 


Voilà le programme final. Les fonctions sus-mentionnées sont dans un fichier à
part, "draw.inc" :

Code :
  1. org 100h
  2.  
  3. call initScreen
  4.  
  5. mainloop:
  6.  
  7.    mov ecx, 19 ; Star counter
  8.  
  9.    call waitVbl
  10.  
  11.    renderloop:
  12.  
  13.        mov ax, WORD [starsX + ecx * 2]
  14.        mov bx, WORD [starsY + ecx * 2]
  15.  
  16.        push 0                          ; Clear current pos
  17.        push WORD [starsS + ecx * 2]
  18.        push bx
  19.        push ax
  20.        call drawSquare
  21.  
  22.  
  23.        sub ax, WORD [starsV + ecx * 2] ; x -= speed
  24.        cmp ax, 0                       ; If x < 0
  25.        jg assignX
  26.        mov ax, 319
  27.        sub ax, WORD [starsS + ecx * 2] ; x = 319 - size
  28.        assignX:
  29.            mov [starsX + ecx * 2], ax
  30.  
  31.        mov dx, 22                      ; 22 = base color
  32.        add dx, [starsV + ecx * 2]
  33.  
  34.        push dx
  35.        push WORD [starsS + ecx * 2]
  36.        push bx
  37.        push ax
  38.        call drawSquare
  39.  
  40.  
  41.        dec ecx
  42.        jnz renderloop
  43.  
  44.  
  45.    mov ah, 06h
  46.    mov dl, 0FFh
  47.    int 21h
  48.    test al, al
  49.    jz mainloop
  50.  
  51.  
  52.    mov ax, 4C00h
  53.    int 21h
  54.  
  55.  
  56.    include 'draw.inc'
  57.  
  58.  
  59. ; Stars X position
  60. starsX du 200, 120, 50, 20, 180, 310, 280, 10, 140, 190, 300, 40, 130, 80, 20, 170, 290, 95, 25, 170
  61.  
  62. ; Stars Y position
  63. starsY du 2, 10, 24, 35, 40, 52, 58, 62, 75, 82, 98, 110, 120, 122, 133, 148, 159, 182, 195
  64.  
  65. ; Stars Speed
  66. starsV du 2, 1, 1, 8, 4, 5, 7, 3, 1, 4, 2, 1, 2, 2, 4, 5, 4, 1, 2, 6
  67.  
  68. ; Stars Size
  69. starsS du 1, 4, 2, 5, 1 , 2, 2, 1, 1, 5, 8, 1, 4, 2, 2, 1, 6, 2, 1, 3
 


Ce qui manque maintenant, outre les différentes optimisations, c'est un
générateur de nombres (pseudo) aléatoires, pour générer les étoiles. Mais faut
le faire à la patte, il me reste encore à étudier tout ça...


Message édité par FlorentG le 15-12-2007 à 21:47:06
n°1659069
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 16-12-2007 à 20:26:50  profilanswer
 

bravo, maintenant tu optimises ce bordel : tu réalises toutes les opérations de tracé dans un buffer, et tu copies ce buffer dans la mémoire écran à chaque VBL :o

n°1659176
ixemul
Nan mais sans blague ! ⚡
Posté le 17-12-2007 à 09:52:32  profilanswer
 

et la zik en interuption [:cerveau yorik]


---------------
VA APPRENDRE ET REVIENS QUAND TU SAIS, SINON ABSTIENT TOI C'EST UN GRAND CONSEIL QUE JE TE DONNE... TU ES INCOMPÉTENT ET C'EST UNE RÉALITÉ, TU N'AS RIEN A FAIRE ICI FAUT S'Y CONNAITRE ... -Jojo1998 - RIP - http://tinyurl.com/qc47ftk
n°1659186
FlorentG
Unité de Masse
Posté le 17-12-2007 à 10:09:45  profilanswer
 

Je vais voir tout ça ce soir :)
 
Pour la musique par contre on attendra ;)

n°1659431
Abstro
Posté le 17-12-2007 à 15:47:02  profilanswer
 

Quand tu connais à peu près l'asm 16, c'est beaucoup dur de passer au 32 [:petrus dei]

n°1659559
bjone
Insert booze to continue
Posté le 17-12-2007 à 20:01:32  profilanswer
 

non, tu as mêmes moins de restrictions (adressage et instructions/opérandes).
 
maintenant ça dépends comment tu y passes, la difficulté c'est l'os sous-jacent.
 
y'a deux choses: le mode réel et le mode protégé/flat.
 
si tu passes en mode-protégé sous dos avec un dos-extender faut se bouffer les contraintes du dos-extender pour communiquer avec certains services du dos.
 

n°1659570
FlorentG
Unité de Masse
Posté le 17-12-2007 à 20:31:39  profilanswer
 

Le mode réel, c'est uniquement 16 bits, nan [:petrus dei]

n°1659573
Abstro
Posté le 17-12-2007 à 20:40:48  profilanswer
 
n°1659608
FlorentG
Unité de Masse
Posté le 17-12-2007 à 22:06:31  profilanswer
 

Mon double-buffering foire  [:sisicaivrai]  
 
http://img159.imageshack.us/img159/7589/stars3000ir4.png

n°1659610
Moktar1er
No one replies...
Posté le 17-12-2007 à 22:10:00  profilanswer
 

C'est bien, à la place t'as fait un stéréogramme :D

n°1659611
FlorentG
Unité de Masse
Posté le 17-12-2007 à 22:12:45  profilanswer
 

Héhé, en plus en regardant bien, ça à l'air périodique

n°1659640
bjone
Insert booze to continue
Posté le 17-12-2007 à 23:27:18  profilanswer
 

FlorentG a écrit :

Le mode réel, c'est uniquement 16 bits, nan [:petrus dei]


 
en fait en mode réel tu peux utiliser des instructions 32bits, la preuve t'en a mis dans ton code.

n°1659642
dap++
Script kiddie
Posté le 17-12-2007 à 23:33:03  profilanswer
 

bjone a écrit :

non, tu as mêmes moins de restrictions (adressage et instructions/opérandes).


C'est clair, faut être maso pour encore utiliser l'adressage 16 bits. :sweat:
 

bjone a écrit :

si tu passes en mode-protégé sous dos avec un dos-extender faut se bouffer les contraintes du dos-extender pour communiquer avec certains services du dos.


Au fait je viens de remarquer qu'en utilisant l'adressage 32 bits dans DOSBox avec des adresses qui dépassent 1 Mo ça a l'air de fonctionner correctement, ça passait aussi sous DOS ça ? :??: En fait ça m'étonnerait pas que le processeur tronque l'adresse.
Et le Plasma plante chez moi, toujours sous DOSBox.
 

FlorentG a écrit :

Le mode réel, c'est uniquement 16 bits, nan [:petrus dei]


Les processeurs 32 bit sont toujours capables d'émuler le mode réel, par contre les 64 bit il m'avait semblé entendre dire que non.


---------------
dap.developpez.com
n°1659684
FlorentG
Unité de Masse
Posté le 18-12-2007 à 09:04:24  profilanswer
 

bjone a écrit :

en fait en mode réel tu peux utiliser des instructions 32bits, la preuve t'en a mis dans ton code.


Ok. Mais j'avais l'impression d'être schyzo en mixant des ECX et des AX

n°1660243
bjone
Insert booze to continue
Posté le 18-12-2007 à 21:44:42  profilanswer
 

FlorentG a écrit :


Ok. Mais j'avais l'impression d'être schyzo en mixant des ECX et des AX


 
bin c'est du bricolage mais ça peut être pratique.
attention aussi au fait d'utiliser des instructions à opérandes 32bits en mode réel: tu as un octet de préfixe qui peu faire plus de mal de bien :D
et symétriquement la même chose en mode protégé, les instructions 16bits ont l'octet de préfixe.
 
maintenant parler perfs avec du code en mode réel avec des routines pas complètement inlinées, c'est pas pertinent.

n°1660244
bjone
Insert booze to continue
Posté le 18-12-2007 à 21:46:02  profilanswer
 

[/quotemsg]

dap++ a écrit :


Au fait je viens de remarquer qu'en utilisant l'adressage 32 bits dans DOSBox avec des adresses qui dépassent 1 Mo ça a l'air de fonctionner correctement, ça passait aussi sous DOS ça ? :??: En fait ça m'étonnerait pas que le processeur tronque l'adresse.
Et le Plasma plante chez moi, toujours sous DOSBox.


normalement, si le binaire que tu lances est un binaire en mode réel, pour faire court, ça doit être tronqué.

n°1660246
FlorentG
Unité de Masse
Posté le 18-12-2007 à 21:46:41  profilanswer
 

C'est dès lors qu'il faut faire de l'adressage style [machin + eax]. Si je met juste ax, fasm veut pas compiler.

n°1660375
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 18-12-2007 à 22:42:32  profilanswer
 

dap++ a écrit :


Et le Plasma plante chez moi, toujours sous DOSBox.
 


marche très bien chez moi, aussi bien le plasma en 13h qu'en mode X :spamafote:
voici mon fichier de config dosbox  


[sdl]
fullscreen=true
fulldouble=true
fullresolution=original
windowresolution=original
output=ddraw
autolock=true
sensitivity=100
waitonerror=true
priority=higher,normal
mapperfile=mapper.txt
usescancodes=true
 
[dosbox]
language=
machine=vga
captures=j:\emulateurs\d-fend v2\capture
memsize=16
 
[render]
frameskip=0
aspect=true
scaler=normal2x
 
[cpu]
core=dynamic
cycles=max
 
[mixer]
nosound=false
rate=22050
blocksize=2048
prebuffer=10
 
[midi]
mpu401=intelligent
device=default
config=
 
[sblaster]
sbtype=sb16
sbbase=220
irq=7
dma=1
hdma=5
mixer=true
oplmode=auto
oplrate=22050
 
[gus]
gus=true
gusrate=22050
gusbase=240
irq1=5
irq2=5
dma1=1
dma2=1
ultradir=y:\
 
[speaker]
pcspeaker=false
 
[bios]
joysticktype=none
 
[serial]
serial1=disabled
serial2=disabled
serial3=disabled
serial4=disabled
 
[dos]
xms=true
ems=true
umb=false
keyboardlayout=none
 
[ipx]
ipx=false
 
[autoexec]
mount c "j:\dos" -label DOS
mount y "c:\ultrasnd"
C:

n°1660535
dap++
Script kiddie
Posté le 19-12-2007 à 10:58:15  profilanswer
 

Harkonnen a écrit :


marche très bien chez moi, aussi bien le plasma en 13h qu'en mode X :spamafote:


J'aurais bien essayé de recompiler mais mon disque dur a décider de lâcher hier. :sweat: Sinon il y un moyen simple pour utiliser un DOS extender en assembleur ?


---------------
dap.developpez.com
n°1660545
bjone
Insert booze to continue
Posté le 19-12-2007 à 11:14:46  profilanswer
 

FlorentG a écrit :

C'est dès lors qu'il faut faire de l'adressage style [machin + eax]. Si je met juste ax, fasm veut pas compiler.


bizarrerie  :??:  
(sinon assembler, pas compiler :D)

n°1660547
bjone
Insert booze to continue
Posté le 19-12-2007 à 11:15:43  profilanswer
 

dap++ a écrit :


J'aurais bien essayé de recompiler mais mon disque dur a décider de lâcher hier. :sweat: Sinon il y un moyen simple pour utiliser un DOS extender en assembleur ?


 
y'a un stub a lier qui peut intégrer le dos-extender.
 
sous Dosbox, j'ai peur que ça ne puisse pas marcher.
Doom ou DN3D ça marche sous dosbox ?
 
regarde PMODE, c'était mon dos-extender préféré. (déjà il s'initialisait plus vite que dos4g)

Message cité 1 fois
Message édité par bjone le 19-12-2007 à 11:16:34
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3  4  5  6  7  8  9  10  11  12  13  14  15

Aller à :
Ajouter une réponse
 

Sujets relatifs
Projet de topic tutorial sur la programmation d'effets graphiquesProgrammation jeux video
cherche cours de programmation[ASM] L'assembleur sur TI82
Newbee en recherche d'un bon bon logiciel de programmationProgrammation graphique : choix d'un toolkit
[Programmation windows en C++] Recherche d'un bon tutorial...la fin des langages de programmation... sous Windows evidemment
cherche pro de la programmation 
Plus de sujets relatifs à : La programmation d'effets de demos old-school (Assembleur + C)


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR