Vieux projet : AmigaGS ( AmigaOS3.x )

5 sujets de 1 à 5 (sur un total de 5)

  • AmiDARK

    • Messages : 3040
    #194912

    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.
    @+
    AmiDARK

    Anonyme

    • Messages : 4096
    #194956

    Super 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.

     

    sayasupacrew

    • Messages : 3988
    #195030

    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.

    AmiDARK

    • Messages : 3040
    #195284

    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

    b0ris747

    • Messages : 1049
    #195290

    J’aime les SDK bien faits et biens documentés… Je te souhaite du courage et de la réussite 🙂

    35m2 == 35m3 de matos - Membre de l'ART

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 )

Amiga Impact