CPC Rulez
https://cpcrulez.fr/forum/

Modifier l'emplacement du VBL avec un OUT
https://cpcrulez.fr/forum/viewtopic.php?f=4&t=296
Page 1 sur 1

Auteur :  dominique [ 22 Juin 2008, 15:40 ]
Sujet du message :  Modifier l'emplacement du VBL avec un OUT

Normalement le VBL se déclanche en haut de l'écran.
Les codeurs de démos sur CPC arrivent à modifier l'attente du raster où ils veulent.
Je voudrais connaitre l'astuce de programmation avec un OUT et accompagné d'une explication.

Auteur :  Megachur [ 22 Juin 2008, 19:57 ]
Sujet du message :  Re: Modifier l'emplacement du VBL avec un OUT

qu'est-ce que tu veux faire exactement ?

en fait, il suffit de prendre la main en asm (sans les interruptions amsdos) et de créer un programme asm qui fait en sorte que l'écran ne soit plus synchronisé à 50hz...

mais est-ce que c'est ce que tu veux exactement ? :roll:

Auteur :  cmp [ 25 Juil 2008, 00:51 ]
Sujet du message :  Re: Modifier l'emplacement du VBL avec un OUT

euih c'est tout con


frame ld b,#F5
in a,(c)
rra
jr nc,frame
;
;tu veux attendre 1 ligne apres la vbl
;facile

ds 64,0 ;64 Nops

jp frame


apres tu fais tes rasters ou tu veux :) ce ne sont que des boucles :)

Auteur :  BDCIron [ 25 Juil 2008, 01:52 ]
Sujet du message :  Re: Modifier l'emplacement du VBL avec un OUT

Ca va bouger ton truc CMP en plus en fonction du CRTC tu ne sera pas au meme endroit... Et rien ne dit que tu as choppé le debut de la VBL...

Auteur :  markerror [ 25 Juil 2008, 07:41 ]
Sujet du message :  Re: Modifier l'emplacement du VBL avec un OUT

Bonjour,

Si je décrypte la question, l'idée n'est pas de modifier le début de la VBL, mais plutôt de savoir comment faire des changement de palettes et de mode. Le plus simple, c'est de récupérer un exemple de routine de rasters, si elle n'est pas pourrite, tout devrait s'éclairer :-).

La technique est assez simple en fait, si on veut changer une couleur à une ligne précise de l'écran, il faut :

1) Virer les interruptions avec un DI et détourner le vecteur &38 en lui pokant un EI RET (FB C9). Si on ne détourne pas ce vecteur, le "raster" ne sera pas parfaitement stable.

2) se synchroniser sur le début de la VBL (avec l'équivalent d'un CALL &BD19), la routine décrite au dessus par CMP

3) attendre...
- soit en utilisant des commandes HALT (en n'oubliant alors pas de remettre les interruptions en ligne par un EI NOP) dont la fonction est en gros d'attendre 300ms (soit 1/6ème de la hauteur de l'écran).
- soit avec une simple boucle qui incrémente un registre 16 bits.
En général, on mélange plutôt les deux méthodés :-)

4) modifier la couleur.

C'est pas plus compliqué que cela !

T&J/GPA

Auteur :  cmp [ 25 Juil 2008, 08:04 ]
Sujet du message :  Re: Modifier l'emplacement du VBL avec un OUT

voilà en gros ce que disais TOM ;)



ORG #1000
; ENT $
;
;
DI
LD hl,(#38)
LD (INTER),hl
LD hl,#c9fb
LD (#38),hl
;
;
EI
main
LD b,#F5
syn IN a,(c)
RRA
JR nc,syn
;
HALT ;Les halts arrivent tous les 52lignes donc 52*6=312,5
HALT
;
ld bc,#7F00
out (c),c
ld a,#5C
out (c),c

;
HALT
ld bc,#7F00
out (c),c
ld a,#4C
out (c),c


;
HALT
ld bc,#7F00
out (c),c
ld a,#4E
out (c),c

;
HALT
ld bc,#7F00
out (c),c
ld a,#54
out (c),c

;test space
LD bc,#F40E
OUT (c),c
LD bc,#F6C0
OUT (c),c
XOR a
OUT (c),a
LD bc,#F792
OUT (c),c
DEC b
LD c,#45
OUT (c),c
LD b,#F4
IN a,(c)
LD bc,#F782
OUT (c),c
DEC b
LD c,#00
OUT (c),c
AND #80
JP nz,main
;
; retour au systeme et restaure interruption z80
sys
;
LD bc,#bc04
OUT (c),c
INC b
LD c,38
OUT (c),c
;
LD bc,#bc02
OUT (c),c
INC b
LD c,46
OUT (c),c
;
LD bc,#bc01
OUT (c),c
INC b
LD c,40
OUT (c),c
;
LD bc,#bc07
OUT (c),c
INC b
LD c,30
OUT (c),c
LD bc,#bc06
OUT (c),c
INC b
LD c,25
OUT (c),c
;
LD bc,#bc0C
OUT (c),c
LD bc,#bd30
OUT (c),c
LD bc,#bc0D
OUT (c),c
LD bc,#BD00
OUT (c),c
;
;
LD hl,(INTER)
LD (#38),HL
EI
;
RET
INTER DW 0

Auteur :  hERMOL [ 25 Juil 2008, 08:58 ]
Sujet du message :  Re: Modifier l'emplacement du VBL avec un OUT

pour info des tonnes d'articles sur le sujet rasters sont à lire sur le site ...

http://www.google.fr/search?hl=fr&sites ... cher&meta=
https://cpcrulez.fr/coding.htm#CRTCA100

Auteur :  BDCIron [ 25 Juil 2008, 11:27 ]
Sujet du message :  Re: Modifier l'emplacement du VBL avec un OUT

Ta routine CMP ne marchera toujours pas de la même façon sur tous les CPC... Exemple sur CRTC 1, ton premier HALT choppera l'interruption qui a lieu en même temps que la VBL tandis que sur les autres tu seras sur la 2ème... Pour palier à cela, un petit LB B,32:DJNZ $ avant le premier HALT te permettra au moins d'éviter cela.

Auteur :  cmp [ 25 Juil 2008, 13:16 ]
Sujet du message :  Re: Modifier l'emplacement du VBL avec un OUT

je le sais bien amaury :)

le but etait d'écrire en code assembleur :) le litteral de ce cher tom :)


bien sur, je suis totalement d'accord avec ce que tu dis :)


petite question pour la personne ayant posté : Cela te convient-il ?

Page 1 sur 1 Le fuseau horaire est UTC+1 heure
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/