La Place des Développeurs MSX2 Screen5 test Test en assembleur du VDP en mode SCREEN5
Salut, les gars,
Après le mode SCREEN 8 je m'intéresse maintenant au mode SCREEN 5 => 256x212 avec un palette de 15 couleurs parmis 512.
Pour continuer dans les tests des commandes internes aux VDP cette fois en SCREEN 5 avec la gestion de la transparence.
Aucun sprite utilisée.
1) transfert des données graphique en page 2 et 3 par une classique boucle OUT(VDP) ...
2) utilisation de la commande HMMM ( copy VRAM to VRAM ) pour afficher le décor sur la page 0 (visible)
3) utilisation de la commande LMMM ( logical move VRAM to VRAM ) pour afficher le personnage sur la page 0 en utilisant l'opérande Timp (transparence)
4) attend que l'on utilise le joystick vers la droite ou gauche (pour déplacer le personnage)
5) utilisation de la commande HMMM ( copy VRAM to VRAM ) pour ré-afficher la portion du décor ou le personnage était avant un déplacement sur la page 0
(efface le personnage).
6) on revient au 3 ...
le personnage ce déplace avec une petite animation, bon c'est un peu saccadé mais le but est de tester la rapidité d'une gestion de sprite "non hardware" mais par les commandes du VDP.
l'avantage c'est que l'on est pas limité à une couleur par ligne de sprite mais on peu utiliser des sprites de 16 couleurs sans contraintes ;=)
Si vous voulez tester voici la ROM de test :
Riki.zip
Après le mode SCREEN 8 je m'intéresse maintenant au mode SCREEN 5 => 256x212 avec un palette de 15 couleurs parmis 512.
Pour continuer dans les tests des commandes internes aux VDP cette fois en SCREEN 5 avec la gestion de la transparence.
Aucun sprite utilisée.
1) transfert des données graphique en page 2 et 3 par une classique boucle OUT(VDP) ...
2) utilisation de la commande HMMM ( copy VRAM to VRAM ) pour afficher le décor sur la page 0 (visible)
3) utilisation de la commande LMMM ( logical move VRAM to VRAM ) pour afficher le personnage sur la page 0 en utilisant l'opérande Timp (transparence)
4) attend que l'on utilise le joystick vers la droite ou gauche (pour déplacer le personnage)
5) utilisation de la commande HMMM ( copy VRAM to VRAM ) pour ré-afficher la portion du décor ou le personnage était avant un déplacement sur la page 0
(efface le personnage).
6) on revient au 3 ...
le personnage ce déplace avec une petite animation, bon c'est un peu saccadé mais le but est de tester la rapidité d'une gestion de sprite "non hardware" mais par les commandes du VDP.
l'avantage c'est que l'on est pas limité à une couleur par ligne de sprite mais on peu utiliser des sprites de 16 couleurs sans contraintes ;=)
Si vous voulez tester voici la ROM de test :
Riki.zip
un peu déçu car il faut un joystick pour bouger le personnage
ça m'apprendras a vouloir tester sur un émulateur
sinon j'ai dessassemblé et je remarque que ton en-tête n'est pas vraiment aux normes des cartouches MSX
généralement les programmes démarrent en 4010H car les premiers octets sont reservés pour des extensions
The first 16 bytes of each Cartridge or Expansion ROM are used as header. In most cases (ie. in game cartridges) only the first two entries are used, and the remaing entries are set to zero.
Address Name Expl.
X000 ID Identification Code (4241h=ROM Cartridge, 4443h=SUBROM)
X002 INIT Start Address (could be anywhere 0000-BFFF)
X004 Statement Statement expansion routine address. For creating new
CALL statement (For example CALL MUSIC used in FM PAC)
X006 DEV For creating new devices (CAS:, MEM:, GRP:, etc...)
X008 TEXT Pointer to BASIC program in ROM, must be in 8000-BFFF.
X00A-F N/A Reserved (0)
Upon startup the BIOS scans all SLOTs for Cartridge ROMs (ID 4241h) at addresses 4000h and 8000h, and for SUBROMs (ID 4443h) at address 0000h.
Most Cartridge ROMs occupy the area from 4000h-BFFFh, but might be also using (or being mirrored to) the whole address space from 0000h to FFFFh.
ça m'apprendras a vouloir tester sur un émulateur
sinon j'ai dessassemblé et je remarque que ton en-tête n'est pas vraiment aux normes des cartouches MSX
généralement les programmes démarrent en 4010H car les premiers octets sont reservés pour des extensions
The first 16 bytes of each Cartridge or Expansion ROM are used as header. In most cases (ie. in game cartridges) only the first two entries are used, and the remaing entries are set to zero.
Address Name Expl.
X000 ID Identification Code (4241h=ROM Cartridge, 4443h=SUBROM)
X002 INIT Start Address (could be anywhere 0000-BFFF)
X004 Statement Statement expansion routine address. For creating new
CALL statement (For example CALL MUSIC used in FM PAC)
X006 DEV For creating new devices (CAS:, MEM:, GRP:, etc...)
X008 TEXT Pointer to BASIC program in ROM, must be in 8000-BFFF.
X00A-F N/A Reserved (0)
Upon startup the BIOS scans all SLOTs for Cartridge ROMs (ID 4241h) at addresses 4000h and 8000h, and for SUBROMs (ID 4443h) at address 0000h.
Most Cartridge ROMs occupy the area from 4000h-BFFFh, but might be also using (or being mirrored to) the whole address space from 0000h to FFFFh.
Merci Jipe pour les infos sur l'entête des cartouches, je n'avais pas ces infos
Ca m'intéresse les tests sur un vrai MSX, de mon côté je ne pourrais rien tester en réel avant la fin aout
D'ailleurs j'ai essayé sous bluemsx de tester une cartouche ROM ayant les 2 premiers caractères différents de 4241h mais impossible de la "voir" comme si bluemsx ne la chargé pas ???
Mais sur machine réel il n'y aucun raison quelle ne soit pas visible en positionnant le PPI sur le SLOT adéquate !!!
Ca m'intéresse les tests sur un vrai MSX, de mon côté je ne pourrais rien tester en réel avant la fin aout
D'ailleurs j'ai essayé sous bluemsx de tester une cartouche ROM ayant les 2 premiers caractères différents de 4241h mais impossible de la "voir" comme si bluemsx ne la chargé pas ???
Mais sur machine réel il n'y aucun raison quelle ne soit pas visible en positionnant le PPI sur le SLOT adéquate !!!
réussi a voir l'anime en configurant blueMSX avec les touches du clavier sur le joystick 1
sur turbo-r et 8280 4mo pas réussi a démarrer avec un lanceur de rom
mon ST n'a plus de courroie ..... a suivre
sur turbo-r et 8280 4mo pas réussi a démarrer avec un lanceur de rom
mon ST n'a plus de courroie ..... a suivre
dans les 2 versions il te manque un octet pour faire les 32k standard d'une cartouche
la seconde version fonctionne sur turbo-r ST 512k avec manette dans le port 1 mais pas avec le clavier
mais il faut que je la charge dans ma S-RAM pour la faire fonctionner
la seconde version fonctionne sur turbo-r ST 512k avec manette dans le port 1 mais pas avec le clavier
mais il faut que je la charge dans ma S-RAM pour la faire fonctionner
C'est normal pour le clavier car je ne scrute que le joystick
Pour l'octet manquant oups, je rectifierais pour la prochaine versions
Dèjà tu confirme que le comportement est le même sur machine réelle
Je vais faire des tests avec un personnage encore plus grand pour voir si VDP suit ....
Pour l'octet manquant oups, je rectifierais pour la prochaine versions
Dèjà tu confirme que le comportement est le même sur machine réelle
Je vais faire des tests avec un personnage encore plus grand pour voir si VDP suit ....
Avec un plus grand personnage mais sans décor, avec la même technique mais la ca clignote énormément, il y aurait une solution c'est de temporiser à chaque boucle d'affichage, mais ca ralentirais énormément le personnage
Il y a déjà en fin d'affichage l'attente de la fin de page écran du VDP, mais peut être il y a moyen de trouver une meilleur technique ....
@Jipe: si tu à la possibilité de tester sur machine réelle pour vérifier que le comportement est identique à l'émulateur (clignotement) ?
IORI.zip
Il y a déjà en fin d'affichage l'attente de la fin de page écran du VDP, mais peut être il y a moyen de trouver une meilleur technique ....
@Jipe: si tu à la possibilité de tester sur machine réelle pour vérifier que le comportement est identique à l'émulateur (clignotement) ?
IORI.zip
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie