1

Hello,

J'ai enfin terminé la "démo" megadrive sur laquelle je bossais depuis quelque temps, à la base c'est une vidéo youtube qu'on retrouve sur pas mal de machine retro à cause du "ton" monochrome.

J'ai fait 2 versions car la taille totale faisant 8 Mo, peu d'émulateurs ou de flashcarts peuvent le gérer correctement.

Lien Youtube :

www.youtube.com/watch?v=2vPe452cegU

Code source (avec les données de la première partie) :

https://dl.dropbox.com/u/93332624/dev/megadrive/demo/BadApple_src.7z

4 MB version :

https://dl.dropbox.com/u/93332624/dev/megadrive/demo/BadApple_p1.bin
https://dl.dropbox.com/u/93332624/dev/megadrive/demo/BadApple_p2.bin

8 MB version :

https://dl.dropbox.com/u/93332624/dev/megadrive/demo/BadApple.bin

Pour ceux qui ont une flashcart, vous pouvez tester directement sur votre megadrive smile
A noter que la version 8 MB ne fonctionne que sur la flashcart Mega Everdrive ou sur un émulateur modifié comme celui-ci :
http://umk3.hacking-cult.org/2.11hack.zip

Techniquement la vidéo utilise la résolution complète de la MD (NTSC) soit 320x224 et tourne en 30 FPS en 4 niveaux de gris. Ce n'est pas habituel de voir ce genre d'animation sur MD mais je voulais montrer que c'était réalisable qui plus est, en gérant la décompression...
A cause du faible espace restant dans la ROM après la vidéo j'ai du utiliser un codec 4bit @ 13 Khzce qui limite la qualité audio, cela dit, ce n'est pas si mauvais wink
avatar

2

Je ne peux pas tester mais je te fais confiance, bravo pour cette performance smile

Quel codec as-tu utilisé pour la vidéo ?

avatarZeroblog

« 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

3

Vu le nombre de pixels et la lenteur relative d'écriture à la VRAM je pense que le codec doit être assez simple. (Stef me corrigera ; par contre c'est quoi l'efficacité en taille par rapport à du RAW/DMA ?)
Sinon je ne peux pas tester, je n'ai pas d'émulateur sur cette machine, mais je jetterai un oeil. Je m'en délecte d'avance en tous cas. smile
avatarHighway 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

4

Merci smile

A la base je suis parti d'une vidéo sur youtube en haute résolution que j'ai réduis en 320x224.
En RAW brute, même en 320x224, 2bpp, la vidéo pèse environ 120 Mo ! Heureusement elle se compresse bien car 90% est en noir et blanc (les niveaux de gris sont surtout utilisés pour faire des bords plus smooth). J'ai fait un codec maison pour d'abord faire rentrer la vidéo dans 4 Mo, ça m'a pris beaucoup de temps mais j'ai fini par y arriver.
Le problème c'est que le codec était trop complexe et je n'arrivais pas à le décompresser à un débit suffisant (30 FPS). J'ai simplifié le codec, du coup la vidéo est passée à 6.5 Mo mais j'ai pu la décompresser suffisamment vite.
En gros je gère un tilemap compressé en RLE (customisé) avec des "plain" tiles et des "custom" tiles. Les tiles custom ont plusieurs schémas de compression dont des dictionnaires qui représentent la majeur partie. Je pense mettre les sources à disposition bientot meme si c'est pas de grand interet (les versions intermédiaires étaient techniquement plus interessantes).

Vous pourrez trouver plus de détails sur ce topic où j'ai retranscrit un peu les progrès au fil du développement :
http://www.sega-16.com/forum/showthread.php?19027-Bad-Apple-demo-thread

Si j'avais fait du pur RAW DMA comme je l'ai mis plus haut ça m'aurait fait du 120 Mo à la place des 8 Mo wink
Et surtout je n'aurais pas pu maintenir un tel frame rate (20 FPS en utilisant l'astuce de 2 tiles en 1 grace au 2bpp).
L'écriture en VRAM est très rapide quand t'es en blank grace au DMA, mais vu la taille du blank en NTSC, effectivement la bande passante n'est pas énorme.
A noter que la démo est faite pour fonctionner sur une machine NTSC car la vidéo est en 30 FPS, sur une machine PAL le son se désynchronize assez vite...



avatar

5

-

6

Stef (./5) :
Je pense mettre les sources à disposition bientot meme si c'est pas de grand interet (les versions intermédiaires étaient techniquement plus interessantes).

