Amstrad Plus Index du Forum

Amstrad Plus
Découverte de la gamme Old et Plus des Cpc d'Amstrad.

 FAQFAQ   RechercherRechercher   MembresMembres   GroupesGroupes   S’enregistrerS’enregistrer 
 ProfilProfil   Se connecter pour vérifier ses messages privésSe connecter pour vérifier ses messages privés   ConnexionConnexion 

*****Sprites Multiplexing

 
Poster un nouveau sujet   Répondre au sujet    Amstrad Plus Index du Forum -> Bienvenue sur ce forum -> Programmation
Sujet précédent :: Sujet suivant  
Auteur Message
Ast
Administrateur

En ligne

Inscrit le: 05 Sep 2014
Messages: 2 321

MessagePosté le: Mar 2 Juin - 16:03 (2015)    Sujet du message: *****Sprites Multiplexing Répondre en citant

En parcourant ici et là les forums, je suis tombé sur une question fort interressante de FgBrain qui se demandait comment faire du sprite multiplexing avec les sprites hard du Cpc+.
Tout d'abord, c'est quoi le sprite multiplexing ? 
C'est une technique qui permet de recopier le même sprite à des positions différentes sur le même écran. On peut même, si on le désire jouer aussi avec des sprites de tailles différentes. Voici donc après quelques minutes de réflexion la routine que je vous ai gentillement pondu. 
Des commentaires, des questions ? C'est ici que ça se passe...
Code:

;
; Sprites Multiplexing for FgBrain
; Ast/iMPACT - Amstrad Plus/Gx4000
; Orgams Assembler code
;
      ORG #A000
      ENT $
;
sprite0 = #4000         ; Sprite 0 adress
sprz  = #6004           ; zoom x,y Sprite 0
sprx  = #6000           ; Sprite 0 x
spry  = #6002           ; Sprite 0 y
;
sprink1 = #6422         ; sprite color 1
ink0  = #6400           ; ink 0
border = #6420          ; border
pri   = #6800           ; Programmable raster interrupt
;         DI
          LD   HL,#C9FB ; Kill interruption
          LD   (#38),HL
          LD   E,17     ; Unlock Asic
          LD   HL,tbasic
          LD   B,#BC
loop      LD   A,(HL)
          OUT  (C),A
          INC  HL
          DEC  E 
          JR   NZ,loop
;
          LD   BC,#7FB8 ; Page i/o on          
          OUT  (C),C
;
          LD   HL,sprdata ; copy sprite data 
          LD   DE,sprite0 ; in i/o Page
          LD   BC,16*16
          LDIR
;
          LD   HL,#0FFF ; full white
          LD   (sprink1),HL ; sprite color 1 will be white
;
          LD   HL,#00   ; full black
          LD   (ink0),HL ; put ink 0 & border
          LD   (border),HL
;
          LD   A,%1001  ; put sprite size
          LD   (sprz),A ; x*2/Y*1


          LD   BC,#7FA0 ; page asic i/o off
          OUT  (C),C
          EI
;
          LD   B,#F5
sync      IN   A,(C)
          RRA
          JR   NC,sync
;
          LD   BC,#7FB8 ; page asic i/o on
          OUT  (C),C
;
          LD   HL,0     ; define spr0 x,y (1st position)
          LD   (sprx),HL
          LD   A,1
          LD   (spry),A
;
          LD   A,15     ; wait for rasterline 2
          LD   (pri),A
          HALT
      FILL 32,0
          LD   HL,16    ; define spr0 x,y (2nd position)
          LD   (sprx),HL
          LD   A,17
          LD   (spry),A
;
          LD   A,31     ; wait for rasterline 3
          LD   (pri),A
          HALT
      FILL 32,0
;
          LD   HL,0     ; define spr 0,y (3th position)
          LD   (sprx),HL
          LD   A,33
          LD   (spry),A
;
          LD   BC,#7FA0 ; page asic i/o off
          OUT  (C),C
          JR   main
tbasic BYTE 255,0,255,119,179
      BYTE 81,168,212,98,57,156
      BYTE 70,43,21,138,205,238
;
; Sprite Data definition (Little Square)
;
sprdata
      BYTE 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
      14 ** [
      BYTE 1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1
]
      BYTE 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
;
; eof
;


_________________
Ast/iMP4CT

"Par le pouvoir du crâne ancestral...."


Revenir en haut
Publicité






MessagePosté le: Mar 2 Juin - 16:03 (2015)    Sujet du message: Publicité

PublicitéSupprimer les publicités ?
Revenir en haut
BDCIRON
Invité

Hors ligne




MessagePosté le: Mar 2 Juin - 23:10 (2015)    Sujet du message: *****Sprites Multiplexing Répondre en citant




Dernière édition par BDCIRON le Lun 29 Juin - 13:27 (2015); édité 1 fois
Revenir en haut
Ast
Administrateur

En ligne

Inscrit le: 05 Sep 2014
Messages: 2 321

MessagePosté le: Mer 3 Juin - 00:35 (2015)    Sujet du message: *****Sprites Multiplexing Répondre en citant

Effectivement, ce sont certaines des nombreuses possibilitées offertes...
_________________
Ast/iMP4CT

"Par le pouvoir du crâne ancestral...."


Revenir en haut
RaVe


Hors ligne

Inscrit le: 12 Fév 2015
Messages: 253

MessagePosté le: Mer 3 Juin - 19:32 (2015)    Sujet du message: *****Sprites Multiplexing Répondre en citant

Shocked

Revenir en haut
Ast
Administrateur

En ligne

Inscrit le: 05 Sep 2014
Messages: 2 321

MessagePosté le: Mer 3 Juin - 19:50 (2015)    Sujet du message: *****Sprites Multiplexing Répondre en citant

Mais encore? Que se passe t'il rave?
_________________
Ast/iMP4CT

"Par le pouvoir du crâne ancestral...."


Revenir en haut
MacDeath


Hors ligne

Inscrit le: 26 Mar 2015
Messages: 312
Localisation: 26

MessagePosté le: Jeu 4 Juin - 20:14 (2015)    Sujet du message: *****Sprites Multiplexing Répondre en citant

je préfère le 7up au Sprite... Laughing
ça m'étonne que IronGhost n'ai pas encore pondu un article... allez, tu peux le faire.


Revenir en haut
BDCIRON
Invité

Hors ligne




MessagePosté le: Ven 5 Juin - 10:33 (2015)    Sujet du message: *****Sprites Multiplexing Répondre en citant




Revenir en haut
Contenu Sponsorisé






MessagePosté le: Aujourd’hui à 15:44 (2017)    Sujet du message: *****Sprites Multiplexing

Revenir en haut
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet    Amstrad Plus Index du Forum -> Bienvenue sur ce forum -> Programmation Toutes les heures sont au format GMT + 1 Heure
Page 1 sur 1

 
Sauter vers:  

Index | Panneau d’administration | Creer un forum | Forum gratuit d’entraide | Annuaire des forums gratuits | Signaler une violation | Conditions générales d'utilisation
Powered by phpBB © 2001, 2005 phpBB Group
Traduction par : phpBB-fr.com