FCare / Kronos

Kronos is a Sega Saturn emulator.
http://fcare.github.io
232 stars 22 forks source link

[Wing Arms (USA)] Clignotement dans la video d'intro #1488

Open fafling opened 9 months ago

fafling commented 9 months ago

En v2.5.0 et dans la dernière WIP, la video d'intro clignote (moins marqué dans la WIP qua dans la version publique). Ne se produit pas sur la version PAL. Le problème apparaît dans la WIP du 05/11/2022 qui fixe l'affichage incomplet du porte-avion d'Afterburner #1400 .

La video est affichée sur le NBG0 : image

Le bitmap occupe toute la VRAM du VDP2. Cependant, la taille de l'image est plus petite que celle du bitmap, et il utilise le line scroll et le vertical cell scroll qui permettent un stockage continu de l'image. Il est donc possible que la partie nécessaire à l'affichage tienne sur la moitié de la VRAM, sans doute la VRAM A vu le cycle pattern (voir ci-dessous).

Le cycle pattern affiché par Kronos varie. Celui de la capture ci-dessus ne permet pas l'affichage du bitmap du NBG0, mais seulement l'accès au CPU sur la VRAM A qui est non partitionnée. Cette valeur est celle permettant le transfert vers la VRAM. On peut le voir prendre alternativement la valeur suivante, qui permet l'affichage du bitmap sur la VRAM A : A0 = 44444444 A1 = FFFFFFFF B0 = FFFFFFFF B1 = CFFFFFFF

La variation du cycle pattern indique qu'il y a certainement transfert de l'image au moins en partie pendant l'affichage, avec manipulation du cycle pattern en cours d'affichage pour permettre ce transfert. En effet, l'affichage du bitmap nécessite la totalité des accès sur les partitions de VRAM qui le contiennent (au moins une rangée de valeurs 4), limitant le transfert possible au hblank. Possible donc que le transfert de l'image commence dans la bande noire en bas de l'écran et/ou se termine dans la bande noire en haut.

Dans la version PAL, Kronos affiche toujours la valeur de cycle pattern qui permet l'affichage du bitmap. Le vblank étant nettement plus long en 50 Hz (la version PAL a la même résolution verticale que l'US, 224), cette version n'a peut-être pas besoin de manipuler le cycle pattern en cours d'affichage, en tout cas pas au moment où Kronos prend en compte sa valeur. Cela expliquerait l'absence de clignotement dans cette version.

Testé avec le CD US.

FCare commented 9 months ago
************************** LINE 213
e e e e 4 4 4 4
f f f f f f f f
f f f f f f f f
c f f f f f f f
========================================
************************** LINE 213
e e e e e e e e
f f f f f f f f
f f f f f f f f
c f f f f f f f
========================================
************************** LINE 3
4 4 4 4 e e e e
f f f f f f f f
f f f f f f f f
c f f f f f f f
========================================
************************** LINE 3
4 4 4 4 4 4 4 4
f f f f f f f f
f f f f f f f f
c f f f f f f f
========================================

Need to handle cycle pattern update per line...