ùúùú                                        ;           
;							12.08.94
;
;DU MAPPING SUR AMIGA ?
;
;Eh oui c'est possible, et comment ?
;Lisez donc ce qui suit ....
;
;Tout d'abord, le probleme sur amiga est le plot car, on sait que pour
;ploter un pixel en 16 couleurs il faut faire 4 bset plus les calculs de
;mask ce qui fait par exemple pour une image de 96*96 en 16 couleurs:
;36864 bset et les calculs !!!!!!!
;IMPOSSIBLE a realiser evidemment.
;
;Si vous regardez les instructions de votre 680x0, vous verrez l'instruction
;addx qui permet d'ajouter aux registres incrementes le bit de depassement.
;Je m'explique:	move.b	#$80,d2
;		add.b	d2,d2	=> D2 = %1 0000 0000	(bit depassement=1)
;		addx.b	d3,d3	=> d'ou d3 est decale et incremente
;
;
;Pour cela on va convertir une image dans un format un peu special en
;chuncky [NDLR: ce mode est utilise sur pc et assigne un octet donnant
;le numero de la couleur à un pixel] ou chaque numero de couleur sera
;decale de 4 bits vers la gauche pour que les bits sortent en incrementant
;	(ex:	Colors de $00..$0f	=> $00..$f0
;Voir la routine trans_img pour ce decalage.
;
;
;Routine de plot:
;on assigne un plan a un registre en long (.l)
;	(ex: d3=plan0, d2=plan1,d1=plan0, d0=plan3)
;on lit la couleur du 1er pixel => d4.b
;on incremente d4 a lui meme pour voir si un bit sort => add.b d4,d4
;on incremente le registre du plan a lui meme
;	(on decale ce registre de 1 vers la gauche et on fait
;	rentrer le bits de depassement)			addx.b	d0,d0
;et ceci pour les 4 plans
;apres on relit un autre pixel (donc un octet .b)
;..........=> et on fait tout cela 8 fois pour 8 pixels (octet)
;on ecrit ces valeurs sur chaque plans move.b d0,(adr_plan)
;
;ET VOILA ce qui donne un plot de 96*96 en 4 plans au 50 img /secondes.
;
;
;
;Voila, appelez donc la routine plotting en vbl et voyez..
;
;							Alhazen/MENTASM
;
;PS: J'enmerde et j'encule GarryCooper de Mentasm, les gros cons de
;Sygma qui ne savent pas coder, et tous les pignoufs qui s'y croient
;avec leur pseudo marqués sur leur maillot (bandes de cons ah ah ah ah)
;
;
trans_img:
	lea	color,a0
	move.w	#128*128-1,d1
.do	move.w	(a0),d0
	and.w	#$0f0f,d0
	lsl.w	#4,d0
	move.b	d0,d2
	lsr.w	#8,d0
	lsl.w	#8,d2
	or.w	d2,d0
	move.w	d0,(a0)+
	dbra	d1,.do
	move.w	#$4e75,trans_img
	rts
taille=96
plotting:
	moveq	#0,d0	plan 0
	moveq	#0,d1	plan 1
	moveq	#0,d2	plan 2
	moveq	#0,d3	plan 3
	lea	color(pc),a0		img chuncky
	lea	ecran+12+160*50(pc),a1
	move.w	#taille-1,d7
hauteur
	moveq	#taille/32-1,d6
largeur
	moveq	#32/2-1,d5
octet
	move.w	(a0)+,d4		D4=N°color decale de 4 vers gauche
;plan 3
	add.b	d4,d4			D4+D4
	addx.l	d0,d0			D0+D0+bit sorti de l'addition du dessus
;plan 2
	add.b	d4,d4
	addx.l	d1,d1
;plan 1
	add.b	d4,d4
	addx.l	d2,d2
;plan 0
	add.b	d4,d4
	addx.l	d3,d3

	lsr.w	#8,d4

	add.b	d4,d4
	addx.l	d0,d0

	add.b	d4,d4
	addx.l	d1,d1

	add.b	d4,d4
	addx.l	d2,d2

	add.b	d4,d4
	addx.l	d3,d3

	dbra	d5,octet
;transfer de 32 pixels sur plan 3
	move.l	d0,120(a1)
;transfer de 32 pixels sur plan 2
	move.l	d1,80(a1)
;transfer de 32 pixels sur plan 1
	move.l	d2,40(a1)
;transfer de 32 pixels sur plan 0
	move.l	d3,(a1)+
	dbra	d6,largeur
	lea	(128-taille)(a0),a0
	lea	4*40-taille/8(a1),a1
	dbra	d7,hauteur
	rts
