Re: Développement Shoot them up
Publié : dim. 03 janv. 2016 17:19
Oui tu peux utiliser les tableau car huc ne gère pas les structures, mais attention les tableaux sous huc sont lents . 

Code : Tout sélectionner
; set interrupt vector
setvec #VSYNC,vsync_proc
vec_on #VSYNC
setvec #HSYNC,hsync_proc
vec_on #HSYNC
; enable HSYNC interrupt
vreg #5
lda #$CC
sta video_data_l
sta vdc_crlCode : Tout sélectionner
; ----
; vsync_proc
; ----
; called every VSYNC
; ----
vsync_proc:
;vreg #6 ; restart the scanline counter on the first
st0 #6 ; restart the scanline counter on the first, sert pour du parallax
stw #$40,video_data ; #40 comme dans la doc de Tom, Scanline 0 starts at $40
rts
; ----
; hsync_proc
; ----
; called every HSYNC
; ----
hsync_proc:
; update the scrolling
st0 #7
stw <scr_offset,video_data
rtsOui il faut utiliser des tiles, mais les valeurs que tu vas afficher seront sensibles au scrolling donc pas forcement pratique .P.S. J'aimerai aussi afficher des valeurs à l'écran pour pouvoir tester en temps réel comme un debug.
Genre sur le côté de l'écran : posX: 120, posY: 160 Nbre Enn: 10
Je vais pas utiliser des sprites, il y a un moyen en asm de faire ça ?
Nan l'écran virtuel est juste là pour dire au VDC quand il doit faire le wrap around avec la tilemap .J'ai réussi avec des valeurs plus élevées. Ca doit dépendre de mon format d'écran virtuel mais c'est bon à savoir. J'ai testé est tout scroll nickel.
sous huc tu as des fonctions style load_default_font, set_font_pal,set_font_colors,put_string etc ..Je sais que je peux loader les font en asm comme huc mais effectivement pour l'instant j'arrive uniquement avec des tiles du background. Je vais me faire un gestionnaire de texte en partant de HUC, voir son code asm compilé pour m'en faire une version.
OK, je check ça. J'utilise aussi mednafen pour tester (et debugger). Comme ça j'ai deux check-up.Kaminari a écrit :Si tu bosses sur Ootake ou autre (ce qui semble être le cas), n'oublie pas d'activer la limite de sprites par lignes dans ton émulateur ou tu risques d'avoir de mauvaises surprises quand tu testeras ton code sur PCE.
Je veux bien ça serait sympa, comme ça je pourrais voir direct le code asm.Touko a écrit :Je peux te donner mes routines reprises de huc pour afficher du texte si tu veux,mais je n'ai repris que l'essentiel pour moi, CAD, put_number,put_string et put_hex largement suffisantes .
Oui c'est exactement pour ça ..Le Hsync servira surtout si on fait du parallax pour connaître la ligne où l'on se trouve.
Oui c'est un peu normal, elles sont adapté à mon kit, qui est dérivé de huc, donc pas compatible telles quelles, mais c'est plus parce que j'ai gardé des convention de huc, pour l'affectation auto des données dans les banks .'ai ajouté tes fonctions mais ça donne pas mal de messages d'erreurs. J'ai rajouté des macros manquantes mais je dois vraiment utiliser des includes différents des tiens.![]()
Code : Tout sélectionner
stw #.scrtab, numArray ; address of the character table
vreg #$02
CLY
CLX
.ld1
LDA [numArray], Y
STA $0002
st2 #$01
INY
... je boucle sur la longueur de mon tableau, pour chaque ligne je replace le registre X pour positionner les tiles ...
RTS
Code : Tout sélectionner
.scrtab:
.dw $0502,$0102,$0201,$0101,$0101,$0101,$0101,$0501 ; $XXYY = y=col1 x=col2
.dw $0101,$0101,$0101,$0101,$0101,$0101,$0101,$0101 ;1èere ligne / 32 tiles = 256pix
.dw $0104,$0105,$0102,$0103,$0100,$0101,$0102,$0103
.dw $0100,$0101,$0102,$0103,$0100,$0101,$0102,$0103
.dw $0106,$0107,$0102,$0103,$0100,$0101,$0102,$0103
.dw $0106,$0107,$0102,$0103,$0100,$0101,$0102,$0103
.dw $0104,$0105,$0102,$0103,$0100,$0101,$0102,$0103
.dw $0100,$0101,$0102,$0103,$0100,$0101,$0102,$0106
.dw $0401,$0102,$0201,$0101,$0101,$0101,$0101,$0501 ; $XXYY = y=col1 x=col2
.dw $0101,$0101,$0101,$0101,$0101,$0101,$0101,$0101 ;2ème bloc 1ère ligne / 32 tiles = 256pix
.dw $0104,$0105,$0102,$0103,$0100,$0101,$0102,$0103
.dw $0100,$0101,$0102,$0103,$0100,$0101,$0102,$0103
.dw $0106,$0106,$0102,$0103,$0100,$0101,$0102,$0103
.dw $0106,$0107,$0102,$0103,$0100,$0101,$0102,$0103
.dw $0104,$0105,$0102,$0103,$0100,$0101,$0102,$0103
.dw $0100,$0101,$0102,$0103,$0100,$0404,$0404,$0404
.dw $0502,$0102,$0201,$0101,$0101,$0101,$0101,$0501 ; $XXYY = y=col1 x=col2
.dw $0101,$0101,$0101,$0101,$0101,$0101,$0101,$0101 ; 3ème bloc pas lu car Y>255/ 32 tiles = 256pix
.dw $0104,$0105,$0102,$0103,$0100,$0101,$0102,$0103
.dw $0100,$0101,$0102,$0103,$0100,$0101,$0102,$0103
.dw $0106,$0107,$0102,$0103,$0100,$0101,$0102,$0103
.dw $0106,$0107,$0102,$0103,$0100,$0101,$0102,$0103
.dw $0104,$0105,$0102,$0103,$0100,$0101,$0102,$0103
.dw $0100,$0101,$0102,$0103,$0100,$0404,$0404,$0404
.dw $0401,$0102,$0201,$0101,$0101,$0101,$0101,$0501 ; $XXYY = y=col1 x=col2
.dw $0101,$0101,$0101,$0101,$0101,$0101,$0101,$0101 ; 4ème bloc pas lu / 32 tiles = 256pix
.dw $0104,$0105,$0102,$0103,$0100,$0101,$0102,$0103
.dw $0100,$0101,$0102,$0103,$0100,$0101,$0102,$0103
.dw $0106,$0106,$0102,$0103,$0100,$0101,$0102,$0103
.dw $0106,$0107,$0102,$0103,$0100,$0101,$0102,$0103
.dw $0104,$0105,$0102,$0103,$0100,$0101,$0102,$0103
.dw $0100,$0101,$0102,$0103,$0100,$0101,$0102,$0100
...Code : Tout sélectionner
; lo
lda <_si
clc
adc #low($ff)
sta <_si
; hi
lda <_si+1
adc #high($ff) ; 255>>8 = 0
sta <_si+1Code : Tout sélectionner
lda <_si
clc
adc #low($ff)
sta <_si
bcc .no_inc ; on incrémente la partie haute si on a une retenue
inc <_si+1
.no_inc: