Mr.Gray Fox escribió:@theelf Tienes unos cojones tan gordos que me sorprende que quepas por la puerta de casa. ¿Haces todo eso en ensamblador? Creo que nadie en este foro tendría esa paciencia y visión del programa para hacer lo que haces

¿Realmente se nota tanta mejoría? ¿Compensa?
Gracias, pero no veo nada especial, ensamblador es muy facil, si te fijas con comandos simples, faciles de aprender. Solo tienes que conocer el hardware con el que trabajas
Seguro hay mucha gente por estos pagos que tienen esos conocimientos y mas
A tu pregunta, a ver, depende para que
Yo la verdad que no estoy muy puesto en programacion moderna, pero segun mi punto de vista, la programacion de hoy en dia son todos como bloques de lego, tu no haces el castillo, solo pones los bloques que le faltan a un castillo que ya venia pre-armado
Por ejemplo, nunca trabajas con la grafica, si no con un sistema operativo, y un driver. Un programador de ahora puede hacer virguerias visuales, pero no saber escribir un driver, porque se toman como cosas separadas hoy en dia
Y es logico, nadie necesita reinventar la rueda. Actualmente los proyectos son muy muy complejos, y la variedad de hardware demasiado amplia
Creo que la optimizacion pasa por cosas mas como reivisar posibles fugas de memoria, por decir algo. Y tambien supongo social, del tipo, que las companias hablen con los fabricantes de hardware que hacen los drivers, para que les optimizen
La programacion que hago la mayoria del tiempo, es por ejemplo, para maquinas como la megadrive.
Tomemos la megadirve como ejemplo, dispongo de una CPU a 7mhz, 48kb efectivos de vram (64kb totales), unos 56kb de ram (64kb totales), y 8kb de ram para audio
La consola NO tiene sistema operativo, asi que todo codigo que se haga, tiene que hablar directamente con el hardware, no existe el castillo prearmado, hay que hacerlo uno mismo
Por ejemplo, si quiero mostrar un grafico en pantalla en un PC moderno, lo logico es usar un libreria, SDL, Allegro, o lo que cojones se use hoy en dia y algun comando que permita subir la imagen en cuestion, punto, ahi queda el tema.
No te preocupas por el tamaño de la imagen, ni de como esa imagen pasa del disco duro a la grafica... simplemente esperas que los creadores de SDL o Allegro optimizaran esta funcion
En la megadrive, eso no existe, primero, el VDP no tiene ninguna manera efectiva de mostrar un bitmap, asi que hay que descomponer los graficos en un formato binario entendible por el vdp y hacer una copia de la rom a la vram en el periodo que nos de la TV
Porque es necesario calcular el tiempo que tarda la TV en mostrar cada ciclo. Por ejemplo, NTSC muestra unas 240 lineas efectivas (480 entrelazadas), y cuando el haz de electrones llega al final, necesita de un tiempo para volver a comenzar el ciclo desde la linea 0
Ese periodo donde la TV no esta dibujando nada en pantalla, es lo que se llama vblank. Y es el periodo donde, entre otras cosas, puedes subir datos desde la rom/ram a la vram sin que eso afecte nada en pantalla, ya que la TV aun no esta dibujando nada
Ese periodo depende un poco de cada maquina, en la megadrive es de aproximados 36 scanlines, quiere decir que cada 17 milisegundos (1 segundo / 60hz) la TV mostrara 240 lineas y "descansara" 36 lineas, que es donde puedes subir los datos, codigo, etc
O sea, que tienes 17 milisegundos / 276 (240+36) * 36 = 2.2 milisegundos por frame para esta tarea
O sea, que tu codigo tiene que ser lo suficientemente optimizado para poder ser ejecutado en aproximadamente 2.2 milisegundos por frameEn ese caso, a tu pregunta "¿Realmente se nota tanta mejoría? ¿Compensa?"
SIPorque ya me diras que tipo de codigo puedes hacer para que en 2.2 milisegundos, puedas trabajar comodamente en un CPU de 7mhz, con limitaciones de DMA, VDP, etc por todos lados...