Vieux projet : AmigaGS ( AmigaOS3.x )
5 sujets de 1 à 5 (sur un total de 5)
-
Salut,
J’ai toujours les sources et la dernière version d’un projet que j’avais créee il y a plusieurs années en arrière pour Amiga OS 3 et AGA : Amiga Game Studio.
Il s’agissait d’un pack de librairies qui s’auto-configurait pour permettre d’utiliser au mieux la machine présente pour créer des jeux vidéo.
Le principe est simple.
On ouvre 1 librairie principale qui elle va détecter le CPU, le FPU, la configuration mémoire et utiliser les composants liés (genre charger une library pour le C2P selon le CPU).
L’objectif était de prémacher le travail du créateur de jeu en ayant au final un jeu d’appels de fonctions à utiliser sans se soucier de quelle librairie utiliser.Voici un exemple de programme (en assembleur 68020) qui utilisait le principe AmigaGS :
; ************************** ; * * ; * AMIGA GAME STUDIO BETA * ; * * ; *------------------------* ; * * ; * Example de viewer pour * ; * des images iff/ilbm de * ; * 2 à 256 couleurs . * ; * * ; ************************** ; ; Fichier startup de AGS. Include "AmigaGS:AmigaGS-Startup.s" ; ; ; Mise en place du copper AGA. LibCall Display,Ags_Display ; ; On prend les valeurs IFF/ILBM Lea.l Ilbm,a0 LibCall FxIlbm,IlbmXSize SaveL D0,X ; Lea.l Ilbm,a0 LibCall FxIlbm,IlbmYSize SaveL D0,Y ; Lea.l Ilbm,a0 LibCall FxIlbm,IlbmDepth SaveL D0,Depth ; ; Ouverture de l'ecran necessaire. Lea.l X,a0 Moveq.l #0,d0 ; Ecran 0 Movem.l (a0)+,d1/d2/d3 ; X,Y,Depth. LibCall Screens,Screen_Open ; On place l'ecran dans le display AmigaGS. Moveq.l #0,d0 LibCall Screens,Screen_Base LibCall Display,Ags_Screen ; On va convertir l'image IFF/ILBM Dans l'ecran. Moveq.l #0,d0 LibCall Screens,Screen_Base Lea.l Ilbm,a1 LibCall FxIlbm,IlbmConvert ; Pour finir,On va placer la bonne palette de couleur. Lea.l Ilbm,a0 LibCall FxIlbm,IlbmPalette ; ->A0=palette base Lea.l CMAP,a1 Move.l a0,(a1) LoadL Depth,d0 Lsl.w #1,d0 Lea.l DepthMask,a4 Add.w d0,a4 Lea.l Depth,a0 clr.l (a0) ; ; On redéfinit ??? couleurs selon le déssin. Lea.l Depth,a1 LoadL CMAP,a3 LoadL Depth,d0 Add.l #4,a3 bcl2 Clr.l d1 Move.b (a3)+,d1 ; D1=ROUGE. Clr.l d2 Move.b (a3)+,d2 ; D2=VERT. Clr.l d3 Move.b (a3)+,d3 ; D3=BLEU. LibCall Display,Ags_SetColor Lea.l Depth,a0 Addq.l #1,(a0) Move.l (a0),d0 ; D0=Prochaine couleur. Cmp.w (a4),d0 Blt.b bcl2 ; ; On attend l'appui sur le bouton gauche de la souris. wlc LibCall Joyport,Joy0Fire1State Tst.b d0 Beq.b wlc ; On revient au workbench,on remet tout à 0 et on quitte. _Fin1: LibCall Display,WB_Display ScreenClose #0 Moveq.l #0,d0 Rts ; ; Autres librairies définissables par l'utilisateur ; X: Dc.l 0 Y: Dc.l 0 Depth: Dc.l 0 CMAP: Dc.l 0 DepthMask: Dc.w 0,2,4,8,16,32,64,128,256 Ilbm: Incbin "AmigaGS:Samples/AmigaGS.lbm"
Comme vous pouvez le voir, le système utilise des MACROS pré-définies.
Exemple: LibCall Display,Ags_Display
Qui appelle la library « Display » qui dépendra de votre chipset graphique. Sachant que toutes les library gérant les chipset graphiques auront une fonction interne Ags_Display qui activera l’affichage de l’AmigaGS sur le chipset approprié.Exemple: LibCall Display,WB_Display
Qui appelle la fonction « WB_Display » de la library « Display » de votre chipset graphique pour rendre la visualisation au Workbench et ainsi fermer l’affichage de l’AmigaGS.Si certains sont intéréssés par le KIT dans son état actuel, je peux leur envoyer en message privé.
Les fonctions/Macros actuellement disponibles sont les suivantes :
Graphiques : InitDisplay CloseDisplay WaitVbl RefreshCopper SetColor ScreenOpen ScreenClose CurrentScreenBase MakeMosaic Memory : ReserveChip ReserveFast ReservePublic Reserve24BitDMA EraseBank EraseAllBanks CheckBankBase System Wait LibCall
Fonctions Library utilisables via un LibCall :
FileIO LoadFile SaveFile LoadCustomFile Joystick Joy0State Joy1State Joy0Fire1State Joy0Fire2State Joy0Fire3State Joy1Fire1State Joy1Fire2State Joy1Fire3State ArrowsKeysState Castle3DEngine --Not Documented-- Graphics/Chunky Set_ChunkyBase Set_ScreenBase Set_ChunkySize Chunky_Convert Chunky_Plot Graphics/Display Ags_Display WB_Display Ags_WaitVbl Ags_Screen Ags_SetColor Ags_Copper Refresh_Copper Screen_Offset YDisplaySize Graphics/ILBM IlbmConvert IlbmXSize IlbmYSize IlbmDepth IlbmPalette Graphics/Mosaics Mosaic Graphics/Icons ReserveIcons EraseIcons GetIcon PasteIcon LoadIcons SaveIcons BaseIcons Graphics/Screen Screen_Open Screen_Close Screen_Base Screen CurrentBase ScreenClear Maths/FPMaths fmf_flt fmf_fix fmf_abs fmf_int fmf_add fmf_sub fmf_mul fmf_div fmf_cmp fmf_neg fmf_tst Memory/Banks ReserveAsChipData ReserveAsFastData ReserveAsPublicData ReserveAs24BitDMAData BankBase EraseBank EraseAllBanks Memory MemoryClear MemoryCopy System TasksOff TasksOn
Voila.
@+
AmiDARKSuper mec comme d’habitude !
je reviens une heure après et comme d’hab il n’y a que moi que ça intéresse.
On devrait faire un jeu Amiga tous les deux, sur lequel on ne serait que deux à jouer.
c’est vrai, j’ai toujours que l’on vienne comme tu l’as fais Amidark, laissé le code sur le forum, sa m’intrigue au plus haut point, de voir du code de comprendre ne serais ce que 1 %, j’en serais le plus heureux.
Sa me fascine.
https://www.youtube.com/@sayasupa
Merci pour vos commentaires.*
En fait, je pense peut-être reprendre ce projet en parallèle de l’AmiDARK Engine en le modifiant de façon à ce qu’il soit plus proche (niveaux fonctions & commandes) de l’AmiDARK Engine.
Histoire que cela apporte aux Amiga Classics un nouveau SDK permettant de créer des jeux plus rapidement :p
@+
AmiDARK
5 sujets de 1 à 5 (sur un total de 5)
- Vous devez être connecté pour répondre à ce sujet.
› Forums › AmigaOS, MorphOS et AROS › Développement › Vieux projet : AmigaGS ( AmigaOS3.x )