Eteream escribió:Aquí me meto donde se muy poquito por lo que seguramente me equivoco, pero viendo un poco el código de la rom observo que cada dos píxeles realizas 2 move's y 3 sumas (o eran 3 move's y 2 sumas?), en cualquier caso, si precalculas valores por línea, CREO que puedes dejarlo en 2 sumas y un move. Seria útil si estás o vas a estar limitado por cpu.
Veo que eres muy curioso, yo también haría lo mismo si esta rom no fuera mía
. "Curiosear" el codigo de los juegos es una buena manera de aprender asm, o mejor aun leyendo el source de algún juego(como los "desensamblados" de sonic1 y 2) y aun mejor si esta comentado.
Precalcular valores por linea al final será peor, pero sí podría utilizar tablas pre-calculadas en rom, aunque el tamaño podría estar en mas de 500kB, no sé si valdrá la pena usar esa cantidad de rom solo para eso, pero si tuviera que hacerlo, lo haré.
[/quote]
Seguramente será muy tarde, pero... si no recuerdo mal por cada 2 píxeles calculabas el desplazamiento en la matriz final. Si dividimos ese desplazamiento en coordenadas X e Y verás que por cada línea Y es constante. Simplemente con almacenar ese deplazamiento Y en un registro y usar ese valor en la suma con desplazamiento X es suficiente.
Al generar la línea de dibujo sobre el "bitmap" original también pasa lo mismo, una línea al ser unidimensional una suma es suficiente para encontrar el siguiente píxel, precalculando el desplazamiento por línea. Esto, en parte me parece que ya lo hacías.
Así que si no recuerdo mal:
1) Una suma para calcular el desplazamiento en el "bitmap" original
2) Otra suma para calcular el desplazamiento en el "bitmap" de destino
3) El move para dibujar
Y por cada linea calcular los valores fijos y colocarlos en registros. Espero que te ayude.