π
<-

[eZ80] Programmer des Rasters (ou Rasterbars)

Assembleur, Axe, C/C++, ICE...

[eZ80] Programmer des Rasters (ou Rasterbars)

Message non lude grosged » 25 Mar 2016, 20:38

Salut à tou(te)s !

Je ne vous cache pas qu'il m'arrive parfois d'être empreint d'une certaine nostalgie : les années CPC !
Vous savez cet ordinateur familial 8bit (doté d'un... Z80!) qui a débarqué en France dès l'automne 1984 ? Au départ disponible en clavier...QWERTY !
(c'était le cas du mien, tout droit venu d'Angleterre!) et décliné en version "lecteur de cassette" (CPC464) ou lecteur de disquette (CPC 664) puis, quelques mois plus tard en version disquette et 128Ko de ram (CPC6128) et pour le moniteur : en version monochrome (vert!) ou couleur .
Bref, je vais en venir au vif du sujet : je veux vous parler de l'effet graphique appelé rasters ou rasterbars
(un bel exemple ici : https://www.youtube.com/watch?v=Oc20_swFSMc )

Et je me suis dit qu'étant donné l'utilisation de palette de couleur (en mode 8bpp, 4bpp, 2bpp, 1bpp) sur la TI83 Premium CE, c'était possible de programmer des rasters sur la TI83Premium CE !!

En fait , faire un raster c'est modifier plusieurs fois tout ou partie de la palette de couleur, et ce de façon si rapide que tout doit être fait le temps d'une synchronisation verticale.
Dans mon programme, je bascule en mode 8bpp, puis fais un fond noir, puis je trace 2 grosses ligne verticales , puis je modifie en temp réel juste l'endroit de la palette qui contenait cette couleur noir. Voilà le principe !

Je me suis mis à l'ouvrage ...et j'ai bien galéré car je ne sais pas (encore?) comment se caler sur la synchro verticale du pl111 (contrôleur LCD).
Mais bon! Il y a quand même du résultat !
Voici un petit screenshot :
Image

et voici le code source:
(faîtes pas attention aux mini-routines de temporisation, j'ai eu tellement de mal à caler l'effet! héhé)

Code: Tout sélectionner
.nolist
#include "ti84pce.inc"
.list
.org userMem-2
.db tExtTok,tAsm84CeCmp
.assume ADL=1
      
      di
      ld hl,$e40000
      ld de,$d40000
      ld bc,153600
      ldir


      ld ix,$d40000
      ld de,320
      ld b,240
pot:    ld (ix+40),250
      ld (ix+41),250
      ld (ix+42),250
      ld (ix+43),250
      ld (ix+120),200
      ld (ix+121),200
      ld (ix+122),200
      ld (ix+123),200

      add ix,de
      djnz pot

      ld a,$27
      ld ($e30018),a

      
      ld hl,$e30200

      

      ld b,200
l00p:   
      ld de,0
cont:   ld (hl),de
      xor a
      ld c,25
biig:   ld a,105

tempo:   dec a
      jr nz,tempo
      dec c
      jr nz,biig
      nop
      nop
      nop
      nop
      inc d           ; remplacer par "inc c"  pour avoir un dégradé de bleu !
      dec e
      jr nz,cont

      ld a,222
wtp:   dec a
      jr nz,wtp


      djnz l00p

      ld a,$2d
      ld ($e30018),a
      ret


J'ai tenté de faire une capture video, en passant par CEmu : impossible, en fait!

Je vous conseille donc d'assembler et lancer ce code chez vous !
(ou d'en télécharger le fichier 8xp : https://tiplanet.org/forum/archives_voir.php?id=466338 )
Dernière édition par grosged le 25 Mar 2016, 20:59, édité 1 fois.
Avatar de l’utilisateur
grosgedVIP++
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Prochain niv.: 32.2%
 
Messages: 773
Images: 92
Inscription: 14 Sep 2011, 12:29
Genre: Homme
Calculatrice(s):
MyCalcs profile

Re: [eZ80] Programmer des Rasters (ou Rasterbars)

Message non lude Adriweb » 25 Mar 2016, 20:48

Génial :D
Sur CEmu, c'est pas aussi bien qu'en vrai, mais ça donne une espèce d'idée :P

Image

J'aime bien lire tes expériences exploitant tes connaissances de vieilles machines désormais applicables sur nos chères calculatrices :P

MyCalcs: Help the community's calculator documentations by filling out your calculators info!
MyCalcs: Aidez la communauté à documenter les calculatrices en donnant des infos sur vos calculatrices !
Inspired-Lua.org: All about TI-Nspire Lua programming (tutorials, wiki/docs...)
My calculator programs
Mes programmes pour calculatrices
Avatar de l’utilisateur
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 82.1%
 
Messages: 14882
Images: 1211
Inscription: 01 Juin 2007, 00:00
Localisation: France
Genre: Homme
Calculatrice(s):
MyCalcs profile
Twitter/X: adriweb
GitHub: adriweb

Re: [eZ80] Programmer des Rasters (ou Rasterbars)

Message non lude grosged » 25 Mar 2016, 20:54

Merci Adriweb ;)
Hey , y a quand même un rendu, dis donc ! =D
J'espère que Mateo nous expliquera comment se caler sur cette synchro verticale :)
J'ai lu et relu le manual du pl111 , et j'étais sur une piste ...mais c'est pas encore ça ... :(
Avatar de l’utilisateur
grosgedVIP++
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Prochain niv.: 32.2%
 
Messages: 773
Images: 92
Inscription: 14 Sep 2011, 12:29
Genre: Homme
Calculatrice(s):
MyCalcs profile

Re: [eZ80] Programmer des Rasters (ou Rasterbars)

Message non lude critor » 25 Mar 2016, 20:56

Passionnant ! :bj:
Merci grosged.
Image
Avatar de l’utilisateur
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Prochain niv.: 54.4%
 
Messages: 42486
Images: 17332
Inscription: 25 Oct 2008, 00:00
Localisation: Montpellier
Genre: Homme
Calculatrice(s):
MyCalcs profile
YouTube: critor3000
Twitter/X: critor2000
GitHub: critor

Re: [eZ80] Programmer des Rasters (ou Rasterbars)

Message non lude grosged » 25 Mar 2016, 21:00

Merci Critor ! C'est avec plaisir ;)

EDIT: Un grand merci à jacobly pour m'avoir expliqué comment se caler sur la synchronisation verticale !!

"the easiest way is to check bit 3 of $e30020 and write 8 to $e30028 whenever you find it set"

Voici donc ma traduction en assembleur :

Code: Tout sélectionner
         ld hl,$e30028
         ld (hl),8
         ld l,$20
vsync_wait:   bit 3,(hl)
         jr z,vsync_wait
Avatar de l’utilisateur
grosgedVIP++
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Prochain niv.: 32.2%
 
Messages: 773
Images: 92
Inscription: 14 Sep 2011, 12:29
Genre: Homme
Calculatrice(s):
MyCalcs profile


Retourner vers Langages alternatifs

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 6 invités

-
Rechercher
-
Social TI-Planet
-
Sujets à la une
Ndless for CX 4.5.5 / CX II 6.2.0
Comparaisons des meilleurs prix pour acheter sa calculatrice !
"1 calculatrice pour tous", le programme solidaire de Texas Instruments. Reçois gratuitement et sans aucune obligation d'achat, 5 calculatrices couleur programmables en Python à donner aux élèves les plus nécessiteux de ton lycée. Tu peux recevoir au choix 5 TI-82 Advanced Edition Python ou bien 5 TI-83 Premium CE Edition Python.
Enseignant(e), reçois gratuitement 1 exemplaire de test de la TI-82 Advanced Edition Python. À demander d'ici le 31 décembre 2024.
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
12345
-
Faire un don / Premium
Pour plus de concours, de lots, de tests, nous aider à payer le serveur et les domaines...
Faire un don
Découvrez les avantages d'un compte donateur !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partenaires et pub
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
2685 utilisateurs:
>2661 invités
>17 membres
>7 robots
Record simultané (sur 6 mois):
32248 utilisateurs (le 01/09/2025)
-
Autres sites intéressants
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)