Amstrad Plus Forum Index

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

 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

*****Sprites Multiplexing

 
Post new topic   Reply to topic    Amstrad Plus Forum Index -> Programmation Cpc -> Asic
Previous topic :: Next topic  
Author Message
Ast
Administrateur

Offline

Joined: 05 Sep 2014
Posts: 2,977
Masculin
Point(s): 390
Moyenne de points: 0.13

PostPosted: Tue 2 Jun - 17:03 (2015)    Post subject: *****Sprites Multiplexing Reply with quote

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...."


Back to top
Publicité






PostPosted: Tue 2 Jun - 17:03 (2015)    Post subject: Publicité

PublicitéSupprimer les publicités ?
Back to top
BDCIRON
Guest

Offline




PostPosted: Wed 3 Jun - 00:10 (2015)    Post subject: *****Sprites Multiplexing Reply with quote




Last edited by BDCIRON on Mon 29 Jun - 14:27 (2015); edited 1 time in total
Back to top
Ast
Administrateur

Offline

Joined: 05 Sep 2014
Posts: 2,977
Masculin
Point(s): 390
Moyenne de points: 0.13

PostPosted: Wed 3 Jun - 01:35 (2015)    Post subject: *****Sprites Multiplexing Reply with quote

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

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


Back to top
RaVe


Offline

Joined: 12 Feb 2015
Posts: 253
Masculin
Point(s): 0
Moyenne de points: 0.00

PostPosted: Wed 3 Jun - 20:32 (2015)    Post subject: *****Sprites Multiplexing Reply with quote

Shocked

Back to top
Ast
Administrateur

Offline

Joined: 05 Sep 2014
Posts: 2,977
Masculin
Point(s): 390
Moyenne de points: 0.13

PostPosted: Wed 3 Jun - 20:50 (2015)    Post subject: *****Sprites Multiplexing Reply with quote

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

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


Back to top
MacDeath


Offline

Joined: 26 Mar 2015
Posts: 343
Localisation: 26
Masculin Vierge (24aoû-22sep) 馬 Cheval
Point(s): 12
Moyenne de points: 0.03

PostPosted: Thu 4 Jun - 21:14 (2015)    Post subject: *****Sprites Multiplexing Reply with quote

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.


Back to top
Display posts from previous:   
Post new topic   Reply to topic    Amstrad Plus Forum Index -> Programmation Cpc -> Asic All times are GMT + 2 Hours
Page 1 of 1

 
Jump to:  

Index | Administration Panel | Create a forum | Free support forum | Free forums directory | Report a violation | Cookies | Charte | Conditions générales d'utilisation
Powered by phpBB © 2001, 2005 phpBB Group