From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
Newsgroups: comp.os.minix
Subject: What would you like to see most in minix?
Summary: small poll for my new operating system
Message-ID:
Date: 25 Aug 91 20:57:08 GMT
Organization: University of Helsinki


Hello everybody out there using minix -

I'm doing a (free) operating system (just a hobby, won't be big and
professional like gnu) for 386(486) AT clones. This has been brewing
since april, and is starting to get ready. I'd like any feedback on
things people like/dislike in minix, as my OS resembles it somewhat
(same physical layout of the file-system (due to practical reasons)
among other things). (...)

Ca n'ira peut être pas juste que là mais le code qui marche est toujours plus intéressant partagé que sur ton disque dur smile

7

Merci pour les commentaires smile

Je viens de rajouter une version 8 MB de la rom, de même j'ai corrigé le problème rencontré sur Gens smile
Voir le premier post !
Pour les sources en effet, ça peut toujours interesser quelques personnes wink
avatar

8

Merci pour les explications !

De mon côté j'avais commencé à porter cette même vidéo sur Jaguar, avec un codec "maison" aussi (mais avec un principe un peu différent), d'où mon intérêt sur la question tongue
avatarZeroblog

« 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

9

Je viens de tester et ouais c'est vraiment impressionnant. top Imagine seulement la claque si on avait eu ça sur notre Mega Drive à l'époque...
Je pense que je vois le principe (c'est sûr que la façon dont la vidéo est faite permet d'avoir des tiles toutes blanches ou toutes noires, et j'imagine qu'il y a aussi des frames que tu peux sauter). Le son rend vraiment bien en 13 kHz, tu as resamplé avec Audacity ?
Au fait, ma mémoire me fait défaut, mais le 2 bits par pixel est géré nativement en mode 5 ou tu es dans un mode de rétrocompatibilité Master System ? Si c'est le cas tu peux donc DMA'er les tiles et la map, et le nombre de tiles à transférer par frame est variable, c'est ça ?
avatarHighway 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

10

Zerosquare> Je suis impatient de voir ta version jaguar smile T'as commencé à bosser dessus ?

Brunni>
Oui effectivement y'a pas mal de tiles pleins (noir ou blanc), du coup tu met ça dans le tilemap, que tu compresses ensuite (en RLE customisé dans mon cas) sinon en RAW ça ferait quand meme 14 Mo wink
Pour le son j'ai pris un WAV que j'ai resamplé dans Wavosaur (un vieil outil mais bien pratique), il est même compressé avec un codec DPCM 4 bit maison très simple, malgré tout le résultat n'est pas trop mal. Là ou je me suis bien embêté, c'est que le démo nécessite une utilisation intensive du DMA de la MD, et dans ce cas c'est pas évident d'avoir du son PCM de bonne qualité (c'est pour cela qu'on a souvent des voix qui grésillent sur MD)... Avec le driver Z80 de base la qualité était exécrable mais en se donnant un peu de mal avec un driver adapté on peut avoir un son niquel smile
Le mode 2bpp n'est ni géré en mode 5 ni en mode 4 (compatibilité SMS). Les 2 modes sont en 4bpp. J'ai utilisé une astuce assez simple avec la palette qui permet de stocker 2 tiles 2bpp en 1 tile 4bpp, il faut juste que tu modifies la palette de couleur à chaque frame... aussi forcément tu perds un peu en compression (car un tile blank sur une frame ne l'est pas forcément sur la suivante). Lors de grosse différence entre 2 frames, le nombre de tiles à balancer en VRAM peut être assez important... je suis pas loin de débit max du DMA par moment (car effectivement y'a la palette + tilemap + tiles).
avatar

11

Stef > j'avais pas dépassé le stade de l'écriture du codec. Mon but c'était moins de 4 Mo (sans le son) pour du 320x224 30 fps, en 1 bpp par contre. J'en étais arrivé à ~4.6 Mo. Faudrait que je m'y remette hehe
avatarZeroblog

« 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

12

Stef: c'est pour ça que le "sééégaaaa" au démarrage de la console est pourrave? grin

13

Haha pourtant la voix SEGA est loin d'être la plus pourrave, moi je pense surtout à SF2, ils auraient vraiment pu faire mieux :-/
avatar

14

chuis pas assez gamer pour avoir connu grin

15

Tu n'as pas connu Street Fighter 2 sur megadrive ???
avatar

16

Dju, impressive, really impressive grin
avatarSpartine, la fille que ce soir elle dîne en enfer: http://www.spartine.com

Pockett Videogames, le site de toutes les consoles portables!: http://www.pockett.net

J'aime beaucoup faire des dessins aux petites filles! C'est ma passion.

17

18

Ok smile Bon disons que les voix de la version MD (comparé à la SNES) étaient bien pourraves grin
avatar

19

J'ai été voir une vidéo youtube, et je ne sais pas si c'est le fait d'avoir eu la version SNES mais musicalement je trouve le portage pas terrible. Pour le reste ça a l'air d'aller.
avatarHighway 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

20

C'est vrai que pour les musiques et les voix surtout, le boulot a été un peu baclé je trouve.
D'ailleurs certains se sont amusé à refaire les musiques de certains niveaux :
https://www.youtube.com/watch?v=zEXaw7qo4L0
Ca rend bien mieux que l'original wink
avatar

21

J'ai rajouté le code source pour ceux qui ça intéresse :

https://dl.dropbox.com/u/93332624/dev/megadrive/demo/BadApple_src.7z

avatar

22

top
avatarZeroblog

« 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

23

Ah oui vu que t'as un 68000 sur la jaguar ca peut toujours servir (y'a pas mal de code assembleur...)
Enfin bon, sans le codec c'est pas si utile (j'ai développé un outil à côté en java pour encoder la vidéo)... ou alors tu conserves exactement le même format en 320x224 et tu portes betement la première partie de la vidéo en utilisant un système d'affichage qui simule celui de la MD wink
avatar

24

C'est pas vraiment le but, je voulais essayer de faire mon propre codec, sinon c'est de la triche tongue (raison pour laquelle je n'ai pas regardé tes sources pour le moment ^^)

Mais c'est toujours sympa de filer les sources smile
avatarZeroblog

« 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

25

Ah bah tu peux regarder les sources quand même, comme je te dis, ça te sera pas forcément utile, sauf si tu pompes directement le truc mais comme tu dis ça sera moins interessant pour toi wink Mais en tout cas le bon côté des choses, si c'est faisable sur MD, ça l'est forcément sur jaguar smile
avatar

26

-

27

Stef (./10) :
Le mode 2bpp n'est ni géré en mode 5 ni en mode 4 (compatibilité SMS). Les 2 modes sont en 4bpp. J'ai utilisé une astuce assez simple avec la palette qui permet de stocker 2 tiles 2bpp en 1 tile 4bpp, il faut juste que tu modifies la palette de couleur à chaque frame...

Très bonne idée smile Et ouais je me suis mélangé les pinceaux (un peu la honte ayant fait un ému pour cette machine) la SMS c'était déjà 4 bits avec beaucoup de VRAM. smile
avatarHighway 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

28

Stef (./26) :
Mais en tout cas le bon côté des choses, si c'est faisable sur MD, ça l'est forcément sur jaguar smile.gif
Tout-à-fait, mais du coup, faut que je fasse mieux sur Jaguar, sinon ça n'a pas d'intérêt ^^

avatarZeroblog

« 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

29

Je n'ai pas regardé son code, mais je peux en tous cas dire qu'il utilise des astuces très intelligentes qui permettent de tirer le meilleur parti de la machine. Ce n'est pas forcément certain que la Jaguar serait capable d'en faire de même, ou alors il faut trouver d'autres astuces autant efficaces sur cette dernière.
avatarHighway 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

30

Brunni (./29) :
Je n'ai pas regardé son code, mais je peux en tous cas dire qu'il utilise des astuces très intelligentes qui permettent de tirer le meilleur parti de la machine. Ce n'est pas forcément certain que la Jaguar serait capable d'en faire de même, ou alors il faut trouver d'autres astuces autant efficaces sur cette dernière.


Certes mais tout de même, tu as probablement le même genre d'astuce sur Jaguar et quand même beaucoup plus de puissance brute.

Zerosquare>
J'aurais bien aimé avoir 8 niveaux de gris (contre 4 actuellement) pour avoir des dégradés plus fins... ca peut être une des améliorations possibles sur une éventuelle version Jaguar (tu peux surement monter même à 256 niveaux de gris sur cette machine). De même que la résolution, tu dois pouvoir faire plus fin, bien sur après ça va bouffer plus de rom wink
avatar