Maniac Mansion salió en principio para C64 y varios otros ordenadores con procesador 6502, pero de ahí dio el salto directo a ordenadores 16bit sin pasar por Z80.
De siempre ha sido un juego que me hubiese gustado tener para Spectrum 128, Amtrad o MSX, pero nunca ha sucedido que alguien se atreviese a convertirlo.
Por eso me he decidido a dar yo el primer paso, cartografiando y desensamblando el código. Hacerlo desde el disco o su imagen es una tarea para la que no estoy capacitado, pues utiliza un formateo especial como protección, por ello he estado buscando alguna conversión que me sirviese.
Hay una versión para cartucho GeoRam-NeoRam realizada en 2009 por enthusi , del grupo Onslaught que me viene al pelo, pues prescinde del acceso a disco y es fácil de hurgar, ya que se puede descargar como imagen del cartucho. Entushi explica que en realidad su versión es un hack, porque añadió control por ratón y algunos extras, y corrigió errores flagrantes del juego.
Los datos están bien colocados en los 512k que ocupa la imagen, por lo que es muy fácil rastrear los scripts, los gráficos y el código. No voy a hacer un desensamblado perfecto como el que se hizo de The Hobbit, solo uno que sirva para luego sustituir rutinas y adaptar gráficos y sonido. Digamos que va a ser labor de zapador, que es explorar el terreno y recabar información para que luego otros con mas conocimientos se atrevan a intentar la conversión.
Para publicar mis avances voy a usar un hilo en Ingles en la página Húngara de Enterprise, pues Geco ya se ha ofrecido a meterle mano cuando yo acabe.
Cartografiando y desensamblando Maniac Mansion
- Chema
- Mensajes: 2667
- Registrado: 21 Jun 2012 20:13
- Ubicación: Gijón
- Agradecido : 3201 veces
- Agradecimiento recibido: 931 veces
- Contactar:
Re: Cartografiando y desensamblando Maniac Mansion
Genial iniciativa!!! ánimo!!
El speccy merece una aventura gráfica.
El speccy merece una aventura gráfica.
- kikems
- Mensajes: 5506
- Registrado: 30 May 2013 19:23
- Agradecido : 2641 veces
- Agradecimiento recibido: 3114 veces
Re: Cartografiando y desensamblando Maniac Mansion
Sería fantástico ver esa aventura en otros sistemas de 8 bits.
- alvaroalea
- Mensajes: 53
- Registrado: 04 Feb 2016 10:08
- Agradecido : 6 veces
- Agradecimiento recibido: 33 veces
Re: Cartografiando y desensamblando Maniac Mansion
Genial!!!, yo alguna vez intente leer el codigo de scummvm, que es capaz de ejecutar la version de C64, pero saque muy poco en claro.
Ademas la version de PC soportaba hercules monocromo (ideal para el speccy) y teniendo en cuenta que hoy en dia es trivial tener un disco de 720K, no veo ninguna razon para no tener esta maniac mansion en spectrum y/o amstrad.
Ademas la version de PC soportaba hercules monocromo (ideal para el speccy) y teniendo en cuenta que hoy en dia es trivial tener un disco de 720K, no veo ninguna razon para no tener esta maniac mansion en spectrum y/o amstrad.
- Jinks
- Mensajes: 2705
- Registrado: 09 Oct 2013 16:47
- Agradecido : 348 veces
- Agradecimiento recibido: 481 veces
- Contactar:
Re: Cartografiando y desensamblando Maniac Mansion
No sé si te servirá de algo, pero habiéndose portado el motor al proyecto ScummVM, supongo que podrás acceder al código fuente en C y a poco comentado que esté, será más fácil de entender que si te pones a desensamblar el binario. Eso en cuanto al motor. La parte de datos supongo que también estará documentada, con tantos juegos que la han utilizado.
Ahora, lo que no sé es si será más fácil pasar a Z80 desde el binario del C64, o desde el código fuente en C del ScummVM.
Además Maniac Mansion y Zak MacKracken sólo requieren un subconjunto tanto del motor como del lenguaje (si se puede llamar así) SCUMM, puesto que al ser los dos primeros juegos no utilizan todas las características que se fueron añadiendo posteriormente cada vez que un juego necesitaba algo que SCUMM no hacía.
Ahora, lo que no sé es si será más fácil pasar a Z80 desde el binario del C64, o desde el código fuente en C del ScummVM.
Además Maniac Mansion y Zak MacKracken sólo requieren un subconjunto tanto del motor como del lenguaje (si se puede llamar así) SCUMM, puesto que al ser los dos primeros juegos no utilizan todas las características que se fueron añadiendo posteriormente cada vez que un juego necesitaba algo que SCUMM no hacía.
- gflorez
- Mensajes: 1673
- Registrado: 12 Sep 2014 19:58
- Agradecido : 102 veces
- Agradecimiento recibido: 586 veces
Re: Cartografiando y desensamblando Maniac Mansion
ScummVM es un proyecto que abarca demasiado para que yo, que no tengo mucha idea de C, pueda sacar algo en claro. Por otro lado, la emulación del MM de C64 no es perfecta del todo, pues se han centrado en la emulación de Monkey Island, que es a partir de la versión 4.
La imagen en la que estoy trabajando funciona en WinVice, con lo cual tengo un monitor integrado que me ayuda a, sobre la marcha, saber que hace cada parte e ir marcándolas.
También estoy usando un plug-in llamado ICU64, que muestra la memoria principal en sprites, bitmaps, charsets o pantallas de texto.
Tengo por otro lado los scripts originales del juego, con lo que ya puedo marcar "fácilmente" esos trozos.
Se algo de Z80, y ahora me apetece aprender 6502, no para hacer la conversión yo, simplemente por placer y sin prisas.
Enthusi, el cerebrito que realizó la versión de cartucho, dice en el texto enlazado en el primer mensaje que la versión de MM para C64 es la única que no está protegida(salvo el extraño formato de disco). Probablemente sea por eso que ha habido pocos intentos de convertir el juego a Z80.
La imagen en la que estoy trabajando funciona en WinVice, con lo cual tengo un monitor integrado que me ayuda a, sobre la marcha, saber que hace cada parte e ir marcándolas.
También estoy usando un plug-in llamado ICU64, que muestra la memoria principal en sprites, bitmaps, charsets o pantallas de texto.
Tengo por otro lado los scripts originales del juego, con lo que ya puedo marcar "fácilmente" esos trozos.
Se algo de Z80, y ahora me apetece aprender 6502, no para hacer la conversión yo, simplemente por placer y sin prisas.
Enthusi, el cerebrito que realizó la versión de cartucho, dice en el texto enlazado en el primer mensaje que la versión de MM para C64 es la única que no está protegida(salvo el extraño formato de disco). Probablemente sea por eso que ha habido pocos intentos de convertir el juego a Z80.
- sinclair200
- Mensajes: 782
- Registrado: 20 Abr 2014 18:01
- Ubicación: Madrid
- Agradecido : 9 veces
- Agradecimiento recibido: 54 veces
Re: Cartografiando y desensamblando Maniac Mansion
No me jodas.....vamos a poder jugar al Monkey Island en un Spectrum.....?
Z80 INSIDE.........
WANTED: SINCLAIR PC200
- gflorez
- Mensajes: 1673
- Registrado: 12 Sep 2014 19:58
- Agradecido : 102 veces
- Agradecimiento recibido: 586 veces
Re: Cartografiando y desensamblando Maniac Mansion
De momento en el Enterprise, pero es posible que alguien mas aproveche el trabajo de Geco y después lo pase a Spectrum, a Amstrad o a MSX.
------
Ahora bien, las diferencias que veo entre los dos procesadores son grandes pero no insalvables. El Z80 está mas orientado a registros, mientras que el 6502 está orientado a memoria con pocos registros e instrucciones(precursor de RISC) .
En Z80, por ejemplo, para copiar zonas de memoria, solo hay que meter los valores origen, destino y cuenta en los registros dobles HL, DE y BC y ejecutar un ldir. El procesador solito hará el bucle e incrementará o disminuirá los registros internamente.
Por lo que llevo visto en este juego sobre el 6502, no hay tal instrucción pero, ya que maneja las posiciones de memoria como si fuesen registros, es fácil y rápido hacer un bucle con pocas instrucciones y algunos incrementos que auto-modifican el código.
Probablemente sea mas fácil convertir de 6502 a Z80, ya que este último no tiene limitación de registros y tiene también parecidas instrucciones orientadas a memoria. También el código se puede hacer mas corto con el Z80 al tener bastantes instrucciones de repetición como ldir.
Hay que destacar que la mayoría de los micro-ordenadores con Z80 que cacharreamos aquí tienen al menos 3,5Mhz, mientras que el 6510 utilizado en el C64 solo iba a 1Mhz. Esto no va a significar que el mismo juego vaya a volar en un Spectrum o un Amstrad, ya que los 65XX son mucho mas eficientes.
Pero de estos temas hay en esta página web grandes eruditos que podrían explicarlo muchísimo mejor.
------
Ahora bien, las diferencias que veo entre los dos procesadores son grandes pero no insalvables. El Z80 está mas orientado a registros, mientras que el 6502 está orientado a memoria con pocos registros e instrucciones(precursor de RISC) .
En Z80, por ejemplo, para copiar zonas de memoria, solo hay que meter los valores origen, destino y cuenta en los registros dobles HL, DE y BC y ejecutar un ldir. El procesador solito hará el bucle e incrementará o disminuirá los registros internamente.
Por lo que llevo visto en este juego sobre el 6502, no hay tal instrucción pero, ya que maneja las posiciones de memoria como si fuesen registros, es fácil y rápido hacer un bucle con pocas instrucciones y algunos incrementos que auto-modifican el código.
Probablemente sea mas fácil convertir de 6502 a Z80, ya que este último no tiene limitación de registros y tiene también parecidas instrucciones orientadas a memoria. También el código se puede hacer mas corto con el Z80 al tener bastantes instrucciones de repetición como ldir.
Hay que destacar que la mayoría de los micro-ordenadores con Z80 que cacharreamos aquí tienen al menos 3,5Mhz, mientras que el 6510 utilizado en el C64 solo iba a 1Mhz. Esto no va a significar que el mismo juego vaya a volar en un Spectrum o un Amstrad, ya que los 65XX son mucho mas eficientes.
Pero de estos temas hay en esta página web grandes eruditos que podrían explicarlo muchísimo mejor.
- alvaroalea
- Mensajes: 53
- Registrado: 04 Feb 2016 10:08
- Agradecido : 6 veces
- Agradecimiento recibido: 33 veces
Re: Cartografiando y desensamblando Maniac Mansion
EL maniac mansion de NES, olvidaros de el, fue reprogramado completamente y no se parece en nada a los otros.
Respecto al scummvm, el problema son las versiones, ya que hay un monton de versiones, basicamente una por juego, y ademas en el caso del Maniac Mansion, hay reediciones (hablo de memoria) que usan diferente version de datos.
Para redondear la situacion, maniac mansion (y el ZAC, creo) usan la version 1 de scumm, y en scummvm empezaron a documentar los formatos y esas cosas a partir de la 2-3, por lo que el wiki que tienen sirve de poco.
Esa pagina de github es muy interesante, puede ser un gran inicio, los datos de graficos y demas se pueden sacar de screenshots y otros,
las rutinas se pueden hacer desde cero, pero con eso y scummvm creo que se puede avanzar mucho.
Respecto al scummvm, el problema son las versiones, ya que hay un monton de versiones, basicamente una por juego, y ademas en el caso del Maniac Mansion, hay reediciones (hablo de memoria) que usan diferente version de datos.
Para redondear la situacion, maniac mansion (y el ZAC, creo) usan la version 1 de scumm, y en scummvm empezaron a documentar los formatos y esas cosas a partir de la 2-3, por lo que el wiki que tienen sirve de poco.
Esa pagina de github es muy interesante, puede ser un gran inicio, los datos de graficos y demas se pueden sacar de screenshots y otros,
las rutinas se pueden hacer desde cero, pero con eso y scummvm creo que se puede avanzar mucho.
¿Quién está conectado?
Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 3 invitados