MSX Village forum

La Place des Développeurs Mes 1ers pas sur MSX ...

Ricco59 Membre non connecté

Villageois

Rang

Avatar

Inscrit le : 02/01/2021 à 11h22

Messages: 248

Le 27/02/2021 à 21h25

Reprise du message précédent

No problemo Aoineko, je te tiens au jus ;)

Salut les potos,

Y-a-t-il un moyen visuel pour voir le temps machine que prend routine ? (sur amiga, on mettait un trait au copper d'une couleur avant la routine et après celle-ci, on remettait la couleur de fond. On avait donc une barre de couleur plus ou moins épaisse qui symbolisait le temps machine que prenait cette routine). Tout ça pour vous demander si


ld hl,vram+coordX+coordY*32
ld a,code du tile à afficher
call WRTVRM

est moins rapide que

ld hl,vram+coordX+coordY*32
ld a,code du tile à afficher
PUSH AF
DI
LD A,L
OUT (#0x99),A
LD A,H
AND #0x3F
OR #0x40
OUT (#0x99),A
EI
POP AF
OUT (#0x98),A


en relisant, je pense meme faire ça


ld hl,vram+coordX+coordY*32

PUSH AF
DI
LD A,L
OUT (#0x99),A
LD A,H
AND #0x3F
OR #0x40
OUT (#0x99),A
EI
ld a,code du tile à afficher
POP AF
OUT (#0x98),A


je sais que je gagne quelques octets en saut et retour mais c'est négligeable ou c mieux ?

Merci :)

ps : pour info, depuis hier, j'ai ajouté la gestion des couleurs du cadre en fonction du niveau de difficulté et, en mode story après l'affichage caractère / caractère, j'efface ligne / ligne comme sur coleco :)

Edité par Ricco59 Le 27/02/2021 à 21h26


Tous mes travaux sont centralisés sur mon piti blog : https://ricco59.blogspot.com/
E-mail    
aoineko Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 02/01/2011 à 21h17

Messages: 2699

Le 27/02/2021 à 21h42
Ricco59 :
Y-a-t-il un moyen visuel pour voir le temps machine que prend routine ? (sur amiga, on mettait un trait au copper d'une couleur avant la routine et après celle-ci, on remettait la couleur de fond. On avait donc une barre de couleur plus ou moins épaisse qui symbolisait le temps machine que prenait cette routine).


On fait pareil sur MSX en changeant la couleur de fond/bordure (valeur du registre #7 du VDP).

Ricco59 :
Tout ça pour vous demander si [...] est moins rapide que [...]


J'utilise pas du tout les commandes du Bios donc je saurais pas te dire à quel point elles sont lentes (j'ai tendance à tout refaire moi-même pour être sur que c'est optimal par rapport à mes besoins).
Tu es en Screen mode 2, c'est ça ?
Si c'est bien le cas, il faut faire attention à ce qu'il y ait bien au moins 29 cycles CPU entre 2 écritures vers le VDP.
Ce qui est bien le cas actuellement entre tes 2 out :top

Par contre, tes DI/EI sont pas bien placé :

Code ASM :
 
LD HL,vram+coordX+coordY*32
LD A,L
DI ; Mettre le DI juste avant le premier OUT à protéger
OUT (#0x99),A
LD A,H
AND #0x3F
OR #0x40
OUT (#0x99),A
LD A,code_du_tile_à_afficher
EI ; Mettre le EI juste avant le dernier OUT à protéger
OUT (#0x98),A


Ricco59 :
je sais que je gagne quelques octets en saut et retour mais c'est négligeable ou c mieux ?


Tu gagnes qq octets... et aussi 23 cycles CPU. C'est rarement négligeable sur un Z80. :)


On est toujours ignorant avant de savoir.
Github    
Ricco59 Membre non connecté

Villageois

Rang

Avatar

Inscrit le : 02/01/2021 à 11h22

Messages: 248

Le 27/02/2021 à 21h48
Bondiou, j'ai encore bcp à apprendre
par contre j'ai cru lire que les outi sont à proscrire pour une meilleure compatibilité ? legende urbaine ou non ?

Tchao amigo ;)


Tous mes travaux sont centralisés sur mon piti blog : https://ricco59.blogspot.com/
E-mail    
aoineko Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 02/01/2011 à 21h17

Messages: 2699

Le 27/02/2021 à 22h08
Ricco59 :
par contre j'ai cru lire que les outi sont à proscrire pour une meilleure compatibilité ? legende urbaine ou non ?


L'instruction OUTI prends 18 cycles pour le CPU.
Donc si tu enchaines des OUTI, le VDP va recevoir des données tous les 18 cycles (CPU) alors que dans certains modes, le VDP est incapable de traiter les données aussi vite.
En Screen mode 2 et 3, il ne faut pas envoyer de donnée avec moins de 29 cycles d'intervalle sur MSX1.
Donc oui, dans ce cas, le OUTI est trop rapide.
Par contre, pour les Screen mode 0 ou 3, la limite est de 12 et 13 cycles respectivement donc aucun soucis à utiliser les OUTI.

A noter que pendant le V-Blank, il n'y a plus de limite d'accès au VDP (le VDP va beaucoup plus vite que le CPU).
Donc si tu es sûr à 100% qu'un code s'exécute pendant le V-Blank, tu peux y utiliser les OUTI sans soucis, même avec les Screen mode 2 et 3.


On est toujours ignorant avant de savoir.
Github    
Ricco59 Membre non connecté

Villageois

Rang

Avatar

Inscrit le : 02/01/2021 à 11h22

Messages: 248

Le 28/02/2021 à 00h07
Donc si tu es sûr à 100% qu'un code s'exécute pendant le V-Blank, tu peux y utiliser les OUTI sans soucis, même avec les Screen mode 2 et 3

Je ne suis sûr de rien, je débute ;)
Merci


Tous mes travaux sont centralisés sur mon piti blog : https://ricco59.blogspot.com/
E-mail    
aoineko Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 02/01/2011 à 21h17

Messages: 2699

Le 28/02/2021 à 00h54
Ricco59 :
Donc si tu es sûr à 100% qu'un code s'exécute pendant le V-Blank, tu peux y utiliser les OUTI sans soucis, même avec les Screen mode 2 et 3

Je ne suis sûr de rien, je débute ;)


Si tu as un code de synchronisation avec le V-Blank (genre une fonction WaitVBlank() qui attend l'interruption du VPD) tu peux normalement être sûr que le code qui suit se déroule pendant le V-Blank.
Pour vérifier tu peux utiliser l'astuce du changement de couleur de bordure.

Mais bon, si tu as pas besoin de 100% de la puissance du VDP, le plus simple est de s'aligner sur le pire cas (worst-case) et donc ne jamais envoyer de donnée au VDP avec un intervalle inférieur à 29 cycles.
C'est ce que je fais dans la version MSX1 de ma lib.

En tout cas, bravo pour tout ce que tu as accompli jusqu'ici. :top


On est toujours ignorant avant de savoir.
Github    
Metalion Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 23/12/2009 à 15h32

Messages: 1487

Le 28/02/2021 à 09h08
Code ASM :
 
LD HL,vram+coordX+coordY*32
LD A,L
DI
OUT (#0x99),A
LD A,H
AND #0x3F
OR #0x40
OUT (#0x99),A
LD A,code_du_tile_à_afficher
EI
OUT (#0x98),A


Petite optimisation : si on est sûr de son calcul d'adresse VRAM, le 'AND #0x3F' n'est pas vraiment nécessaire, puisque par construction, l'adresse sera toujours inférieure à 16384.

Autre chose : le placement de 'EI' avant la dernière instruction à protéger est une optimisation, pas une obligation. Théoriquement, on devrait bien la placer après la dernière instruction à protéger, mais il se fait que le Z80 a un délai d'une instruction dans son exécution. Edité par Metalion Le 28/02/2021 à 10h34


MSX1: Daewoo DPC-200 / Yamaha CX5M
MSX2: Sony HB-F9P
MSXVR
Vidéo: V9990 (GFX-9)
Audio: MSX-Music (FM-PAC) / MSX-Audio (Audiowave) / OPL4 (Monster Sound FM Blaster) / OPNB (Neotron)
   
goonies Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 28/08/2010 à 21h46

Messages: 1199

Le 28/02/2021 à 10h38
C'est de l'hébreu...
:siffle


.....comme dans tous les pays..il ya des mechants et des gentils....
   
Gfx Membre non connecté

Villageois

Rang

Avatar

Inscrit le : 22/02/2021 à 22h22

Messages: 355

Le 28/02/2021 à 10h55
Génial ce jeu ! Bravo Ricco.
Je trouve le design très sympa.


Il faut cultiver notre jardin.
   
Ricco59 Membre non connecté

Villageois

Rang

Avatar

Inscrit le : 02/01/2021 à 11h22

Messages: 248

Le 28/02/2021 à 12h40
@ Goonies > pour moi aussi les out et in sont de l'hebreu ;)
@ Metallion, Aoineko > Merci pour vos conseils qui restent encore trop pointus pour ma pomme ;) J'etudierai plus en détail un peu plus tard, qd j'aurais plus de bouteille héhéhé

@ Gfx > Merci

J'ai corrigé pas mal de choses hier.
Une fois terminé, je m'attaque au portage de DoTheSame que j'ai fait sur Colecovision. Celui-ci est presque terminé. La video > DoTheSame

Bon dimanche les zamis
Eric Edité par Ricco59 Le 28/02/2021 à 18h05


Tous mes travaux sont centralisés sur mon piti blog : https://ricco59.blogspot.com/
E-mail    
Ricco59 Membre non connecté

Villageois

Rang

Avatar

Inscrit le : 02/01/2021 à 11h22

Messages: 248

Le 01/03/2021 à 23h46
Salut les zamis

J'ai enfin réussi à intégrer le mode Story (une boucle for~next qui marchait sur coleco et qui faisait planter le bouzin sur msx)
Encore kek petits reglages et ça devrait être tout bon pour un test sur mon 8245 avec la belle carte de Fabf, mon hb501f est out snifff (pour le moment)

tchao Edité par Ricco59 Le 01/03/2021 à 23h47


Tous mes travaux sont centralisés sur mon piti blog : https://ricco59.blogspot.com/
E-mail    
aoineko Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 02/01/2011 à 21h17

Messages: 2699

Le 02/03/2021 à 00h10
Dernière ligne droite ! :top


On est toujours ignorant avant de savoir.
Github    
Ricco59 Membre non connecté

Villageois

Rang

Avatar

Inscrit le : 02/01/2021 à 11h22

Messages: 248

Le 02/03/2021 à 09h57
oui, mais je pense qu'on est tous comme ça : "ca ne sera jamais fini" :)

J'attaque ensuite le port de DoTheSame ;)

Bonne journée à tous ;)


Tous mes travaux sont centralisés sur mon piti blog : https://ricco59.blogspot.com/
E-mail    
Ricco59 Membre non connecté

Villageois

Rang

Avatar

Inscrit le : 02/01/2021 à 11h22

Messages: 248

Le 06/03/2021 à 21h20
Salut les zamis,

j'en ai fini avec le mode story

me reste encore des choses à faire et des bugs à supprimer ;)

je fais une chtite video bientôt

Tchao les potos


Tous mes travaux sont centralisés sur mon piti blog : https://ricco59.blogspot.com/
E-mail    
Ricco59 Membre non connecté

Villageois

Rang

Avatar

Inscrit le : 02/01/2021 à 11h22

Messages: 248

Le 06/03/2021 à 22h10
C'est good, la WIP04 - Entering STORY MODE est en ligne, et c'est ici > Ze Video
Guillaume, je t'ai MP

A+ :)


Tous mes travaux sont centralisés sur mon piti blog : https://ricco59.blogspot.com/
E-mail    
Ricco59 Membre non connecté

Villageois

Rang

Avatar

Inscrit le : 02/01/2021 à 11h22

Messages: 248

Le 12/03/2021 à 23h51
Salut les zamis,

J'ai une question :
est-il possible d'utiliser à la fois le stick et le clavier ?

Je m'explique : pour wii? je souhaite jouer
- avec 1 stick 2 boutons (fire1 = action, fire2 = pause..... ca, ca marche, c'est implémenté)
- avec 1 stick 1 bouton (Fire1 = action, ESC = pause...... aïe, j'y reviens plus bas)
- avec le clavier (directions + ESPACE= action et ESC = pause, pareil...)

pour la pause, je fais la chose suivante :

if ((get_trigger(3)==255) || (READKEY()==0x1b))
alors, get_trigger(3) lis l'état du FIRE2
et
READKEY utilise CHGET (0x009f) dans cette routine

unsigned char READKEY(void)
{
__asm
call KILBUF
call CHGET
ld L,A
__endasm;
}

eh bien qd je rajoute (READKEY()==0x1b) -0x1b étant le code retourné pour la touche ESC- le deplacement au stick ne fonctionne plus et le deplacement au clavier est ....très perturbé (saccade)

d'où ma question, peut-on facilement combiner stick+n'importe quelle touche du clavier

Merci et à bientôt :)


Tous mes travaux sont centralisés sur mon piti blog : https://ricco59.blogspot.com/
E-mail    
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie