La Place des Développeurs Projet Carwar
aoineko
Membre non connecté
Conseiller Municipal
Reprise du message précédent
Je viens de penser à un truc... J'ai pas besoin d'avoir mon circuit en RAM !Il suffit que je fasse un backup des 4 zones de 13x11 ou je vais afficher ma voiture (que je pourrais surement stocker qq part dans la VRAM) puis d'utiliser ces blocks pour effacer mes voitures la prochaine fois. A cause de l'affichage sur 2 pages graphiques, j'aurai besoin de tout stocker en double, mais 8x13x11 (1144 octets), ça doit rentrer sans problème dans les espaces inoccupés de la VRAM. Reste plus qu'à trouver comment accéder à ces zones.
GuillianSeed :
Sur MSX, ça tourne nikel et sur Turbo-R je m'entraine en crazy mode !
Merci ! Par contre, je suis étonné que tu ais encore le Crazy Mode sur Turbo-R vu que normalement j'attends la fin du balayage vertical avant de dessiner une nouvelle image... ça devrait pas aller plus vite. A moins qu'on soit à 60fps sur Turbo-R et seulement à 30 sur MSX2. Edité par aoineko Le 28/01/2011 à 01h01
On est toujours ignorant avant de savoir.
Vous sous-estimez le MSX les gars ! N'oubliez pas que Mario Kid était un jeu en screen 10. Ce mode d'écran prend autant de place que le screen 8. (D'ailleurs, je me demande ce qu'est devenu ce jeu.)
Pour désactiver les sprites, il faut mettre le bit 1 du registre 8 du VDP à 1.
Si jamais tu aurais besoin de plus de place pour cacher des graphismes dans la VRAM, mets le bit 7 du registre 9 à 0 pour voir un affichage en mode 256 x 192 (au lieu de 256 x 212).
Je te conseille "Le Livre du MSX2". On le trouve en PDF de très bonne qualité sur Internet.
Pour désactiver les sprites, il faut mettre le bit 1 du registre 8 du VDP à 1.
Si jamais tu aurais besoin de plus de place pour cacher des graphismes dans la VRAM, mets le bit 7 du registre 9 à 0 pour voir un affichage en mode 256 x 192 (au lieu de 256 x 212).
Je te conseille "Le Livre du MSX2". On le trouve en PDF de très bonne qualité sur Internet.
aoineko
Membre non connecté
Conseiller Municipal
Si je n'utilise pas les sprites, en théorie (?), même en 256x212, il me reste 256*44 sur chacune des pages graphiques ; ce qui suffirait largement à mon bonheur.
J'ai Le livre du MSX 2 mais point de vue graphique, je le trouve pas aussi complet que la doc du V9938. Le seul problème de la doc du V9938, c'est que ce n'est pas numérisé et que pour la recherche ce n'est donc vraiment pas pratique.
Bon, pour bien finir la journée, une nouvelle version de Carwar avec la gestion des 4 joueurs simultanés : Carwar v0.0.2
Pour les joueurs 3 et 4, les directions se font avec le stick du joystick et l'accélération avec le 1er bouton.
EDIT : Le livre du MSX 2 est différent du livre Pratique du MSX 2 ? J'ai le 2e, pas le premier.
EDIT 2 : J'ai trouvé. Ce n'était pas le même ; ça va me faire de la lecture en plus. Edité par aoineko Le 28/01/2011 à 01h53
J'ai Le livre du MSX 2 mais point de vue graphique, je le trouve pas aussi complet que la doc du V9938. Le seul problème de la doc du V9938, c'est que ce n'est pas numérisé et que pour la recherche ce n'est donc vraiment pas pratique.
Bon, pour bien finir la journée, une nouvelle version de Carwar avec la gestion des 4 joueurs simultanés : Carwar v0.0.2
Pour les joueurs 3 et 4, les directions se font avec le stick du joystick et l'accélération avec le 1er bouton.
EDIT : Le livre du MSX 2 est différent du livre Pratique du MSX 2 ? J'ai le 2e, pas le premier.
EDIT 2 : J'ai trouvé. Ce n'était pas le même ; ça va me faire de la lecture en plus. Edité par aoineko Le 28/01/2011 à 01h53
On est toujours ignorant avant de savoir.
Bravo pour ce que tu as déjà fait comme développement
C'est un excellent début !
A la bonne heure ! ... C'est la meilleure solution, il n'y a pas photo.
Même si tu utilises les sprites, il n'y a qu'une seule série de tables en VRAM (il n'y en a pas une par page), et la bonne nouvelle c'est que c'est toi qui détermine où elles se disposent. Donc cet espace est effectivement libre, au moins sur toutes les autres pages.
C'est un excellent début !
aoineko :
Je viens de penser à un truc... J'ai pas besoin d'avoir mon circuit en RAM !
A la bonne heure ! ... C'est la meilleure solution, il n'y a pas photo.
aoineko :
Si je n'utilise pas les sprites, en théorie (?), même en 256x212, il me reste 256*44 sur chacune des pages graphiques
Même si tu utilises les sprites, il n'y a qu'une seule série de tables en VRAM (il n'y en a pas une par page), et la bonne nouvelle c'est que c'est toi qui détermine où elles se disposent. Donc cet espace est effectivement libre, au moins sur toutes les autres pages.
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)
Fabf
Membre non connecté
Conseiller Municipal
Hallucinant de vitesse
Tu vas encore me faire regretter de pas tâter de l'assembleur
Mets nous vite un petit décor STP
PS il ya 2 voies qui s'ouvrent à toi :
Faire un clone de super sprint (ce vers quoi tu tends) ou faire des voitures plus grosses et plus détaillées mais plus maniables plus dans l'esprit des Konami holdies
En tout cas excellent travaille
Tu vas encore me faire regretter de pas tâter de l'assembleur
Mets nous vite un petit décor STP
PS il ya 2 voies qui s'ouvrent à toi :
Faire un clone de super sprint (ce vers quoi tu tends) ou faire des voitures plus grosses et plus détaillées mais plus maniables plus dans l'esprit des Konami holdies
En tout cas excellent travaille
aoineko
Membre non connecté
Conseiller Municipal
Bon, j'ai passé pas mal de temps dans les docs techniques et les histoires d'espace VRAM hors page graphique n'est toujours pas claire.
Pour les pages graphiques, l'adresse de départ est censé être codé dans R2 * 400h ; hors, les valeurs qui marchent pour moi sont 1Fh (1er page) et 3Fh (2e page). Ai-je raté qq chose ?
Pareil pour l'adresse de la zone TAS (table des attributs sprite) et TGS (table des formes de sprite) respectivement à 36h (* 80h) et 07h (* 800h) ?
En fait, je comprends pas :
1. la correspondance entre les valeurs des registres et les adresses réelles en VRAM.
2. la correspondance entre les adresses graphiques en X/Y et les adresses mémoires en VRAM.
Toute aide serait la bienvenue.
Pour les pages graphiques, l'adresse de départ est censé être codé dans R2 * 400h ; hors, les valeurs qui marchent pour moi sont 1Fh (1er page) et 3Fh (2e page). Ai-je raté qq chose ?
Pareil pour l'adresse de la zone TAS (table des attributs sprite) et TGS (table des formes de sprite) respectivement à 36h (* 80h) et 07h (* 800h) ?
En fait, je comprends pas :
1. la correspondance entre les valeurs des registres et les adresses réelles en VRAM.
2. la correspondance entre les adresses graphiques en X/Y et les adresses mémoires en VRAM.
Toute aide serait la bienvenue.
On est toujours ignorant avant de savoir.
C'est vrai que pour la gestion des adresses de départ des différentes tables ça a l'air compliqué.
Par contre je ne comprends pas ta deuxième question, c'est expliqué en page 150 de pratique du MSX2
Par contre je ne comprends pas ta deuxième question, c'est expliqué en page 150 de pratique du MSX2
Le MSXien le plus à l'ouest ... ou presque
aoineko
Membre non connecté
Conseiller Municipal
MSXosaure :
Par contre je ne comprends pas ta deuxième question, c'est expliqué en page 150 de pratique du MSX2
Ça doit être la fatigue.
Effectivement, on peut adresser toutes la VRAM via les coordonnées X/Y.
D'ailleurs, vous connaissez pas un visualisateur de VRAM ? Ça serait bien pratique dans BlueMSX.
On est toujours ignorant avant de savoir.
aoineko
Membre non connecté
Conseiller Municipal
J'ai commencé à transférer mes donnés en VRAM (après la 2e page) et à afficher mes sprites avec des copies VRAM to VRAM ; ça marche nickel !
Du coup, c'est encore plus rapide...
Si ça continue, il va falloir que je revois mes ambitions à la hausse.
Par contre, vu que mes données sont maintenant en VRAM, faut absolument que je bloque le joueur en Y sinon il peut aller écraser les sprites.
Du coup, c'est encore plus rapide...
Si ça continue, il va falloir que je revois mes ambitions à la hausse.
Par contre, vu que mes données sont maintenant en VRAM, faut absolument que je bloque le joueur en Y sinon il peut aller écraser les sprites.
On est toujours ignorant avant de savoir.
aoineko :
J'ai commencé à transférer mes donnés en VRAM ... c'est encore plus rapide
C'est que je te dis depuis le début
aoineko :
je comprends pas la correspondance entre les valeurs des registres et les adresses réelles en VRAM
Les registres contiennent une partie de l'adresse directe en VRAM. Comme il fallait garder la compatibilité entre MSX1 et MSX2, ils ont du parfois scinder ce codage en 2 registres distincts, mais le principe reste le même.
Par exemple, dans le cas de la TAS, les bits b7 à b14 de l'adresse sont contenus dans le registre R#5, et les bits b15 et b16 sont dans le registre R#11. L'adresse de la TAS dans la VRAM est donc égale à (R#11 x 32768 + R#5 x 128).
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)
aoineko
Membre non connecté
Conseiller Municipal
Metalion :
C'est que je te dis depuis le début
Je sais bien, mais j'suis quand même content de l'avoir réalisé.
Metalion :
Par exemple, dans le cas de la TAS, les bits b7 à b14 de l'adresse sont contenus dans le registre R#5, et les bits b15 et b16 sont dans le registre R#11. L'adresse de la TAS dans la VRAM est donc égale à (R#11 x 32768 + R#5 x 128).
Pour le TAS, j'ai 0 dans mon registre R#11 et 36h dans R#5, donc 36h * 80h = 1B00h alors que ma table des attributs sprite est censé se trouver en FA00h. Je vois pas comment on peut passer de 36h à FA00h !? Edité par aoineko Le 29/01/2011 à 14h28
On est toujours ignorant avant de savoir.
le registre 5 code uniquement les bits de poids forts S14 S13 S12 S11 S10 S9 S8 S7 , S6 S5 S4 S3 S2 S1 S0 sont omis
dans le registre 11 on récupére les 2 bits de poids forts supplémentaire S15 S16
maintenant pour lire l'état des registres il faut être dans mode d'écran concerné si tu travailles en screen 8 il faut sauvegarder les registres dans une zone mémoire afin de les relire aprés car le simple fait de repasser en écran texte réinitialise les tables
1B00 est l'adresse de la TAS en screen 1 et screen 2
sur MSX1 S14 n'existe pas réservé aux MSX2 et le registre 11 aussi
dans le registre 11 on récupére les 2 bits de poids forts supplémentaire S15 S16
maintenant pour lire l'état des registres il faut être dans mode d'écran concerné si tu travailles en screen 8 il faut sauvegarder les registres dans une zone mémoire afin de les relire aprés car le simple fait de repasser en écran texte réinitialise les tables
1B00 est l'adresse de la TAS en screen 1 et screen 2
sur MSX1 S14 n'existe pas réservé aux MSX2 et le registre 11 aussi
aoineko :
Pour le TAS, j'ai 0 dans mon registre R#11 et 36h dans R#5, donc 36h * 80h = 1B00h alors que ma table des attributs sprite est censé se trouver en FA00h. Je vois pas comment on peut passer de 36h à FA00h !?
Il y a une couille dans le potage ...
Parce que pour que ta TAS soit à $FA00, le R#11 devrait être à 1 et le R#5 à 244 (1x32768+244x128=64000).
EDIT : Jipe a raison, tu ne peux lire les valeurs de registres que quand tu es dans le mode graphique concerné. Après cela dépend de ta façon de basculer en SCREEN 8. Soit tu as fait appel au BIOS, et alors c'est lui qui a initialisé toutes les valeurs de tables, soit tu fais ça tout seul en manipulant les registres, et alors c'est toi qui doit tout définir.
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)
aoineko
Membre non connecté
Conseiller Municipal
En fait, je regarde la valeur des registres VDP via le débuggeur de BlueMSX (quand je suis en mode 8). Si ça se trouve, y a un bug dans BlueMSX.
EDIT :
Je passe en mode 8 en changent directement les registres R#0 à R#2. Je touche pas aux autres... c'est donc certainement normal que j'ai des valeurs bizarre dans mes registres d'adressages. Je vais me faire une routine d'initialisation plus propre.
Par contre, je vois pas de registre pour setter l'adresse des zones TCS (table des couleurs sprite) et TPL (table de palette) ; elles sont dépendante de l'adresse de la TAS et de la TGS ? Edité par aoineko Le 29/01/2011 à 17h55
EDIT :
Je passe en mode 8 en changent directement les registres R#0 à R#2. Je touche pas aux autres... c'est donc certainement normal que j'ai des valeurs bizarre dans mes registres d'adressages. Je vais me faire une routine d'initialisation plus propre.
Par contre, je vois pas de registre pour setter l'adresse des zones TCS (table des couleurs sprite) et TPL (table de palette) ; elles sont dépendante de l'adresse de la TAS et de la TGS ? Edité par aoineko Le 29/01/2011 à 17h55
On est toujours ignorant avant de savoir.
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie