1Fermer3
chickendudeLe 21/06/2011 à 18:28
Je viens de voir les images du jeu et je crois que c'est un très bon choix pour porter, je jeterai un coup d'oeuil à ton code un peu plus tard, mais je ne compte pas avoir beaucoup à dire smile Si tu veux, je peux poster mon mapper qui fait plus ou moins exactement la même chose avec quelques modifications: je dessine une colonne et un rang de plus pour m'aider avec le "smoothscrolling". Mais essentialment c'est un mapper de tiles 16x16 alignées et assez simple.
;lleva:
;de = xcoord
;b = y coord
dibMapa:
	add hl,de
	ld e,b
	ld b,a
	add hl,de
	djnz $-1
	exx
		ld hl,saferam1	;donde guardar el mapa antes de dibujarlo a la pantalla, es decir, el gbuf
		ld de,13		;numero de columnas en gbuf menos uno (por el inc hl')
		ld bc,$0705		;dibujar 7 columnas y 5 filas de sprites (en la pantalla caben 6x4))
dibFila:
		push hl	;guardar gbuf
	exx
	push hl		;save map loc
	ld l,(hl)	;numero del sprite
	ld h,0
	ld bc,tileData
	add hl,hl	;x2
	add hl,hl	;x4
	add hl,hl	;x8
	add hl,hl	;x16
	add hl,hl	;x32
	add hl,bc	;primer byte en sprite
	ld b,16		;16 filas en sprite
dibSprite:
	ld a,(hl)	;pixeles del sprite a dibujar
	inc hl		;proximo conjunto de pixeles
	exx		;cambiar a los registros alternativos
		ld (hl),a
		inc hl	;proximo byte en gbuf
	exx
	ld a,(hl)
	inc hl		;2º conjunto (pixels son 16x16: 2 bytes de ancho)
	exx
		ld (hl),a
		add hl,de	;bajar a la proxima fila
	exx
	djnz dibSprite
	
	pop hl		;posicion en el mapa
	inc hl
	exx
		pop hl	;gbuf anterior
		inc hl
		inc hl	;saltar dos bytes porque los sprites son de 16x16
		djnz dibFila
	
	exx
	ld a,(mapWidth)
	sub 7			;ya hemos avanzado un cierto numero de tiles
	ld e,a
	ld d,0
	add hl,de
	exx
		ld e,14*15	;
		add hl,de
		ld e,13
		ld b,7
		dec c
		jr nz,drawRow
	ret