π
<-

[eZ80] Programmer des Rasters (ou Rasterbars)

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

[eZ80] Programmer des Rasters (ou Rasterbars)

Unread postby 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: Select all
.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 )
Last edited by grosged on 25 Mar 2016, 20:59, edited 1 time in total.
User avatar
grosgedVIP++
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 30.2%
 
Posts: 770
Images: 75
Joined: 14 Sep 2011, 12:29
Gender: Not specified
Calculator(s):
MyCalcs profile

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

Unread postby 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
User avatar
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 79.7%
 
Posts: 14820
Images: 1131
Joined: 01 Jun 2007, 00:00
Location: France
Gender: Male
Calculator(s):
MyCalcs profile
Twitter: adriweb
GitHub: adriweb

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

Unread postby 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 ... :(
User avatar
grosgedVIP++
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 30.2%
 
Posts: 770
Images: 75
Joined: 14 Sep 2011, 12:29
Gender: Not specified
Calculator(s):
MyCalcs profile

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

Unread postby critor » 25 Mar 2016, 20:56

Passionnant ! :bj:
Merci grosged.
Image
User avatar
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Level up: 51.2%
 
Posts: 42228
Images: 16681
Joined: 25 Oct 2008, 00:00
Location: Montpellier
Gender: Male
Calculator(s):
MyCalcs profile
YouTube: critor3000
Twitter: critor2000
GitHub: critor

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

Unread postby 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: Select all
         ld hl,$e30028
         ld (hl),8
         ld l,$20
vsync_wait:   bit 3,(hl)
         jr z,vsync_wait
User avatar
grosgedVIP++
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 30.2%
 
Posts: 770
Images: 75
Joined: 14 Sep 2011, 12:29
Gender: Not specified
Calculator(s):
MyCalcs profile


Return to Langages alternatifs

Who is online

Users browsing this forum: ClaudeBot [spider] and 2 guests

-
Search
-
Social TI-Planet
-
Featured topics
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 !
1234
-
Donations / Premium
For more contests, prizes, reviews, helping us pay the server and domains...
Donate
Discover the the advantages of a donor account !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partner and ad
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
956 utilisateurs:
>917 invités
>30 membres
>9 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)
-
Other interesting websites
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)