1

bonjour à tous,

je m'interroge sur la vitesse du blitter de la JAG
j'ai fait un petit test en 68000 rapide, et je n'arrive à copier que 89 lignes en pixel mode, de 320 pixels en 8 bits par frame, à 60 fps
( je copie ligne par ligne, volontairement, pas d'un bloc)
si j’enlève le move vers B_CMD, le temps pris par le 68000 n'est pas très élevé.
j'en conclus donc que le blitter est super lent en fait.

et je me dis que même controlé par le gpu, il ne sera toujours pas capable de copier un écran entier en 320x256 par vbl ?

je veux bien vos retours d’expérience sur le sujet ?
avatar

2

C'est pas la taille de la VBL justement 89 lignes ? Ptet qu'il y a un truc où il se limite à une ligne de copie par ligne ?
avatar
Highway Runners, mon jeu de racing à la Outrun qu'il est sorti le 14 décembre 2016 ! N'hésitez pas à me soutenir :)

https://itunes.apple.com/us/app/highway-runners/id964932741

3

c'est moi qui le limite a copier ligne par ligne, volontairement, puisque c'est ce que je veux tester, voir la viabilité pour l'effet graphique à produire.
avatar

4

j'ai trouvé des infos ici :
https://www.mulle-kybernetik.com/jagdox/blitter.html#modes

Copyblit pixelmode : 13.3 / 5 = 2.7 Mio pixels / second
or ca. 44000 pixels / frame

a priori cohérentes avec mes tests ?

c'est quand meme fou un blitter pas capable de recopier un ecran entier par vbl.
avatar

5

c'est le gros problème que j'ai eu avec mes jeux de platforme, basé sur des map de tiles, j'ai pas réussi a trouver une astuce pour faire du scrolling multidirectionnel via des listes d'OP (trop complexe), donc je recopiait tout au blitter, pour des tiles de 32x32 ça passait juste, mais pour du 16x16 c'était mort

6

SCPCD a été invité sur ce sujet.

Il doit pouvoir expliquer tout ça smile

Artemis > je ne sais pas comment c'est implémenté, mais Raptor permet de faire des jeux comme ça.
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

7

Quand le Blitter est activé en "pixel mode", chaque pixel est traité un a un.

Donc un blit de 320p, il va y avoir 320 [lecture+écriture].

Pour les mesures précise :
Blitter TimingJagware This topic goal is to give informations about different timing acces for the blitter and to know more about blitter operating.   First of all, the exemple ...


En gros, chaque pixel copié en DRAM => DRAM va prendre 11 cycles.
en 320p ça fait 3520 cycles. (sans compter l'overhead de configurer le Blitter)

Une ligne prenant 63.55µs ce qui fait environ 1689 cycles, on voit que la copie en pixel mode va prendre 2 lignes pour effectuer la copie.
Ou dit autrement, 1 frame correspond à 443166 cycles, donc on peut faire en théorie un maximum de 443166/3520 = 125 lignes.
Mais ça c'est si il n'y a que le blitter qui travail, si tu affiches en même temps, il faut retirer le temps d'accès de l'OP (et des autres CPU). Donc ça doit approcher de tes observations.


Si tu fais de simple copies (ie : que tu ne fais pas de modification des pointers dans la inner loop), il faut utiliser le phrase mode qui sera bien plus rapide.
avatar

8

ok merci c'est clair
et comme je veux faire du scaled, je suis bloqué en pixel mode il me semble ?
meme si il ne s'agit que d'updater le pointeur source
donc impossible de faire un scaled d'un gros bout de l'ecran au blitter
et le scaled de l'object list avec sa précision à 5 bits pour la virgule est très limité.
avatar