[TERMINE] Pang ! / MSX
+9
erikrom2
Fabf
F.L
nemokantio
drfloyd
mateo
pckid
vingazole
bfg
13 participants
Page 1 sur 2
Page 1 sur 2 • 1, 2
[TERMINE] Pang ! / MSX
Voilou, j'ai quasi terminé l'adaptation de Pang sur MSX 1. Ca tiens comme sur Coleco en 32Ko, avec ma propre lib technique. Quelques différences par rapport à la version Coleco :
- Compression des images par Pletter pour gagner de la place. Ma librairie technique bouffant de la place en ROM, ça permet de compenser.
- Développement de mon propre algo qui détecte si le joueur est sur une version NTSC ou PAL et règle la vitesse du jeu par rapport à la machine. (C'était manuel sur Coleco).
- Intégration de mon propre player audio, qui lui aussi se règle sur la vitesse de la machine. Je n'ai qu'à stocker une seule fois la musique, et elle se jouera en vitesse identique à 50hz ou 60hz
- Compression des images par Pletter pour gagner de la place. Ma librairie technique bouffant de la place en ROM, ça permet de compenser.
- Développement de mon propre algo qui détecte si le joueur est sur une version NTSC ou PAL et règle la vitesse du jeu par rapport à la machine. (C'était manuel sur Coleco).
- Intégration de mon propre player audio, qui lui aussi se règle sur la vitesse de la machine. Je n'ai qu'à stocker une seule fois la musique, et elle se jouera en vitesse identique à 50hz ou 60hz
Dernière édition par bfg le Jeu 26 Fév 2015 - 7:54, édité 2 fois
bfg- Patient contaminé
- Nombre de messages : 806
Localisation : DMC
Date d'inscription : 11/09/2005
Re: [TERMINE] Pang ! / MSX
Très joli !
J'aime bien le background avec les Twin Towers (à partir de 03:25)
J'aime bien le background avec les Twin Towers (à partir de 03:25)
vingazole- Infirmier
- Nombre de messages : 4522
Age : 50
Localisation : Midian
Date d'inscription : 04/01/2012
Re: [TERMINE] Pang ! / MSX
Vraiment bien, la musique est sympa, bien meilleure que ta version Md
Invité- Invité
Re: [TERMINE] Pang ! / MSX
Très sympa !
pckid- Infirmier
- Nombre de messages : 3753
Age : 47
Localisation : ile de france (94)
Date d'inscription : 29/09/2011
Re: [TERMINE] Pang ! / MSX
Petit post pour signaler que la version Msx est terminée et qu'une version physique devrait poindre du nez chez repro factory (cocorico !!) en Février !
bfg- Patient contaminé
- Nombre de messages : 806
Localisation : DMC
Date d'inscription : 11/09/2005
Re: [TERMINE] Pang ! / MSX
Merci pour l'info, c'est bon ça
mateo- Docteur *
- Nombre de messages : 25026
Age : 45
Localisation : 92
Date d'inscription : 20/04/2005
Re: [TERMINE] Pang ! / MSX
bfg a écrit:Petit post pour signaler que la version Msx est terminée et qu'une version physique devrait poindre du nez chez repro factory (cocorico !!) en Février !
Chez Repro Factory ! Cocorico !!!!!!!!!! C'est bon ça.
_______________________________________________________
Re: [TERMINE] Pang ! / MSX
Il faut juste être sûr que la date soit tenue
mateo- Docteur *
- Nombre de messages : 25026
Age : 45
Localisation : 92
Date d'inscription : 20/04/2005
Re: [TERMINE] Pang ! / MSX
Bon, ben forcément quand le jeu est terminé c'est là qu'on voit les merdes ... J'ai besoin de l'aide de pro du MSX et de l'assembleur.
Le jeu tourne sans problème sous MSX 1 et voici les glitch que l'on à sur MSX 2
Voici le code source de la décompression d'image :
Et voici comment je l'appelle dans mon programme !
Dernière info, l'initialisation du mode vidéo :
Voyez vous quelque part une énorme boulette ?
Merci d'avance !
Le jeu tourne sans problème sous MSX 1 et voici les glitch que l'on à sur MSX 2
Voici le code source de la décompression d'image :
- Code:
; pletter.s
;-----------------------------------------------------------
; Pletter2 v0.5b VRAM Depacker v1.1 - 16Kb version
; HL = RAM/ROM source ; DE = VRAM destination
;-----------------------------------------------------------
; Daniel Bienvenu modifications
; + to optimize the ROM size, not the speed
.module pletter
; global from this code
.globl _pletter
; void pletter (void *data, unsigned vram_offset);
.area _CODE
_pletter:
pop bc
pop hl
pop de
push de
push hl
push bc
push ix
di
; VRAM address setup
ld a,e
out (0x99),a
ld a,d
or #0x40
out (0x99),a
; Initialization
ld a,(hl)
inc hl
exx
ld de,#0
push de
add a,a
inc a
rl e
add a,a
rl e
add a,a
rl e
rl e
ld hl,#modes
add hl,de
ld e,(hl)
inc hl
ld d,(hl)
push de
pop ix
pop de
ld e,#1
exx
;ld iy,#loop
; Main depack loop
literal:
ld c,#0x98
outi
inc de
loop:
call getbits
jr nc,literal
; Compressed data
exx
ld h,d
ld l,e
getlen:
call getbitsexx
jr nc,lenok
lus:
call getbitsexx
adc hl,hl
ret c
call getbitsexx
jr nc,lenok
call getbitsexx
adc hl,hl
jp c,Depack_out
call getbitsexx
jp c,lus
lenok:
inc hl
exx
ld c,(hl)
inc hl
ld b,#0
bit 7,c
jp z,offsok
jp (ix)
mode7:
call getbits
rl b
mode6:
call getbits
rl b
mode5:
call getbits
rl b
mode4:
call getbits
rl b
mode3:
call getbits
rl b
mode2:
call getbits
rl b
call getbits
jr nc,offsok
or a
inc b
res 7,c
offsok:
inc bc
push hl
exx
push hl
exx
ld l,e
ld h,d
sbc hl,bc
pop bc
push af
$9:
ld a,l
out (0x99),a
ld a,h
nop ; VDP timing
out (0x99),a
nop ; VDP timing
in a,(0x98)
ex af,af'
ld a,e
nop ; VDP timing
out (0x99),a
ld a,d
or #0x40
out (0x99),a
ex af,af'
nop ; VDP timing
out (0x98),a
inc de
cpi
jp pe,$9
pop af
pop hl
;jp (iy)
jp loop
getbitsexx:
exx
call getbits
exx
ret
getbits:
add a,a
ret nz
ld a,(hl)
inc hl
rla
ret
; Depacker exit
Depack_out:
pop ix
ei
ret
modes:
.dw offsok
.dw mode2
.dw mode3
.dw mode4
.dw mode5
.dw mode6
.dw mode7
Et voici comment je l'appelle dans mon programme !
- Code:
#define chrtab peek_word(0xF3C7) /* écran en linéaire */
#define chrgen peek_word(0xF3CB) /* table des caractères */
#define coltab peek_word(0xF3C9) /* couleur des caractères */
#define sprtab peek_word(0xF3CF) /* Image des sprites */
#define sprgen peek_word(0xF3CD) /* attributs des sprites */
void LoadPatternAndshowAScreenPLET(unsigned char* p,unsigned char *c,unsigned char *n,unsigned char show,unsigned dest)
{
if (show==1) pletter(n,dest);
pletter(p,chrgen);
pletter(p,chrgen+2048);
pletter(p,chrgen+4096);
pletter(c,coltab);
pletter(c,coltab+2048);
pletter(c,coltab+4096);
}
LoadPatternAndshowAScreenPLET(FOND5_PATTERNDAN0,FOND5_COLORDAN0,FOND5_NAMEDAN0,1,chrtab);
Dernière info, l'initialisation du mode vidéo :
- Code:
void screen_mode_2()
{
inter_screen_mode_2();
setup_sprites(SPRITE16X16, SPRITE_NO_ZOOM);
disableClic();
}
void inter_screen_mode_2()
{
__asm
call 0x0072
__endasm;
}
void setup_sprites(char spritesize, char zoom){
__asm
ld b,#0x00
ld a,4(ix)
and #0x0f
cp #0x08
jr z,$1
set 1,b ; --- if 16x16 sprites => set bit 1
$1:
ld a,5(ix)
cp #0x00
jr z, $2
set 0,b ; --- if zoom sprites => set bit 0
$2:
ld hl,#0xf3e0 ; --- read vdp(1) from mem
ld a,(hl)
and #0xfc
or b
ld (hl),a
call 0x007e ; --- change vdp(1) bits
ld a,#0x01
ld hl,#0xfcaf
ld (hl),a
call 0x0069 ; --- reset sprite attributes
__endasm;
}
void disableClic()
{
__asm
ld hl,#0xF3DB ; 0= click sound off, <>0 click sound on
ld (hl),#0x00
__endasm;
}
Voyez vous quelque part une énorme boulette ?
Merci d'avance !
bfg- Patient contaminé
- Nombre de messages : 806
Localisation : DMC
Date d'inscription : 11/09/2005
Re: [TERMINE] Pang ! / MSX
Bonjour et courage pour ton soucis Michel !
Je suis sur que tu trouveras solution à ton problème.
Sans doute que le Msx2 à un mappage de la mémoire différent du MSX ... Nicob59 pourrait te répondre je pense !
Courage !
Je suis sur que tu trouveras solution à ton problème.
Sans doute que le Msx2 à un mappage de la mémoire différent du MSX ... Nicob59 pourrait te répondre je pense !
Courage !
Invité- Invité
Re: [TERMINE] Pang ! / MSX
Dommage que je connaisse pas l'ASM Z80, fano aurait pu t'aider si il passe encore ici ..
D'ailleurs si ça fonctionne bien sur MS1 c'est que le code est bon,c'est peut être une différence de timing du VDP du msx2 par rapport au MSX1 (sur ta vidéo on a du mal à voir où sont les glitches) ??
D'ailleurs si ça fonctionne bien sur MS1 c'est que le code est bon,c'est peut être une différence de timing du VDP du msx2 par rapport au MSX1 (sur ta vidéo on a du mal à voir où sont les glitches) ??
Invité- Invité
Re: [TERMINE] Pang ! / MSX
Ben en regardant le code on voit ça :
Ptet que je balance trop de données au VDP d'un coup ... Je vais tenter en ajoutant quelques nop en plus ... Mais bon, je vais attendre encore si il y à des avis plus éclairé
- Code:
ld a,h
nop ; VDP timing
out (0x99),a
nop ; VDP timing
Ptet que je balance trop de données au VDP d'un coup ... Je vais tenter en ajoutant quelques nop en plus ... Mais bon, je vais attendre encore si il y à des avis plus éclairé
bfg- Patient contaminé
- Nombre de messages : 806
Localisation : DMC
Date d'inscription : 11/09/2005
Re: [TERMINE] Pang ! / MSX
Ca fait aussi les bugs sur emulateur en mode msx2 ?
EDIT : tu as raison, ça ressemble à un problème de timing dans l'envoi des données au vdp.
Sur emulateur, tu peux tester différents msx 2 non ?
EDIT : tu as raison, ça ressemble à un problème de timing dans l'envoi des données au vdp.
Sur emulateur, tu peux tester différents msx 2 non ?
nemokantio- Patient contaminé
- Nombre de messages : 345
Age : 48
Localisation : Delgastan
Date d'inscription : 22/01/2013
Re: [TERMINE] Pang ! / MSX
beau boulot michel
bon courage pour les bugs sur msx2.
il n'existe pas de probleme qui n'ai de solution
ce sont les joies de la programmation on va dire
bon courage pour les bugs sur msx2.
il n'existe pas de probleme qui n'ai de solution
ce sont les joies de la programmation on va dire
Re: [TERMINE] Pang ! / MSX
nemokantio a écrit:Ca fait aussi les bugs sur emulateur en mode msx2 ?
EDIT : tu as raison, ça ressemble à un problème de timing dans l'envoi des données au vdp.
Sur emulateur, tu peux tester différents msx 2 non ?
Ca passe sur BlueMsx sans bug ...
Il faut que j'essaye openMSX. J'ai envoyé une version avec d'autres timing VDP pour tester sur bécane réelle... on verra bien ...
bfg- Patient contaminé
- Nombre de messages : 806
Localisation : DMC
Date d'inscription : 11/09/2005
Re: [TERMINE] Pang ! / MSX
C'est pas lié au fait qu'il y a plusieurs modèles de msx différents ?
Tu sais quoi : ça m'a donné envie d'essayer de programmer le msx avec sdcc, et je crois bien que je suis en train de suivre ton tuto sur bfg gamepassion !
J'ai réussi à faire un screen 2 !
(et oui je suis cpciste à la base)
Tu sais quoi : ça m'a donné envie d'essayer de programmer le msx avec sdcc, et je crois bien que je suis en train de suivre ton tuto sur bfg gamepassion !
J'ai réussi à faire un screen 2 !
(et oui je suis cpciste à la base)
nemokantio- Patient contaminé
- Nombre de messages : 345
Age : 48
Localisation : Delgastan
Date d'inscription : 22/01/2013
Re: [TERMINE] Pang ! / MSX
bfg a écrit:Ben en regardant le code on voit ça :
- Code:
ld a,h
nop ; VDP timing
out (0x99),a
nop ; VDP timing
Ptet que je balance trop de données au VDP d'un coup ... Je vais tenter en ajoutant quelques nop en plus ... Mais bon, je vais attendre encore si il y à des avis plus éclairé
Si ce n'est pas déjà ce que tu fais, essaie plutôt de désactiver l'affichage avant de charger tes tiles/ta tilemap, puis réactive l'affichage ensuite (tu dois avoir un port du VDP qui te permet de faire ça).
En principe les accès au VDP devraient être plus rapides en dehors de l'affichage actif (pendant les VBLANKs, par exemple).
vingazole- Infirmier
- Nombre de messages : 4522
Age : 50
Localisation : Midian
Date d'inscription : 04/01/2012
Re: [TERMINE] Pang ! / MSX
vingazole a écrit:bfg a écrit:Ben en regardant le code on voit ça :
- Code:
ld a,h
nop ; VDP timing
out (0x99),a
nop ; VDP timing
Ptet que je balance trop de données au VDP d'un coup ... Je vais tenter en ajoutant quelques nop en plus ... Mais bon, je vais attendre encore si il y à des avis plus éclairé
Si ce n'est pas déjà ce que tu fais, essaie plutôt de désactiver l'affichage avant de charger tes tiles/ta tilemap, puis réactive l'affichage ensuite (tu dois avoir un port du VDP qui te permet de faire ça).
En principe les accès au VDP devraient être plus rapides en dehors de l'affichage actif (pendant les VBLANKs, par exemple).
C'est fait déja en fait
bfg- Patient contaminé
- Nombre de messages : 806
Localisation : DMC
Date d'inscription : 11/09/2005
Re: [TERMINE] Pang ! / MSX
Bon, ben à part rajouter des NOPs, je ne vois pas
Tiens, pendant que j'y pense, si tu es toujours intéressé pour programmer sur Master System avec SDCC, il y a un type qui développe un kit spécifique : http://www.smspower.org/forums/15228-DevkitSMSDevelopYourHomebrewInC
Tiens, pendant que j'y pense, si tu es toujours intéressé pour programmer sur Master System avec SDCC, il y a un type qui développe un kit spécifique : http://www.smspower.org/forums/15228-DevkitSMSDevelopYourHomebrewInC
vingazole- Infirmier
- Nombre de messages : 4522
Age : 50
Localisation : Midian
Date d'inscription : 04/01/2012
Re: [TERMINE] Pang ! / MSX
Bon, ben il semble que c'est le timing VDP qui foirait ... J'ai joué sécure et mis 3 nop après chaque accès VDP et il n'y à plus de glitch ... Bizarre. Je pense que ça passe avec 2 nop, mais bon, c'est pas une routine critique coté vitesse.
Me reste un bug de son à corriger !
Me reste un bug de son à corriger !
bfg- Patient contaminé
- Nombre de messages : 806
Localisation : DMC
Date d'inscription : 11/09/2005
Re: [TERMINE] Pang ! / MSX
Content que tu ai résolu le problème.
Juste pour info, c'est quel modèle de MSX2 ?
Juste pour info, c'est quel modèle de MSX2 ?
Fabf- Patient incurable
- Nombre de messages : 1894
Age : 51
Localisation : Vienne (38)
Date d'inscription : 11/09/2012
Re: [TERMINE] Pang ! / MSX
Fabf a écrit:Content que tu ai résolu le problème.
Juste pour info, c'est quel modèle de MSX2 ?
Je sais pô :) J'ai encore rien pour tester sur bécane réelle ... Il faut que j'investisse, mais il faut surtout que je trouve de la place pour brancher les MSX ...
bfg- Patient contaminé
- Nombre de messages : 806
Localisation : DMC
Date d'inscription : 11/09/2005
Re: [TERMINE] Pang ! / MSX
Tu branche quoi sur ta télé ?
Fabf- Patient incurable
- Nombre de messages : 1894
Age : 51
Localisation : Vienne (38)
Date d'inscription : 11/09/2012
Re: [TERMINE] Pang ! / MSX
Fabf a écrit: Tu branche quoi sur ta télé ?
Je teste sur Emu (BlueMsx) et Eric teste sur toutes les bécanes qu'il à en sa possession.
bfg- Patient contaminé
- Nombre de messages : 806
Localisation : DMC
Date d'inscription : 11/09/2005
Re: [TERMINE] Pang ! / MSX
Ok donc c'est sur un MSX2 d'Eric
Fabf- Patient incurable
- Nombre de messages : 1894
Age : 51
Localisation : Vienne (38)
Date d'inscription : 11/09/2012
Re: [TERMINE] Pang ! / MSX
joli michel superbe , les fan msx et coleco comme moi sont aux anges avec des gars comme toi
et dire que ton adaptation pang eu été un mega hit msx 1 en 1985 .
tu est une star du code avec un peu de retard , pas grave tu as quand même des fans , sans la fortune .
et dire que ton adaptation pang eu été un mega hit msx 1 en 1985 .
tu est une star du code avec un peu de retard , pas grave tu as quand même des fans , sans la fortune .
bfg- Patient contaminé
- Nombre de messages : 806
Localisation : DMC
Date d'inscription : 11/09/2005
Re: [TERMINE] Pang ! / MSX
Tu as fait commeny pour regler ton bug ?
c est très beau comme cover
c est très beau comme cover
pckid- Infirmier
- Nombre de messages : 3753
Age : 47
Localisation : ile de france (94)
Date d'inscription : 29/09/2011
Re: [TERMINE] Pang ! / MSX
Le timing VDP qui était trop rapide pour un MSX2 à priori. Quelques NOP de plus après avoir balancé la donnée au VDP et le tour à été joué ...
bfg- Patient contaminé
- Nombre de messages : 806
Localisation : DMC
Date d'inscription : 11/09/2005
Page 1 sur 2 • 1, 2
Sujets similaires
» [VDS] console Atari 2600 modifiée, Atari Flashback Portable,etc
» [Mégadrive] Pang !
» Pang pour MSX
» [PANG] Colecovision
» Estimation jeu Gb Pang
» [Mégadrive] Pang !
» Pang pour MSX
» [PANG] Colecovision
» Estimation jeu Gb Pang
Page 1 sur 2
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum