07-31-2018, 10:45 AM
No me resulta raro, las consolas antiguas tenían todo el espacio de memoria desprotegido incluido RAMs y ROMs variadas. Todo era RWX (Read-Write-Execute).
Se podía apuntar el codigo a literalmente cualquier parte de la ram y que lo interpretase como dicho codigo esperase que fuera, por ejemplo el valor 0xAA escrito por el código de las partidas guardadas para guardar el número del item X equivale al sprite Y del nivel según el codigo de los niveles. Con esto y con lo que explica el video de que la save ram está mapeada al banco de direcciones no me extraña que las partidas se jodieran en el Pokémon Rojo/Azul cuando se visitaban las famosas Islas Fallo.
Muchos programadores eran locos masoquistas que hacían virguerías con esto para ahorrar la escasísima RAM de la que disponían (no tenían más huevos).
Ningún entorno de hoy en día permite mapear memoria como RWX tan alegremente (con la excepción de los recompiladores JIT y demás). Sobre todo porque supone un problema de seguridad brutal.
Se podía apuntar el codigo a literalmente cualquier parte de la ram y que lo interpretase como dicho codigo esperase que fuera, por ejemplo el valor 0xAA escrito por el código de las partidas guardadas para guardar el número del item X equivale al sprite Y del nivel según el codigo de los niveles. Con esto y con lo que explica el video de que la save ram está mapeada al banco de direcciones no me extraña que las partidas se jodieran en el Pokémon Rojo/Azul cuando se visitaban las famosas Islas Fallo.
Muchos programadores eran locos masoquistas que hacían virguerías con esto para ahorrar la escasísima RAM de la que disponían (no tenían más huevos).
Ningún entorno de hoy en día permite mapear memoria como RWX tan alegremente (con la excepción de los recompiladores JIT y demás). Sobre todo porque supone un problema de seguridad brutal.