:: PlayerAdvance.org ::  

Précédent   :: PlayerAdvance.org :: > :: Développement Amateur :: > Autres > Projets

Projets Projets de développement amateur sur d'autres supports

Publicité

Réponse
 
Outils de la discussion Modes d'affichage
Vieux 10/12/2018, 11h20   #1
Brunni
Super Modérateur
 
Date d'inscription: 10/11/2005
Localisation: Un pays avec beaucoup de banques
Messages: 3 229
Par défaut PatrickBoy: the return (fantasy console 16 bits by Brunni)

Certains se souviennent peut être de la PatrickBoy RGB: http://playeradvance.org/forum/showthread.php?t=32838

Dernièrement la nostalgie m'étant revenue j'avais envie de faire des petits jeux style 16 bits, mais j'avais envie de pouvoir jouer avec plus de puissance qu'une Mega Drive. La GBA aurait été parfaite j'avais un peu envie de la faire "revivre" (enfin l'esprit) sur une plate-forme moderne. En effet, les outils modernes offrent un modèle de programmation pour la 2D qui a des avantages, mais est complètement différent. Si tu veux faire des effets linescroll, reprogrammer la palette, faire des rotations de couleur, animer des tiles, etc. c'est juste pas aussi simple et marrant.

J'ai donc eu l'idée de faire une console virtuelle mais qui n'aurait que la partie graphique émulée, qu'on programme en Javascript et qui donne un jeu web. L'émulation se ferait sur le GPU pour un max de performances (et le challenge). Les capacités sont assez similaires à une GBA, regardez plutôt :

- 4 BGs, pouvant être scrollés, redimensionnés et rotationnés, masqués (window, sauf qu'un BG n'appartient qu'à une window), supportant une combinaison d'alpha blending et addition entre eux. Possibilité de reprogrammer les 6 paramètres (équivalents à PA, PB, PC, PD, HOFS, VOFS sur GBA) à chaque ligne ou même colonne pour des effets comme Mario Kart, etc.
- 2048 tiles par BG, pouvant chacune utiliser une de 16 palettes.
- J'avais aussi prévu bit de priorité par tile mais je ne le mettrai peut-être pas car c'est super dur à implémenter avec la transparence (d'ailleurs la GBA avait une circuiterie merveilleuse et complexe pour les effets d'alpha blending ).
- 512 sprites (dont 32 pouvant utiliser la transparence), pouvant être étirés et/ou mirrorés individuellement.
- Mode 16 et 256 couleurs par sprite/BG. Total 256 palettes parmi 4096 couleurs (la master palette est en 16 bit RGBA4444).
- Résolution: 320x240 (4:3) ou 400x224 (16:9)

<= ce truc dégueu tourne avec l'état actuel du moteur

Les graphismes du jeu sont convertis avec un outil ressemblant à GBA Graphics, qui produit une image qui est chargée sur le GPU. On l'utilise comme base pour la VRAM, et elle contient donc tout le jeu (dont tous les graphismes sont accessibles à tout moment). Elle peut faire jusqu'à 4 Mo (extensible à 16 dans le futur), et est accessible en lecture et écriture par le programme.

L'outil de conversion prend un fichier comme ceci (les fichiers source genre mario.png n'auront pas à être inclus avec le jeu, et le .tmx est une map pour Tiled):

Code:
palette Persos {
	sprite mario: 'mario.png'
	sprite luigi: 'mario-luigi-2.png' [rect(80, 20, 96, 36)]
}

palette Level1 {
	map mainbg: 'mainbg.tmx'
}

palette Level1-brighter {}
Ensuite le code du jeu a la forme suivante:

Code:
function *main(vdp) {
	while (true) {
		vdp.drawBG('mainbg');
		vdp.drawObj('mario', 0, 0);
		yield 0;	// Wait VBLANK
	}
}
Le vdp donne des fonctions permettant d'accéder à la mémoire par blocs, et peut directement prendre des noms d'objets définis dans l'outil de conversion.

Code:
function *main(vdp) {
	// Modify palette
	const colors = vdp.readPalette('Level1');
	colors.forEach( (col, index) => {
		colors[index] = color16.multiply(col, 2.0);
	});
	vdp.writePalette('Level1-brighter', colors);

	// Copy tile 2 over tile 1 (simulates arbitrary DMA)
	const tile2 = vdp.readSprite(vdp.tileset('mainbg').tile(2));
	vdp.writeSprite(vdp.tileset('mainbg').tile(1), tile2);

	while (true) {
		// Normal intensity
		vdp.drawBG('mainbg');
		// x2 color intensity
		vdp.drawBG('mainbg', { palette: 'Level1-brighter', scrollX: 2 });
		// Use custom palette and grow our Mario up
		vdp.drawObj('mario', 0, 0, { palette: 'Luigi', width: 32, height: 24 });
		yield 0;
	}
}
Je suis en train d'implémenter pour l'instant, et la plupart des contraintes sont configurables (par exemple la palette peut aussi être définie en 32-bit RGBA, les limites de BG et sprites levées, etc.). L'idée c'est avant tout de s'amuser, découvrir comment qu'on codait à l'époque, et pouvoir obtenir ces effets "arcade" quasi impossibles autrement. L'idée de la petitesse (en terme de mémoire) des jeux imposée par les contraintes est, si intérêt il y a, de les héberger quelque part voire d'avoir une communauté qui se forme autour c'est également pensé pour tourner sur toutes les plate-formes mobile/desktop de ces dernières années, donc dans l'absolu on pourrait même en faire une vraie console (si on changeait le javascript par un langage custom & volontairement limité en instructions/seconde) ou un interpréteur tournant sur console.

Alors, qui que ça intéresse ?
Brunni est déconnecté   Réponse avec citation
Vieux 10/12/2018, 21h25   #2
PypeBros
Membre confirmé
 
Date d'inscription: 15/10/2007
Messages: 69
Par défaut

intriguant ...
PypeBros est déconnecté   Réponse avec citation
Vieux 11/12/2018, 10h07   #3
Brunni
Super Modérateur
 
Date d'inscription: 10/11/2005
Localisation: Un pays avec beaucoup de banques
Messages: 3 229
Par défaut

Merci =) Enfin un peu plus d'infos ?
Brunni est déconnecté   Réponse avec citation
Réponse

Liens sociaux

Publicité



Utilisateurs regardant la discussion actuelle : 1 (0 membre(s) et 1 invité(s))
 
Outils de la discussion
Modes d'affichage

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Navigation rapide

Discussions similaires
Discussion Auteur Forum Réponses Dernier message
[PSP] 3036 - Geronimo Stilton - Return to the Kingdom of Fantasy Release List PSP 0 23/07/2013 19h30
Snes Pourquoi la Snes est-elle la meilleure console de tous les temps ? archilolo Articles 92 07/07/2010 22h43
[Divers] PMP (Portable Game & Media Player) : La nouvelle console cheap! vgiant Articles 46 07/01/2010 13h46
[Projet] PatrickBoy Brunni Projets 9 23/06/2009 23h06


Fuseau horaire GMT +2. Il est actuellement 09h11.


Édité par : vBulletin® version 3.7.2
Copyright ©2000 - 2023, Jelsoft Enterprises Ltd. Tous droits réservés.
Version française #16 par l'association vBulletin francophone
Design par Ass-Itch, DJP et Dr.Vince