Développer sur PC Engine en 2026 ?
Modérateurs : SirG, Redfield1, shubibiman, Laucops
- MooZ
- Administrateur
- Messages : 2090
- Inscription : jeu. 16 déc. 2004 14:25
- Contact :
Re: Développer sur PC Engine en 2018 ?
Vu que j'ai fini mes conneries sur Sharp MZ 700 pour le moment, je vais pouvoir me remettre à pceas et sur le HuDK.
- touko
- NECromancer
- Messages : 2297
- Inscription : lun. 31 mars 2008 14:32
Re: Développer sur PC Engine en 2018 ?
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 .
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 .
- MooZ
- Administrateur
- Messages : 2090
- Inscription : jeu. 16 déc. 2004 14:25
- Contact :
Re: Développer sur PC Engine en 2018 ?
Le devkit est deja là 
Il est "juste" incomplet (sprite, scroll, etc...).
Il est "juste" incomplet (sprite, scroll, etc...).
- pnauts
- NECromancer
- Messages : 4996
- Inscription : ven. 03 mai 2013 14:05
- Localisation : pas loin de Nîmes.
- touko
- NECromancer
- Messages : 2297
- Inscription : lun. 31 mars 2008 14:32
Re: Développer sur PC Engine en 2018 ?
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 .
- MooZ
- Administrateur
- Messages : 2090
- Inscription : jeu. 16 déc. 2004 14:25
- Contact :
Re: Développer sur PC Engine en 2018 ?
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 ?
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 )
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 )
- touko
- NECromancer
- Messages : 2297
- Inscription : lun. 31 mars 2008 14:32
Re: Développer sur PC Engine en 2018 ?
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
, 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)
C'est corrigé .
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)
C'est corrigé .
-
alekmaul
- Please Insert Disc!
- Messages : 49
- Inscription : dim. 15 juil. 2018 10:27
Re: Développer sur PC Engine en 2018 ?
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 
- touko
- NECromancer
- Messages : 2297
- Inscription : lun. 31 mars 2008 14:32
Re: Développer sur PC Engine en 2018 ?
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 .
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 ?
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
LA rom est ici : http://www.portabledev.com/tempo/uwolpce180811B523.pce
- touko
- NECromancer
- Messages : 2297
- Inscription : lun. 31 mars 2008 14:32
Re: Développer sur PC Engine en 2018 ?
C'est possible d'avoir le source de juste cette partie ??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
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 ?
Tu as raison, bravo
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
!
Pour le source, il sera en globalité dispo sur mon site une fois que j'aurai pu faire de la musique et des SFX ...
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
Pour le source, il sera en globalité dispo sur mon site une fois que j'aurai pu faire de la musique et des SFX ...
- touko
- NECromancer
- Messages : 2297
- Inscription : lun. 31 mars 2008 14:32
Re: Développer sur PC Engine en 2018 ?
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
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 ?
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 :
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);
}

