168Fermer170
FadestLe 22/12/2008 à 10:55
Salut et bienvenue,

Si je comprends bien, tu es plus orienté programmation assembleur que C ?
Pour les archives de yaronet, je ne sais pas trop...
Pour AOL,c'est un coup dur, c'est sur.

Tu devrais trouver pas mal d'infos sur les sites internationaux, en particulier allemand (je pense que quelques liens sont sur un autre topic ici).
en particulier sur AtariAge.
Sinon, tu peux jeter un oeil à ce truc que j'avais commencé et pas continué : http://fadest.free.fr/spip

En assembleur, tu devrais moins souffrir qu'avec le C pour te faire un environnement de développement, mais attention, ce n'est pas le même programme pour compiler que l'assembleur du kit C.
Ensuite, les concepts de tout est sprite, de structures de sprites & co sont identiques en C et assembleur, donc une partie de ce topic pourra t'aider sur un point de vue théorique.
Tu dois utiliser lyxass et non ra65.
Pour SPRPCK, il ne faut plus utiliser l'option -p0 (qui génère les objets au format C)
SPRPCK -t6 image.bmp pour générer un objet sprite au format assembleur (format .spr)

Je te mets un exemple non fonctionnel (j'ai viré le pavé central qui en plus est très mal programmé en assembleur) pour te montrer un peu la phase init et comment afficher un sprite.

***************
* RAW.ASM
* simple body of a Lynx-program
****************
NEWHEAD	    set 1
LoadPckUser set 1
LoadPrgUser set 1

		path "f:\lynx\bll\macros"

		include <hardware.asm>
* macros
		include <help.mac>
		include <if_while.mac>
		include <mikey.mac>
		include <suzy.mac>
		include <file.mac>
		include <irq.mac>
		path
		path "f:\lynx\bll\vardefs"
* variables
		include <help.var>
		include <mikey.var>
		include <suzy.var>
		include <file.var>
		include <irq.var>
		path
*
* vars only for this program
*
MACRO SHOW
LDAY \0
jsr DrawSprite
ENDM

BEGIN_ZP
selected	ds	1
tempo		ds	2
tempb		ds	1
irq_vektoren	ds	16
END_ZP

BEGIN_MEM
ALIGN #4
screen0	ds SCREEN.LEN
END_MEM

		run  $E000 ; code somewhere

Start::			; Start-Label needed for reStart
                INITMIKEY
                INITSUZY
                CLEAR_MEM
                CLEAR_ZP +STACK ; clear stack ($100) too
                INITIRQ irq_vektoren
		SCRBASE	screen0
                FRAMERATE 60
                SETRGB pal

				 
                lda #0
                sta selected
                lda #0
                sta tempo

				
.loop

	    	lsr cls                          ; clear screen with color #0
            	jmp .menu


.keyloop
		lda $fcb0                          ; joystick
		beq .keyloop
		bit #$01 ; test bouton A


ici, c'est la partie coupée, je fais mes tests de touches pour le menus, en particulier la gestion des tips pour les jeux cachés...

		WAITNOKEY
		jmp .loop

.menu
           SHOW menu_SCB
.menu2
           SHOW star_SCB
	   jmp .keyloop

****************
cls::
				LDAY clsSCB
				jmp DrawSprite

clsSCB          dc.b $c0,$90,$00
				dc.w 0,cls_data
				dc.w 0,0                        ; X,Y
				dc.w 160*$100,102*$100          ; size_x,size_y
cls_color       dc.b $00

cls_data        dc.b 2,$10,0

****************
* INCLUDES
                path
		path "f:\lynx\bll\includes"
                include <irq.inc>
		include <file.inc>
		include <draw_spr.inc>


pal:	DP FEF,9BD,CFF,086,DDD,6FB,9FC,4B7,294,6D6,9D9,AD9,CE7,229,F0F,000
pal2	DP 164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164
* Spritedaten
          path
          path "f:\yastuna0\menu"


menu_SCB
          dc.b $C0,$10,$00
          dc.w 0
          dc.w menu_data  ; pointer to spritedata
          dc.w 0          ; X position
          dc.w 0          ; Y   "
          dc.w $100       ; X scale by faktor 1,0
          dc.w $100       ; Y 1,? - fraction is changed
          dc.b $01,$23,$45,$67,$89,$AB,$CD,$EF


star_SCB
          dc.b $C7,$10,$00
          dc.w 0
          dc.w star_data  ; pointer to spritedata
STARX     dc.w 10         ; X position
STARY     dc.w 20         ; Y   "
          dc.w $100       ; X scale by faktor 1,0
          dc.w $100       ; Y 1,? - fraction is changed
          dc.b $01,$23,$45,$67,$89,$AB,$CD,$EF


menu_data ibytes "menu.spr" 
star_data ibytes "star.spr" 


Voilà, j'espère que ça pourra t'aider pour faire un premier programme.
derrière, si tu maitrises le 6502, ça devrait aller "vite".
Pour changer la coordonnée du sprite STAR, il suffit de faire
lda #80
sta STARX
lda #12
sta STARY
vu que les variables STARX et STARY sont déclarées au niveau du SCB de STAR
Il manque aussi la gestion des écrans logiques et de collision (plus dispensable) et je ne sais pas faire.

Malheureusement, comme tu peux le deviner, je ne suis pas expert en assembleur, j'ai réussià adapter un truc pour mes besoins pour le menu.
De plus, je pars en vacances, donc je devrais peu être présent d'ici le début 2009, mais j'espère que ça aura pu t'aider un peu.