Ça ne va pas du tout:
1. Tu n'exécutes la boucle qu'une fois sur 3.
2. Tu recopies le tout à chaque fois. Non seulement ça rend mal sur HW1, mais surtout il te faudrait alors allouer 2 plans et copier 2 fois sur 3 le 1er en $4c00, et 1 fois sur 3 le 2ème.
La logique à suivre sur HW1 est (en pseudo-code):
A. Au début:
1. plane0=$4c00
2. plane1=HeapAllocPtr(3846) ;6 octets de plus pour permettre l'alignement à 8 octets près. (Pas 7 car l'adresse d'un handle est toujours paire.)
3. ioport0=$4c00/8 ;$600010 veut le huitième de l'adresse
4. ioport1=intDiv(plane1+7,8) ;division par 8 par excès (Il faut être à l'intérieur du bloc!) On peut aussi mettre 6 plutôt que 7 car on sait que plane1 est pair.
5. installer l'interruption
B. Dans l'interruption:
1. addq.b #1,var
2. If var.b=3:clr.b var ;var doit appartenir à {0,1,2}.
3. If var.b/=0 Then move.w ioport0,$600010 Else move.w ioport1,$600010 ;pour 2 phases (1 et 2), active le plan 0, pour 1 phase (0), active le plan 1
C. À la fin:
1. remettre l'interruption d'origine
2. move.w ioport0,$600010 ;remet la valeur d'origine du port
3. HeapFreePtr(plane1) ;désalloue le plan 1
Attention, sur HW2, c'est beaucoup plus compliqué que cela.
[edit]Edité par Kevin Kofler le 02-07-2001 à 14:58:05[/edit]

Pourkoi les grays clignote avec graphlib ?
et aussi à koi sert le port $600010 sBibi me l'avait expliké mais j'ai pas tout noté !
ce port contient l'adresse de l'espace memoire qui servira de memoire video sur HW1 !
attention quand meme il y a une petite singularite : $600010 contient l'adresse decrite ci-dessus / 8 !

pwet
bon alors pour que mes NDGS fonctionne impeccablement il me faut divisé l'adresse de mon ecran virtuel par 8
soit :
;;;;;;;;;;;;;;;;;;;;;;;
e_virtuel dc.l 960 ;3840 octets
;;;;;;;;;;;;;;;;;;;;;;;
lea e_virtuel(pc),a0
move.l a0,d0
lsr.w #3,d0
Je voulais vous demander un truc :
Quel est la vrai limite des gray sur HWII ???
J'avais lu au max 4 niveau de gris mais je ne vois pas trop pourquoi
et si on synchro l'aff. des plans avec le refresh de l'écran, ça marche pas?
In many respects the Yoshi is like a beautiful woman. A man can come so enamoured that he bestows on her all his time, his energy and his fortune.
- Fred whipple, 1960
*** Ne sous-estimez pas la puissance de la Marmotte ***
©
Marmotte Team : LaMarmotte, sBibi, Vark & Sabrina
>sBibi: et si on synchro l'aff. des plans avec le refresh de l'écran, ça marche pas?
Tu crois qu'ils font quoi JM (graphlib de Universal OS), PpHd (genlib), FlashZ (TI-Pang, BomberMaze), Thomas Nussbaumer (gray.s de TIGCCLIB), ...?
Ça sert dans une certaine mesure, mais l'effet pratique n'est pas aussi parfait que la théorie.
[edit]Edité par Kevin Kofler le 08-07-2001 à 16:59:09[/edit]
gray4:
add.w #1,compteur
cmp.w #3,compteur
bne suite
clr.w compteur
bra aff_plan0
suite:
move.l plane1,d0
lsr.l #3,d0 ;je divise par 8
move.l d0,($600010)
move.l $64,-(sp) ;on exécute l'auto_int 1 comùe ça pas de blem avec le système
rts
aff_plan0:
move.l #$980,($600010)
move.l $64,-(sp) ;on exécute l'auto_int 1 comùe ça pas de blem avec le système
rts
Eh ben il me semble que j'avais compris mais planté jça ne marche pas c'est encore pire !
ben j'ai testé et résultat t'as tout faut!ben je voulais juste dire que j'ai enfin réussi mes routines pour 4 NDGs HW2 & HW1 qui fonctionne impeccable:
résultat test sur VTI:
clignotement :
HW1 = 0 HW2 = 0
problème rencontré:
ben il y a un déplacement de l'écran sans que je le veuille d'environ 30 picels ça dépend je pense que cela est due au port $600010 !
qqun pourrait m'éclairé un peu plus sur ce port !