Señor Ventura escribió:kusfo79 escribió:Voy a intentar diluir un poco el versus con algo más de tecnicismos.
Sobre lo que mencionas, que ya comentamos alguna vez, no es exactamente así. Podemos hacer una equivalencia entre la guerra z80 vs 6502 y la de 68000 vs 65816.
Tanto el 6502 como 65816 son procesadores con menos registros que sus adversarios. Eso hace que muchas veces, para programar cosas un poco complejas, tengas que usar posiciones de ram como "falsos registros", y obviamente eso no es lo más eficiente del mundo.
Eso, por cierto, pasaba tanto en proyectos multi (C64 vs Amstrad/spectrum/msx) como que no. Es cierto que en ocasiones se podría haber evitado, pero más bien era una desventaja que tenías en esa família de procesadores.
Quiero aprovechar para añadir algo sobre esa cuestión.
Usar posiciones de memoria para emular registros de un 68000 o para guardar variables de alto nivel (que por definición no es usable por las buenas hasta que no se "traduzca"), no es la única manera de conseguir resultados, que parece que no te quede otra opción que usar un recurso como ese, que agota la capacidad del procesador, y no es así... por no hablar de que el acumulador del 65816 parecía ser algo testimonial en muchos de los juegos que tienen mal rendimiento, cuando es importante usarlo como se debe, y cuando se debe.
Lo que estoy diciendo es que gente muy puesta con el 65816 está diciendo que esa no era la forma de trabajar para el 65816, y por algo lo dirán, imagino.
Sigamos con el hilo.
Yo con el tema este, pero hablando específicamente programadores de C64 vs otros ordenadores: La falta de registros hace que a la que tengas que hacer cálculos complejos tengas que usar RAM por la falta de registros, y eso no se puede evitar. Eso se notaba mucho en juegos en "3d" tipo Elite o F-15, ya que tenías que ir guardando posiciones intermedias, etc.
De hecho, Spectrum o Amstrad, podían vivir sin Sprites por Hardware dado que el procesador daba bastante de si, mientras que los ordenadores/consola con 6502 llevaban sprites por Hardware, por qué de otra manera el procesador habría sufrido.
Por otro lado, la falta de registros también afecta a tener compiladores en C decentes. Por ejemplo, SDCC tiene muchos procesadores target (Z80 y el de la gameboy entre ellos), pero no el 6502, que tiene un compilador, cc65, con bastantes limitaciones.
Ojo, que por otro lado, para realizar operaciones bastante sencillas, el 6502 es rápido, muy rápido (comparado con las mismas instrucciones en z80)