La Place des Développeurs Projet Carwar
aoineko
Membre non connecté
Conseiller Municipal
Reprise du message précédent
Nouvelle version de Carwar avec ajout d'un ombreur automatique des circuits : carwar_0_0_5.zip.J'ai retiré aussi le passage forcé au 50Hz. Si ça plante toujours sur un vrai MSX, je posterai mon code d'initialisation (passage en mode 8 et init des zones mémoires) car c'est la seule partie qui a vraiment changé depuis la dernière version qui marchait.
On est toujours ignorant avant de savoir.
debug avec Ru-MSX
ancienne version : VDP command: C0 (0,0)->(0,0) [0,212] Color 146
nouvelle version : VDP command: C0 (0,0)->(0,0) [256,256] Color 0
le fait d'aller a 256 peut t'il causer le probléme car la coordonnée s'arrête a 255 en horizontal
sinon dur de relire et de modifier les registres avec le .rom
la derniére version en 50Hz ne marche pas mieux sur mon vrai MSX
ancienne version : VDP command: C0 (0,0)->(0,0) [0,212] Color 146
nouvelle version : VDP command: C0 (0,0)->(0,0) [256,256] Color 0
le fait d'aller a 256 peut t'il causer le probléme car la coordonnée s'arrête a 255 en horizontal
sinon dur de relire et de modifier les registres avec le .rom
la derniére version en 50Hz ne marche pas mieux sur mon vrai MSX
aoineko
Membre non connecté
Conseiller Municipal
Au tout début du jeu, je fais 2 HMMV (fill from VDP) en 0,0 et 0,256 d'une taille de 256x256 pour initialiser toute la VRAM à 0 (plus pratique pour débugger).
Tu penses que ça peut être problématique ?
Sinon, pour la taille de 256, passer un NX à 256 permet bien de remplir les pixels de 0 à 255. Non ?
EDIT : Et merci pour tous tes tests ! Edité par aoineko Le 08/02/2011 à 17h01
Tu penses que ça peut être problématique ?
Sinon, pour la taille de 256, passer un NX à 256 permet bien de remplir les pixels de 0 à 255. Non ?
EDIT : Et merci pour tous tes tests ! Edité par aoineko Le 08/02/2011 à 17h01
On est toujours ignorant avant de savoir.
aoineko
Membre non connecté
Conseiller Municipal
Jipe :
le NX va de 0 a 511 mais pour le screen 8 il doit s'arrêter a 255
Tu es sur !?
NX étant la largeur, une copie est censé aller de DX à DX + NX - 1. Ou sinon, j'ai vraiment rien compris.
On est toujours ignorant avant de savoir.
aoineko
Membre non connecté
Conseiller Municipal
Jipe :
Cool, une doc du V9938 en version numérique.
Par contre, en relisant la doc du HMMV j'y comprends toujours la même chose : les coordonnées X sont bien limité à 255 (ou 511), mais NX représentant la largeur de la copie, s'il est égale à 256 et que DX est égale à 0, alors les coordonnées affectées sont de 0 à 255. J'ai raté qq chose !?
Quand tu copies un bloc de 32x32 en mémoire, tu mets bien NX à 32, non ?
On est toujours ignorant avant de savoir.
je ne programme pas en LM je me contente du Basic mais j'utilise les outils mis a disposition
disons que par le passé j'ai adapté pas mal de programmes MSX1 qui ne tournaient pas sur MSX2 et il a bien fallu fouiller dedans
pour le reste tu est seul maitre a bord ,essaye quand même en limitant a 255 ça ne coute rien car je m'y perd dans cette façon de programmer non humaine générée par le C
disons que par le passé j'ai adapté pas mal de programmes MSX1 qui ne tournaient pas sur MSX2 et il a bien fallu fouiller dedans
pour le reste tu est seul maitre a bord ,essaye quand même en limitant a 255 ça ne coute rien car je m'y perd dans cette façon de programmer non humaine générée par le C
aoineko
Membre non connecté
Conseiller Municipal
Voici une version ou je remplie la VRAM en 2 fois 0,0[128,212] et 128,0[128,212] : carwar_prb_crashMsx.zip.
On est toujours ignorant avant de savoir.
aoineko :
Cool, une doc du V9938 en version numérique.
Jipe :
Cool, une doc du V9938 en version numérique.
Fait attention ! Cette doc contient des erreurs. Par exemple, le registe 45.
aoineko :
Par contre, en relisant la doc du HMMV j'y comprends toujours la même chose : les coordonnées X sont bien limité à 255 (ou 511), mais NX représentant la largeur de la copie, s'il est égale à 256 et que DX est égale à 0, alors les coordonnées affectées sont de 0 à 255. J'ai raté qq chose !?
Quand tu copies un bloc de 32x32 en mémoire, tu mets bien NX à 32, non ?
Par contre, en relisant la doc du HMMV j'y comprends toujours la même chose : les coordonnées X sont bien limité à 255 (ou 511), mais NX représentant la largeur de la copie, s'il est égale à 256 et que DX est égale à 0, alors les coordonnées affectées sont de 0 à 255. J'ai raté qq chose !?
Quand tu copies un bloc de 32x32 en mémoire, tu mets bien NX à 32, non ?
NX va de 0 à 511 aussi. Pour un bloc de 32x32, NX et NY doivent être à 31 si je me souviens bien. De toute façon, c'est facile à vérifier. Edité par GDX Le 09/02/2011 à 10h36
GDX :
Pour un bloc de 32x32, NX et NY doivent être à 31 si je me souviens bien.
Non, NX et NY représentent le Nombre de pixels dans la direction X et dans la direction Y pour la commande spécifiée.
Pour un bloc de 32x32, la bonne valeur de NX et NY est bien 32.
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)
cette derniére version refuse aussi d'afficher autre chose qu'un écran noir
j'ai décortiqué un morceau étrange F3E8 n'est pas un registre de VDP mais l'info trigger
quand je rempli de NOP de 82A7 a 82B6 j'ai toujours l'écran noir mais le CAPS LOCK fonctionne ainsi que le REN-SHA ( tir automatique )
les infos des variables systéme viennent d'ici : http://map.grauw.nl/resources/msxsystemvars.php
et coincident bien avec celles de pratique du MSX2
828F: ld a,(#f3e0) RG1SAV #F3E0 1 Content of VDP(1) register (R#1)
8292: res 4,a
8294: res 3,a
8296: ld (#f3e0),a
8299: out (#99),a
829B: ld a,#81
829D: out (#99),a
829F: ld a,#1f
82A1: out (#99),a
82A3: ld a,#82
82A5: out (#99),a
82A7: ld a,(#f3e8) TRGFLG #F3E8 1Information about trigger buttons and space bar state
7 6 5 4 3 2 1 0
| | | | +-- Space bar, trig(0) (0 = pressed)
| | | +---------- Stick 1, Trigger 1 (0 = pressed)
| | +------------ Stick 1, Trigger 2 (0 = pressed)
| +-------------- Stick 2, Trigger 1 (0 = pressed)
+---------------- Stick 2, Trigger 2 (0 = pressed)
82AA: res 7,a
82AC: or (ix+#04)
82AF: ld (#f3e8),a
82B2: out (#99),a
82B4: ld a,#89
82B6: out (#99),a
82B8: ei
82B9: pop ix
82BB: ret
j'ai décortiqué un morceau étrange F3E8 n'est pas un registre de VDP mais l'info trigger
quand je rempli de NOP de 82A7 a 82B6 j'ai toujours l'écran noir mais le CAPS LOCK fonctionne ainsi que le REN-SHA ( tir automatique )
les infos des variables systéme viennent d'ici : http://map.grauw.nl/resources/msxsystemvars.php
et coincident bien avec celles de pratique du MSX2
828F: ld a,(#f3e0) RG1SAV #F3E0 1 Content of VDP(1) register (R#1)
8292: res 4,a
8294: res 3,a
8296: ld (#f3e0),a
8299: out (#99),a
829B: ld a,#81
829D: out (#99),a
829F: ld a,#1f
82A1: out (#99),a
82A3: ld a,#82
82A5: out (#99),a
82A7: ld a,(#f3e8) TRGFLG #F3E8 1Information about trigger buttons and space bar state
7 6 5 4 3 2 1 0
| | | | +-- Space bar, trig(0) (0 = pressed)
| | | +---------- Stick 1, Trigger 1 (0 = pressed)
| | +------------ Stick 1, Trigger 2 (0 = pressed)
| +-------------- Stick 2, Trigger 1 (0 = pressed)
+---------------- Stick 2, Trigger 2 (0 = pressed)
82AA: res 7,a
82AC: or (ix+#04)
82AF: ld (#f3e8),a
82B2: out (#99),a
82B4: ld a,#89
82B6: out (#99),a
82B8: ei
82B9: pop ix
82BB: ret
aoineko
Membre non connecté
Conseiller Municipal
Voici une nouvelle version avec les débuts de mon système de menu : carwar_0_0_6.zip.
Les menus ne sont pas encore fonctionnel ; y a juste la techno.
Jipe, si ça marche toujours pas, je te ferai une version minimaliste avec juste l'affichage d'un rectangle.
Les menus ne sont pas encore fonctionnel ; y a juste la techno.
Jipe, si ça marche toujours pas, je te ferai une version minimaliste avec juste l'affichage d'un rectangle.
On est toujours ignorant avant de savoir.
aoineko
Membre non connecté
Conseiller Municipal
Jipe :
j'ai décortiqué un morceau étrange F3E8 n'est pas un registre de VDP mais l'info trigger (...)
Je sais vraiment pas comment interpréter tes infos...
Y a du code qui se retrouve en RAM à la place de variables système ?
J'utilise les adresses F3DFh à F3E8h pour récupérer la valeur des registres VDP 0 à 9 avant de les modifier.
Et a chaque modification d'une valeur d'un de ces registres, je sauvegarde la valeur dans les variables systèmes correspondantes.
Est-ce une erreur de considérer qu'au démarrage, les adresses F3DFh à F3E8h contiennent bien les valeurs des registres VDP !?
On est toujours ignorant avant de savoir.
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie