Développer sur PC Engine en 2026 ?

Le coin des demomakers et des programmeurs en herbe.

Modérateurs : SirG, Redfield1, shubibiman, Laucops

Avatar de l’utilisateur
MooZ
Administrateur
Messages : 2090
Inscription : jeu. 16 déc. 2004 14:25
Contact :

Re: Développer sur PC Engine en 2018 ?

Message par MooZ »

Vu que j'ai fini mes conneries sur Sharp MZ 700 pour le moment, je vais pouvoir me remettre à pceas et sur le HuDK.
Avatar de l’utilisateur
touko
NECromancer
Messages : 2297
Inscription : lun. 31 mars 2008 14:32

Re: Développer sur PC Engine en 2018 ?

Message par touko »

Bonjour, je viens de créer une fonction de fade_out pour huc 3.21/3.99 .
Elle est bcp plus rapide que ce qui est possible d'écrire en C, car elle est en ASM, et donc elle profite des atouts du hardware .
Elle peut faire un fade de palettes du BG et/ou des SPRITES .
Vous pouvez récup l'archive ici :
https://www.dropbox.com/s/v4g1ysk3lwx2x ... t.zip?dl=0

J'adapterai la fonction pour le devkit de MooZ si il voit le jour .
Avatar de l’utilisateur
MooZ
Administrateur
Messages : 2090
Inscription : jeu. 16 déc. 2004 14:25
Contact :

Re: Développer sur PC Engine en 2018 ?

Message par MooZ »

Le devkit est deja là :)
Il est "juste" incomplet (sprite, scroll, etc...).
Avatar de l’utilisateur
pnauts
NECromancer
Messages : 4996
Inscription : ven. 03 mai 2013 14:05
Localisation : pas loin de Nîmes.

Re: Développer sur PC Engine en 2018 ?

Message par pnauts »

C'est beau les puristes de l'ASM. :bomberjob:
Image
Avatar de l’utilisateur
touko
NECromancer
Messages : 2297
Inscription : lun. 31 mars 2008 14:32

Re: Développer sur PC Engine en 2018 ?

Message par touko »

pnauts a écrit : jeu. 09 août 2018 19:48 C'est beau les puristes de l'ASM. :bomberjob:
Bah franchement c'est royal d'utiliser çe que le hardware offre,et ça permet aussi un degré d'optimisation assez poussé ce qui n'est pas vraiment le cas avec le C.
Et puis qd tu arrives à coder en ASM, franchement le C tu t'en fou, mais ça reste un super outil pour débuter et migrer en douceur .

@MooZ: je vois dans ton repository que tu as gardé les conventions de huc pour les variables, enfin du moins les <_ax,<_bx,etc ..
Si le pragma fonctionne aussi, il n'y aurait peut être même aucune adaptations à faire avec la fonction pour huc 3.21 .
Avatar de l’utilisateur
MooZ
Administrateur
Messages : 2090
Inscription : jeu. 16 déc. 2004 14:25
Contact :

Re: Développer sur PC Engine en 2018 ?

Message par MooZ »

Je pense qu'il faudra quand même écrire un bout de code pour gérer les passages de paramètres et les valeurs de retour.
alekmaul
Please Insert Disc!
Messages : 49
Inscription : dim. 15 juil. 2018 10:27

Re: Développer sur PC Engine en 2018 ?

Message par alekmaul »

Cool, je vais donc changer ma version en C par la tienne @touko :)

Hum, j'ai testé la version 3.99 utilisant cette version de huc, ça plante sur le premier fading (mednafen & magicengine) ...

code que j'ai utilisé : fade_palette_out( 0, 4, 0, 2 , 10 )
Avatar de l’utilisateur
touko
NECromancer
Messages : 2297
Inscription : lun. 31 mars 2008 14:32

Re: Développer sur PC Engine en 2018 ?

Message par touko »

Normal les palettes de départ sont en word(tu sélectionnes la couleur dans le VCE et non la palette en fait,par exemple pour la palette 0 des sprites tu envoies la couleur 256 dans le VCE ) et non en byte, j'ai mis des defines dans le fade_palette.c pour ça :wink: , tu dois faire:
fade_palette_out( BG_PAL0, 4, SPR_PAL0, 2 , 10 )

dans l'exemple j'ai pas affiché de sprites juste du background,mais normalement ça marche, j'ai vérifié avec le debugger de mednafen .
l'exemple général serrait:
fade_palette_out( BG_PALX, A, SPR_PALY, B , C )

EDIT: A ma décharge je viens de me rendre compte que les exemples que j'ai mis dans les fichiers fade_palettes.c étaient pas bons(j'ai mis la même syntaxe que toi,d'où surement ton erreur) :oops:
C'est corrigé .
alekmaul
Please Insert Disc!
Messages : 49
Inscription : dim. 15 juil. 2018 10:27

Re: Développer sur PC Engine en 2018 ?

Message par alekmaul »

Hélas, j'ai toujours le même soucis, plantons à la fin du premier fadeout, l'utilisation des defines ou même d'un 0x0000 pour le BG0 ne change rien :(
Avatar de l’utilisateur
touko
NECromancer
Messages : 2297
Inscription : lun. 31 mars 2008 14:32

Re: Développer sur PC Engine en 2018 ?

Message par touko »

T'as bien mis SPR_PAL0 pour les sprites ?? ,car dans ton exemple tu fades aussi 2 palettes de sprites ,sinon essayes sans les sprites(nb_spr_pals = 0) .
Je me demande si y'a pas une interruption qui touche au VCE ou à certaines variables(de huc) que j'utilise :?
Peux tu m'envoyer le truc pour que je teste ??

Tu peux aussi tester avec ça (remplace l'ancienne à partir du char par celle ci),j'ai désactivé les irq et changé les variables systèmes utilisées par huc .

Code : Tout sélectionner

char 	blue,
		red,
		nb_bg_pals,		
		nb_spr_pals,
		speed,
		nb_pals_tmp,		
		fin_fade;
		
int		vce_pal_tmp,
		bg_pal_deb,
		spr_pal_deb;		
		
#pragma fastcall fade_palette_out( word _bg_pal_deb, byte _nb_bg_pals, word _spr_pal_deb, byte _nb_spr_pals , byte _speed );

fade_palette_out()	
{	
	#asm
	  _fade_palette_out.5:
		sei
			lda 	#7
			sta 	_fin_fade
		
		.start_fade:
			lda		_nb_spr_pals			
			and		#%0000_1111
			sta		_nb_spr_pals		
			
			lda		LOW_BYTE _bg_pal_deb
			sta		$402								; // Séléction de la palette dans le VCE
			sta		_vce_pal_tmp			
			
			lda		HIGH_BYTE _bg_pal_deb
			sta		$403								
			sta		_vce_pal_tmp + 1	
						
			lda		_nb_bg_pals
			sta		_nb_pals_tmp		
			
			lda		_speed
			jsr		wait_vsync
	
		.init_fade:						
			clx
			
		.palette_fade:				
			ldy 	$404		
			tya											; // Récupère la composante BLEU 1
			
			and		#%0000_0111			
			beq		.pas_dec_blue		 
			dec		A			
								
		  .pas_dec_blue:
			sta		_blue
			
			tya
			and		#%0011_1000							; // Récupère la composante ROUGE 1
			beq		.pas_dec_red		
			sec
			sbc		#8			
			
		  .pas_dec_red:
			sta		_red
			
			lda		$405								; // Lecture du bit 9 dans le VCE		
			lsr		A									; // Mise du bit 9 dans la carry
						
			tya			
			and		#%1100_0000							; // Récupère la composante VERTE 1			
			ror		A									; // Récupération du bit 9 dans REG A
			beq		.end_fade
			sec
			sbc		#32			 		
			asl		A									; // Remise du bit 9 dans la carry	
			rol		_pals + 1 , X 						; // Récupération du bit 9 dans la palette provisoire
		  
		  .end_fade:									; // Dans REG A on a déjà la val de _g				 
		; // On reforme la couleur avec les 3 vals RVB
			ora 	_blue												
			ora 	_red
			sta 	_pals , X			
		
			inx			
			inx			
			
		; // On teste si fin de palette X = 32
			cpx		#32
			lbne		.palette_fade
			
		; // On met en place la palette courante
			stw		_vce_pal_tmp , $402						; // Séléction de la palette dans le VCE
			tia		_pals , $404 , 32					; // Copie palette courante dans le VCE
			
			addw	#16 , _vce_pal_tmp
			
			dec		_nb_pals_tmp
			lbne  		.init_fade
			
		   .init_spr_fade_pals:
		; // Gestion du fade des palettes des sprites		
			lda		_nb_spr_pals			
			beq		.pas_fade_spr_pals
			bmi		.pas_fade_spr_pals
			sta		_nb_pals_tmp
			
			ora		#128
			sta		_nb_spr_pals	
			
			lda		LOW_BYTE _spr_pal_deb
			sta		$402								; // Séléction de la palette dans le VCE
			sta		_vce_pal_tmp			
			
			lda		HIGH_BYTE _spr_pal_deb
			sta		$403								
			sta		_vce_pal_tmp + 1		
			
			jmp		.init_fade							; // On relance le fade des pals des sprites
			
		   .pas_fade_spr_pals:			
			dec 	_fin_fade
			lbne  		.start_fade	

		cli
	#endasm
}

alekmaul
Please Insert Disc!
Messages : 49
Inscription : dim. 15 juil. 2018 10:27

Re: Développer sur PC Engine en 2018 ?

Message par alekmaul »

Idem, rien n'y fait, sans sprite ou avec ta version postée. Toujours un planton à la fin du 1er fading.

LA rom est ici : http://www.portabledev.com/tempo/uwolpce180811B523.pce
Avatar de l’utilisateur
touko
NECromancer
Messages : 2297
Inscription : lun. 31 mars 2008 14:32

Re: Développer sur PC Engine en 2018 ?

Message par touko »

alekmaul a écrit : sam. 11 août 2018 05:55 Idem, rien n'y fait, sans sprite ou avec ta version postée. Toujours un planton à la fin du 1er fading.

LA rom est ici : http://www.portabledev.com/tempo/uwolpce180811B523.pce
C'est possible d'avoir le source de juste cette partie ??
J'ai l'impression en traçant la rom que ça ne va même pas dans la fonction, de plus les entrée du pad fonctionnent très mal .
Ca sent le problème de bank tout ça :(

EDIT: Je viens de tester avec un de mes jeux, et il y a effectivement un souci, c'est la procédure pragma fastcall qui merde .
Essayes d'inclure la fonction juste après le include "huc.h" .
Dernière modification par touko le sam. 11 août 2018 09:34, modifié 1 fois.
alekmaul
Please Insert Disc!
Messages : 49
Inscription : dim. 15 juil. 2018 10:27

Re: Développer sur PC Engine en 2018 ?

Message par alekmaul »

Tu as raison, bravo :bomberjob:

J'ai juste changé la déclaration par le standard :
void fade_palette_out( unsigned int _bg_pal_deb, unsigned char _nb_bg_pals, unsigned int _spr_pal_deb, unsigned char _nb_spr_pals , unsigned char _speed ) {

et ça fonctionne nickel :D !

Pour le source, il sera en globalité dispo sur mon site une fois que j'aurai pu faire de la musique et des SFX ...
Avatar de l’utilisateur
touko
NECromancer
Messages : 2297
Inscription : lun. 31 mars 2008 14:32

Re: Développer sur PC Engine en 2018 ?

Message par touko »

:bomberparty:

T'es un chef, en fait il faut maintenant faire comme tu as fait, le pragma fastcall c'était pour forcer huc à utiliser des variables globales et non la pile pour le passage de params, c'est bcp plus rapide :wink:
Je vais modifier la fonction .

EDIT: Tu es sur que ça marche ??
Moi l'exemple ne fonctionne plus car comme je le pensais huc passe par la pile, et du coup les params utilisés et ceux que tu passes ne sont plus les mêmes !! :(
Dernière modification par touko le sam. 11 août 2018 09:43, modifié 1 fois.
alekmaul
Please Insert Disc!
Messages : 49
Inscription : dim. 15 juil. 2018 10:27

Re: Développer sur PC Engine en 2018 ?

Message par alekmaul »

Merci à toi de ton aide surtout ^^

Dans le genre d'autres fonctions que j'ai en C, pour mettre l'écran en pause, je noirci l'écran, que ce soit sur les sprites ou les BGs :

Code : Tout sélectionner

void set_dark() {
	unsigned char r,g,b;
	unsigned int i;

	// BG
	for (i=0;i<16*4;i++) {
		b= get_color(i) & 7;
		r= (get_color(i)>>3) & 7;
		g= (get_color(i)>>6) & 7;
 
		b >>=2;
		r >>=2;
		g >>=2;
		
		set_color_rgb(i, r, g, b);
	}
	// Sprites
	for (i=256;i<256+16;i++) {
		b= get_color(i) & 7;
		r= (get_color(i)>>3) & 7;
		g= (get_color(i)>>6) & 7;
 
		b >>=2;
		r >>=2;
		g >>=2;
		
		set_color_rgb(i, r, g, b);
	}
	vsync(2);
}
Répondre