Palette split

Aller en bas

Palette split

Message par Shadow272 le Dim 31 Déc - 7:19

Palette split est une routine permettant d'avoir 2 palettes de 16 couleurs (32 couleurs) sur un même écran.

Code:

'
' PALETTE SPLIT for GFABASIC
' (c) 2007 by Simon Sunnyboy / Paradize  <marndt@asmsoftware.de>
' http://paradize.atari.org/
'
' This is a simple routine to use a second palette on screen.
' The machine code takes a pointer to 2 successive palettes
' and the scanline number on which the split shall occur.
'
' You can move the point of split in this demo program with
' CURSOR UP and CURSOR DOWN.
'
' FOR ST-LOW! Use at your own risk
'
' The following INLINE contains the machine code.
INLINE palsplitrout%,332
'
DIM pal&(31)    ! buffer for the two palettes
' draw pattern on screen
CLS
FOR i%=0 TO 15
  DEFFILL i%,2,8
  PBOX 1+i%*20,0,18+i%*20,199
NEXT i%
'
ARRAYFILL pal&(),0
' prepare sample palettes
FOR i%=0 TO 15
  pal&(i%)=WORD(i%)             ! first palette (= blue gradient)
  pal&(i%+16)=WORD(i%*256)      ! second palette (= red gradient)
NEXT i%
'
LPOKE palsplitrout%+8,VARPTR(pal&(0))   ! tell routine address of new palettes
idx%=100
LPOKE palsplitrout%+12,idx%  ! set number of scanlines to use for palette 1
'
~XBIOS(38,L:palsplitrout%)      ! activate palette split in SUPERVISOR
key%=0
DO
  VSYNC
  IF INP?(2)
    key%=INP(2)
    IF key%=200 AND idx%>0
      DEC idx%
    ENDIF
    IF key%=208 AND idx%<199
      INC idx%
    ENDIF
    LPOKE palsplitrout%+12,idx%       ! change line of palette split
  ENDIF
LOOP UNTIL key%=27
~XBIOS(38,L:palsplitrout%+4)            ! deactivate palette split
EDIT

La variable idx% indique à la routine la ligne où elle doit afficher la deuxième palette.

Les sources sont [Vous devez être inscrit et connecté pour voir ce lien].
avatar
Shadow272
Admin

Messages : 137
Date d'inscription : 28/12/2017
Age : 60
Localisation : Hainaut Belgique

Voir le profil de l'utilisateur http://toutatari.blog4ever.xyz/

Revenir en haut Aller en bas

Re: Palette split

Message par rockyone le Mer 24 Jan - 11:59

Bonjour Shadow, je pense que c'est la routine que tu a utilisé dans Mousedit.
Comment fonctionne la rupture de palette en Gfa avec cette routine ?
En Omikron , j'ai un flash a peut près toute les 20 secondes sur quatre lignes.

rockyone

Messages : 29
Date d'inscription : 14/01/2018

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Palette split

Message par Shadow272 le Mer 24 Jan - 13:27

Bonjour Rokyone,
En GFA c'est stable le seule hic c'est au niveau de la ligne de jonction des 2 palettes, il vaut mieux prévoir 3 lignes en couleur 0 (zéro)
J'ai même envisagé de faire un slide show avec les 2 palettes de 16 couleurs en laissant quelques lignes entre les 2 images et en déplaçant l'adresse de l'écran physique pour passer d'une image à l'autre.
Je dois vous avouer que j'ai eu et j'ai encore quelques petits problèmes mémoire dû à des soucis de santé (pas sur les ATARI hein mais dans la tête) ce qui explique ma disparition des écrans radar.
Comme ça va un peu mieux, je m'y remet lentement, pour preuve ce forum.
avatar
Shadow272
Admin

Messages : 137
Date d'inscription : 28/12/2017
Age : 60
Localisation : Hainaut Belgique

Voir le profil de l'utilisateur http://toutatari.blog4ever.xyz/

Revenir en haut Aller en bas

Re: Palette split

Message par rockyone le Mer 24 Jan - 17:16

les problèmes de santé je connais, 12 ans de soins en protocole de recherche.
Je te souhaite un bon rétablissement..., Faut y croire, et garder le morale. La vie est une merveille que je remercie chaque matin.

