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

Charger une image.SCR et l'afficher plus tard ?
https://cpcrulez.fr/forum/viewtopic.php?f=4&t=6182
Page 1 sur 2

Auteur :  Bioris [ 23 Jan 2019, 22:37 ]
Sujet du message :  Charger une image.SCR et l'afficher plus tard ?

Bonjour à tous,

J'ai besoin de charger une image "CARTE.SCR" qui sera une carte dans mon jeu pour se déplacer, mais je ne sais pas la mettre en mémoire autrement qu'avec la commande :

LOAD"CARTE.SCR"

Elle s'affiche, mais ensuite dans le jeu je souhaite passer de l'écran Carte à d'autres écrans et revenir à la Carte dès que l'on veut se déplacer.

Pour cela il faut mettre cette image de 16 Ko à un autre endroit de la mémoire, pas à &c000 si j'ai bien compris, ça c'est la mémoire écran affiché.

J'ai vu qu'il existait des commandes du style :

Memory &4000:LOAD"CARTE.SCR",&4000

J'imagine que cela charge mon image en mémoire à l'adresse &4000 ...

Mais après, pour passer l'image de &4000 à &c000 et qu'ainsi l'image apparaisse d'un coup à l'écran ... je ne sais pas.

J'ai vu qu'il y avait POKE pour placer des choses en mémoire, mais je ne maîtrise pas :(

Je précise que je ne connais que le BASIC.

Quelqu'un connais ? :-|

Auteur :  Fredouille [ 24 Jan 2019, 08:30 ]
Sujet du message :  Re: Charger une image.SCR et l'afficher plus tard ?

Je ne suis pas du tout spécialiste, mais peut-être que jouer avec les registres R12 et R13 du CRTC peuvent faire apparaitre une image d'un coup.

Auteur :  Bioris [ 24 Jan 2019, 18:21 ]
Sujet du message :  Re: Charger une image.SCR et l'afficher plus tard ?

:twisted:

Heu, je ne connais pas cela ...
Il me faudrait les commandes avec Memory / Call / Poke :D

Auteur :  GurneyH [ 24 Jan 2019, 18:43 ]
Sujet du message :  Re: Charger une image.SCR et l'afficher plus tard ?

Salut,

Tu peux changer l'adresse de début de la mémoire vidéo et la faire pointer en &4000.

Code :
out &bc00, 12
out &bd00, &10


Pour pointer de nouveau en &c000

Code :
out &bc00, 12
out &bd00, &30


Logon System ACPC n°31 - Le CRTC

Auteur :  demoniakparadox [ 24 Jan 2019, 18:53 ]
Sujet du message :  Re: Charger une image.SCR et l'afficher plus tard ?

Fredouille a écrit :
Je ne suis pas du tout spécialiste, mais peut-être que jouer avec les registres R12 et R13 du CRTC peuvent faire apparaitre une image d'un coup.


Effectivement, comme l'a dit Fredouille, sous basic, tu peux faire ceci:
Code :
OUT &BC00,12:OUT &BD00,16
pour afficher l'image en &4000

puis :
Code :
OUT &BC00,12:OUT &BD00,48
pour revenir à l'état "normal" (image en &C000)

Sinon juste une petite correction, pour pouvoir lire ton image en &4000 il faut faire :
Code :
MEMORY &3FFF:LOAD"Image.scr",&4000

Auteur :  Bioris [ 24 Jan 2019, 20:02 ]
Sujet du message :  Re: Charger une image.SCR et l'afficher plus tard ?

Merciiiiii !!! :D :D

ça marche, ma carte apparait et disparait, j'ai testé ça dans un petit programme où en appuyant sur une touche on passe de la carte à un écran noir puis on revient ... Nickel !

Mais,
pour que l'image apparaisse vraiment je dois utiliser :

OUT &BC00,12:OUT &BD00,16

donc c'est ce code qui affiche mon image qui était dans un coin de la mémoire pour la mettre en mémoire écran visible (&c000).

Ensuite par contre, plus de curseur ! Plus de texte affichable ! :o

Donc il faut un code de plus pour être dans la mémoire écran visible pour mon texte :twisted:

Comment fait-on ?

Pour revenir en mémoire écran, je tape un code par exemple : "LIST" et le listing commence dans le noir et d'un coup cela fait revenir l'image texte sur l'écran et je vois mon listing qui a déjà commencé.
Donc si j'appuie 2 fois sur ESC, les break ne s'affichent pas à l'écran, je tape LIST et cela ne se voit pas non plus, et c'est pendant le listing que le texte revient à l'écran.

Help please :)

Auteur :  GurneyH [ 24 Jan 2019, 21:07 ]
Sujet du message :  Re: Charger une image.SCR et l'afficher plus tard ?

Plutôt que changer l'adresse écran, tu vas devoir copier ton image chargée en &4000 vers &C000

Code :
10 MEMORY &7fff
20 FOR a=&8000 TO &8000+11
30 READ a$:POKE a, VAL("&"+a$)
40 NEXT
50 DATA 21, 00, 40
60 DATA 11, 00, C0
70 DATA 01, 00, 40
80 DATA ED, B0, C9


et pour afficher ton image
Code :
call &8000


Ça doit bien faire une bonne vingtaine d'années que je n'ai pas tapé une ligne de Locomotive basic
:D

Auteur :  Bioris [ 24 Jan 2019, 21:50 ]
Sujet du message :  Re: Charger une image.SCR et l'afficher plus tard ?

Outch ... :o ... beaucoup de codes que je ne comprends pas :twisted:

Je testerai demain.

Est-ce que à chaque fois que je taperai "call &8000" ça m'affichera l'image ?

Ou alors je dois, pour l'enlever, la rebasculer dans un coin de la Ram ? :sigh:

... mais, il n'y a pas LOAD"CARTE.SCR" dans ce code ? ... :twisted:

Auteur :  GurneyH [ 24 Jan 2019, 22:05 ]
Sujet du message :  Re: Charger une image.SCR et l'afficher plus tard ?

Bioris a écrit :
Outch ... :o ... beaucoup de codes que je ne comprends pas :twisted:


Si tu n'as pas l'intention d'apprendre un minimum d'assembleur, tu peux juste utiliser ce bout de code tel quel.


Sinon, en gros, je ne fais que poker à partir de l'adresse &8000 le code assembleur suivant:
Code :
LD HL, &4000  ; source
LD DE, &C000  ; destination
LD BC, &4000  ; taillle
LDIR                ; copie
RET                 


Après avoir chargé ton image en mémoire, et le petit programme basic saisi plus haut, à chaque fois que tu fera un call &8000, effectivement ton image sera copiée en &c000.

Auteur :  Bioris [ 24 Jan 2019, 23:22 ]
Sujet du message :  Re: Charger une image.SCR et l'afficher plus tard ?

J'ai essayé ce code :

Code :
10 MEMORY &7fff
20 FOR a=&8000 TO &8000+11
30 READ a$:POKE a, VAL("&"+a$)
40 NEXT
50 DATA 21, 00, 40
60 DATA 11, 00, C0
70 DATA 01, 00, 40
80 DATA ED, B0, C9


J'ai ajouté LOAD"CARTE.SCR",&4000 à la ligne 10 après le memory :
10 MEMORY &3fff:LOAD"CARTE.SCR",&4000

Cela donne un Reset.

J'ai modifié MEMORY &3fff en MEMORY &7fff ... memory full :(

Je ne comprends pas ces codes, jamais vus ... besoin d'aide :sigh:

Il me faudrait les codes pour mettre en mémoire l'image SCR, puis les codes pour la faire apparaitre et disparaitre à volonté.

En plus, cette carte est en réalité sur la moitié droite de l'image, du pixel x=180 à x=640, donc pour ne pas effacer la moitié gauche de l'écran du jeu, il faudrait que j'affiche ce bout d'image et pas celui de gauche (de x=1 à x=179).

Là je suis loin d'arriver à ce but ... :twisted:

Auteur :  hERMOL [ 25 Jan 2019, 11:00 ]
Sujet du message :  Re: Charger une image.SCR et l'afficher plus tard ?

un petit .dsk d'exemple ...

Auteur :  Bioris [ 25 Jan 2019, 16:13 ]
Sujet du message :  Re: Charger une image.SCR et l'afficher plus tard ?

Merci à tous !

Merci pour ce fichier DSK :D

Je teste ça dès que ... j'ai réussi à refaire marcher mon Gotek :sigh:
J'ai voulu le mettre à la place du lecteur interne (car il tourne et semble s'abimer car mes disquettes s'abime une à une lorsque le Gotek est branché).
Mais j'ai mis l'alim du lecteur interne sur le Gotek ... et là, j'ai F-F même avec ma clé USB connectée, jamais eu ce souci avant.

Je viens de griller le Gotek en mettant une mauvaise alim ? :o

En remettant la bonne alim 5V ... le F-F est encore là sur l'afficheur.
Je vais refaire une clé USB avec fichiers par défaut et voir si le Gotek n'est pas abimé ...

Auteur :  Bioris [ 25 Jan 2019, 17:28 ]
Sujet du message :  Re: Charger une image.SCR et l'afficher plus tard ?

Vérifié,
Effectivement il ne fallait pas brancher l'alimentation du lecteur de disquette directement sur le Gotek. ..

Vu sur hxc2001.Free. fr

Edit : 18h41 :
Clé USB morte, tuée par le voltage de la prise du lecteur de disquette, clé indétectable par le Gotek ni par un PC. Changement de clé USB.

Auteur :  markerror [ 26 Jan 2019, 09:01 ]
Sujet du message :  Re: Charger une image.SCR et l'afficher plus tard ?

Bonjour,

A mon avis, ça serait plus simple que tu uploades ton image pour qu'on bricole un bout de code. Il te faut en fait une routine d'affiche d'un très gros sprite. C'est pas compliqué à faire, mais sans les caractéristiques du truc à afficher (dimensions, positionnement), c'est pas forcément simple à faire.

Markerror

Auteur :  Bioris [ 27 Jan 2019, 10:36 ]
Sujet du message :  Re: Charger une image.SCR et l'afficher plus tard ?

Merci :D

Ma carte en version JPG de PC pour voir à quoi elle ressemblera sur l'écran du CPC :
Image

===============================
La version CPC de 16 Ko en ".SCR" :
Pièce jointe :
CARTE4.zip
en "zip" car en "scr" le forum ne l'accepte pas.

Mon but est de pouvoir afficher cette carte dans mon jeu à chaque fois que l'on veut se déplacer, puis on passe à un écran où on voit le personnage se déplacer donc cette image de la carte va à une autre adresse mémoire que celle de l'écran affiché, et la carte doit pouvoir revenir et repartir à volonté pendant tout le jeu.

Mais : Lorsque cette image SCR est affichée, je dois pouvoir faire des PRINT et des PLOT dessus, je dois afficher différentes choses par dessus et le code qui avait marché précédemment pour afficher la carte et l'enlever ne me permettait pas d'écrire sur la carte (curseur et Ready invisibles) donc mauvaise adresse mémoire d'affichage.

Le code qui a marché chez moi (et qui est court) mais qui enlève le curseur lorsque la carte est affichée est :
Code :
MEMORY &3FFF:LOAD"CARTE4.SCR",&4000
OUT &BC00,12:OUT &BD00,48
OUT &BC00,12:OUT &BD00,16
Merci à demoniakparadox :)

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