J'ai craignais que ce problème soit d'Omikron ou de moi....
4 lignes pour stabiliser le changement de palette avec Omikron
Un jour.......faudra que je me fasse une routine qui fonctionne dans les 3 résolutions.- si j'ai le courage Smile

rockyone

Messages : 29
Date d'inscription : 14/01/2018

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Palette split

Message par rockyone le Mer 24 Jan - 17:25

Au fait, j'ai détourné ta routine d'inversion écran horizontal (Je me souvient plus pour qui tu l'avais fait. mais je me souviens bien qu'en basic c’était plus rapide en GFA)
Donc , je l’utilise toujours cette routine dans mon convertisseur d'image, mais je n'ai plus ton fichier original pour le mettre comme source. ( Je n'aime pas utiliser des routines sans en fournir la source.)


rockyone

Messages : 29
Date d'inscription : 14/01/2018

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Palette split

Message par Shadow272 le Mer 24 Jan - 19:15

Je dois certainement avoir ça dans un coin si elle est bien de moi, il faut (juste) que je la retrouve.
Compliqué quand il manque des cases Very Happy
Par contre, je ne sais plus pour qui ou pourquoi j'aurais fais ça.
avatar
Shadow272
Admin

Messages : 137
Date d'inscription : 28/12/2017
Age : 60
Localisation : Hainaut Belgique

Voir le profil de l'utilisateur http://toutatari.blog4ever.xyz/

Revenir en haut Aller en bas

Re: Palette split

Message par rockyone le Jeu 8 Mar - 11:16

Bonjour Shadow
Shadow272 a écrit:
En GFA c'est stable ....
J.

.. Je commençais à croire Omikron unique résponsable de l'instabilité, mais j'avais quand même un gros doutte...

A tu testé avec STeem 3.2 ?
Parce que moi, je le vois le flash il déborde même légèrement sur les grilles de dessins.

Sympas tes modèles de souris !

Amicalement

Rockyone

rockyone

Messages : 29
Date d'inscription : 14/01/2018

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Palette split

Message par Shadow272 le Jeu 8 Mar - 18:29

Perso, j'utilise un STE.
avatar
Shadow272
Admin

Messages : 137
Date d'inscription : 28/12/2017
Age : 60
Localisation : Hainaut Belgique

Voir le profil de l'utilisateur http://toutatari.blog4ever.xyz/

Revenir en haut Aller en bas

Re: Palette split

Message par rockyone le Ven 9 Mar - 11:55

J’en ai eu un…
Pourrais-tu me tester un programme, juste pour savoir si le flash est visible sur un STE ?
Mais il faut au moins 1Mo de Ram
Je crains aussi qu’il y ais d’autres différances entre Steem et un STE.

rockyone

Messages : 29
Date d'inscription : 14/01/2018

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Palette split

Message par Shadow272 le Ven 9 Mar - 16:48

ça fonctionne assez bien sur le STE, il faut juste avoir la couleur de fond identique pour les 2 palettes et laisser 4 à 6 ligne (+2 et -2) au niveau du changement de palette sans quoi ça flashe aussi.
avatar
Shadow272
Admin

Messages : 137
Date d'inscription : 28/12/2017
Age : 60
Localisation : Hainaut Belgique

Voir le profil de l'utilisateur http://toutatari.blog4ever.xyz/

Revenir en haut Aller en bas

Re: Palette split

Message par rockyone le Ven 9 Mar - 19:06

C’est bien ainsi que je l’utilise…

rockyone

Messages : 29
Date d'inscription : 14/01/2018

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Palette split

Message par Shadow272 le Dim 22 Avr - 9:52

J'ai retrouvé une autre routine, plus facile à mettre en oeuvre.
Je teste quelques jours et je reviens vers vous.
avatar
Shadow272
Admin

Messages : 137
Date d'inscription : 28/12/2017
Age : 60
Localisation : Hainaut Belgique

Voir le profil de l'utilisateur http://toutatari.blog4ever.xyz/

Revenir en haut Aller en bas

Re: Palette split

Message par rockyone le Lun 7 Mai - 14:57

Bonjour Shadow
As tu trouvé le temps de tester cette routine ?

rockyone

Messages : 29
Date d'inscription : 14/01/2018

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Palette split

Message par tomchi le Lun 17 Sep - 16:17

rockyone a écrit:Au fait, j'ai détourné ta routine d'inversion écran horizontal (Je me souvient plus pour qui tu l'avais fait. mais je me souviens bien qu'en basic c’était plus rapide en GFA)
Donc , je l’utilise toujours cette routine dans mon convertisseur d'image, mais je n'ai plus ton fichier original pour le mettre comme source. ( Je n'aime pas utiliser des routines sans en fournir la source.)


C'est ça ?
Code:

CLS
RESERVE 1000
'
INLINE pic%,32034
image%=pic%+34
table.conversion%=MALLOC(256)
'
'
pointeur.table%=table.conversion%
FOR octet&=0 TO 255
 FOR bit&=0 TO 7
   bit.source!=BTST(octet&,bit&)
   IF bit.source!=0
     octet.dest&=BCLR(octet.dest&,7-bit&)
   ELSE
     octet.dest&=BSET(octet.dest&,7-bit&)
   ENDIF
 NEXT bit&
 BYTE{pointeur.table%}=octet.dest&
 INC pointeur.table%
NEXT octet&
'
'
BMOVE image%,XBIOS(2),32000
~XBIOS(6,L:pic%+2)
' CLS
'
'
'
time%=TIMER
'
source%=image%
dest%=XBIOS(2)+153
ligne&=0
REPEAT
 '
 pointeur.octet&=0
 REPEAT
   ' plan 1
   BYTE{dest%}=BYTE{ADD(table.conversion%,BYTE{source%})}
   BYTE{SUB(dest%,1)}=BYTE{ADD(table.conversion%,BYTE{ADD(source%,1)})}
   ' plan 2
   BYTE{ADD(dest%,2)}=BYTE{ADD(table.conversion%,BYTE{ADD(source%,2)})}
   BYTE{ADD(dest%,1)}=BYTE{ADD(table.conversion%,BYTE{ADD(source%,3)})}
   ' plan 3
   BYTE{ADD(dest%,4)}=BYTE{ADD(table.conversion%,BYTE{ADD(source%,4)})}
   BYTE{ADD(dest%,3)}=BYTE{ADD(table.conversion%,BYTE{ADD(source%,5)})}
   ' plan 4
   BYTE{ADD(dest%,6)}=BYTE{ADD(table.conversion%,BYTE{ADD(source%,6)})}
   BYTE{ADD(dest%,5)}=BYTE{ADD(table.conversion%,BYTE{ADD(source%,7)})}
   INC pointeur.octet&
   ADD source%,8
   SUB dest%,8
 UNTIL pointeur.octet&=20
 INC ligne&
 ADD dest%,320
UNTIL ligne&=200
time=TIMER-time%
~INP(2)
CLS
PRINT time/200
~INP(2)
EDIT

chais plus pour qui je l'avais fait , c'était pas pour un jeu ?
Bref ça tournait quand même pas vite vite même compilé Razz
avatar
tomchi

Messages : 3
Date d'inscription : 15/09/2018
Age : 43

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Palette split

Message par rockyone le Mer 19 Sep - 12:26

cheers  C’est certainement ce fichier… mais je n’ais jamais eu ton source en GFA, mais la routine assembleur que tu avais fait après.

C’était un peu moins rapide en Omikron. Razz, mais je ne sais plus aussi pour qui c'était.

rockyone

Messages : 29
Date d'inscription : 14/01/2018

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Palette split

Message par rockyone le Ven 2 Nov - 19:59

J’ai du modifier la routine Palsplit  pour mon convertisseur d’image (MI-9) car elle me créait des flashes  avec le  menu on/off et certaine images.
Donc, elle est plus rapide, le  binaire plus petit, et pour moi elle fonctionne bien avec 4 lignes de rupture.
Par contre les adresses d’appel ont changés, et le nombres de ligne doit se trouver entre les deux palettes.
 

Code:

;modifié par rockyone 02.11.2018
;
;ON + 28
;DATA +110  
;           16 Words first pallet
;           1 Byte always equal to zero !
;           1 Byte  line of split
;           16 Words pallet second pallet
;Off +132
;-----------------------------
;
; PALETTE SPLIT
; allow GFABASIC to do a single palette split after a given amount
; of scanlines
;
; (c) 2007 by Simon Sunnyboy / Paradize
; http://paradize.atari.org/
;
; USE AT YOUR OWN RISK!
;
;
;...............................;+28 ...init raster interrupt system.......
init_rasters:
        movem.l d0-d7/a0-a6,-(SP)
        lea.l storage(PC),a3         ; store interrupt context
        move.l  $70.w,(a3)+          ; save old VBL
        move.l  $120.w,(a3)+         ; save old Timer B
        move.b  $fffffa1b.w,(a3)+    ; tbcr
        move.b  $fffffa21.w,(a3)+    ; tbdr
        move.b  $fffffa07.w,(a3)+    ; iera
        move.b  $fffffa09.w,(a3)+    ; ierb
        move.b  $fffffa13.w,(a3)+    ; imra

;.......................................set interrupts....................

        move.w #$2700,SR ; stop interrupts
        lea.l rastercontrol_vbl(PC),a1
        move.l  a1,$70.w ; set new VBL
        lea.l raster_timerb(PC),a1
        move.l  a1,$120.w ; set new Timer B

; enable Timer B
        ori.b   #1,$fffffa07.w ; iera enable Timer B
        ori.b   #1,$fffffa13.w ; imra mask Timer B
        clr.b   $fffffa1b.w    ; tbcr stop Timer B

        move.w #$2300,SR ; reenable interrupts
        movem.l (SP)+,D0-d7/a0-A6
        rts

;.......................................interface basic ...................
;
raster_address: dc.l 0 ;+110   point to buffer pallets
;            ; 16 words  the first pallet
;            ; 1 byte  alway equal to zero !
;            ;    1 byte  lines of split
;            ; 16 words the second pallet

raster2: dc.l 0
storage: dc.l 0,0
    dc.b 0,0,0,0,0
    even
;...............................;+132 ...........disable splitscreen......
stop_rasters:
        move.l  a3,-(SP)
        move.w #$2700,SR          ; stop irq system
        lea.l storage(PC),A3
        move.l  (A3)+,$70.w         ; vbl    restore old VBL
        move.l  (A3)+,$120.w        ; timerb save old Timer B
        move.b  (A3)+,$fffffa1b.w ; tbcr   restore MFP context
        move.b  (A3)+,$fffffa21.w ; tbdr
        move.b  (A3)+,$fffffa07.w ; iera
        move.b  (A3)+,$fffffa09.w ; ierb
        move.b  (A3)+,$fffffa13.w ; imra
        move.w #$2300,SR           ; reenable irqs
        movea.l (SP)+,a3
        rts

;.......................................new VBL to control the rasters..
rastercontrol_vbl:
 move.l a3,-(sp)
 move.l a4,-(sp)

    lea.l raster_address(PC),a3    
    movea.l (a3),a3        ; first pallet
 lea.l $ffff8240.w,a4
 move.l (a3)+,(a4)+
 move.l (a3)+,(a4)+
 move.l (a3)+,(a4)+
 move.l (a3)+,(a4)+
 move.l (a3)+,(a4)+
 move.l (a3)+,(a4)+
 move.l (a3)+,(a4)+
 move.l (a3)+,(a4)+
 
 lea.l $fffffa1b.w,a4
 clr.b (a4)
 move.w (a3)+,$20-$1b(a4)       ; tbdr number of lines
 move.b #8,(a4)                 ; tbcr event count mode
 move.l a3,raster2              ;    second pallet
 move.l (sp)+,a4
 move.l (sp)+,a3
 move.l  storage(PC),-(SP)   ; push old VBL address onto stack
    rts                         ; and jump to it

;........................................screensplit handling Timer B ISR
raster_timerb:
 move.l a3,-(sp)
 move.l a4,-(sp)
 move.l raster2,a3    ; set new color from table

 lea.l $ffff8240.w,a4
 move.l (a3)+,(a4)+
 move.l (a3)+,(a4)+
 move.l (a3)+,(a4)+
 move.l (a3)+,(a4)+
 move.l (a3)+,(a4)+
 move.l (a3)+,(a4)+
 move.l (a3)+,(a4)+
 move.l (a3)+,(a4)+
 
    bclr.b  #0,$fffffa0f.w      ; isra aknowledge Timer B
 move.l (sp)+,a4
 move.l (sp)+,a3

        rte

        END
;------------------------------------------------------------------------

rockyone

Messages : 29
Date d'inscription : 14/01/2018

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Palette split

Message par Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum