Cartografiando y desensamblando Maniac Mansion

Avatar de Usuario
gflorez
Mensajes: 1671
Registrado: 12 Sep 2014 19:58
Agradecido : 101 veces
Agradecimiento recibido: 583 veces

Cartografiando y desensamblando Maniac Mansion

Mensajepor gflorez » 30 Oct 2017 13:56

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.

Avatar de Usuario
Chema
Mensajes: 2664
Registrado: 21 Jun 2012 20:13
Ubicación: Gijón
Agradecido : 3190 veces
Agradecimiento recibido: 926 veces
Contactar:

Re: Cartografiando y desensamblando Maniac Mansion

Mensajepor Chema » 30 Oct 2017 14:27

Genial iniciativa!!! ánimo!!

El speccy merece una aventura gráfica.

Avatar de Usuario
kikems
Mensajes: 5502
Registrado: 30 May 2013 19:23
Agradecido : 2638 veces
Agradecimiento recibido: 3112 veces

Re: Cartografiando y desensamblando Maniac Mansion

Mensajepor kikems » 30 Oct 2017 20:36

Sería fantástico ver esa aventura en otros sistemas de 8 bits.

Avatar de Usuario
alvaroalea
Mensajes: 53
Registrado: 04 Feb 2016 10:08
Agradecido : 6 veces
Agradecimiento recibido: 33 veces

Re: Cartografiando y desensamblando Maniac Mansion

Mensajepor alvaroalea » 30 Oct 2017 20:40

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.

Avatar de Usuario
Jinks
Mensajes: 2700
Registrado: 09 Oct 2013 16:47
Agradecido : 348 veces
Agradecimiento recibido: 478 veces
Contactar:

Re: Cartografiando y desensamblando Maniac Mansion

Mensajepor Jinks » 30 Oct 2017 20:44

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.

garillete
Mensajes: 2327
Registrado: 30 Oct 2010 20:58
Agradecido : 478 veces
Agradecimiento recibido: 966 veces

Re: Cartografiando y desensamblando Maniac Mansion

Mensajepor garillete » 30 Oct 2017 21:46

Acordaros que tambien hay version para famicom nes... -507

Avatar de Usuario
gflorez
Mensajes: 1671
Registrado: 12 Sep 2014 19:58
Agradecido : 101 veces
Agradecimiento recibido: 583 veces

Re: Cartografiando y desensamblando Maniac Mansion

Mensajepor gflorez » 31 Oct 2017 01:27

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.

Avatar de Usuario
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

Mensajepor sinclair200 » 31 Oct 2017 01:47

No me jodas.....vamos a poder jugar al Monkey Island en un Spectrum.....? -thumbup
Imagen
Z80 INSIDE.........
WANTED: SINCLAIR PC200 :D

Avatar de Usuario
gflorez
Mensajes: 1671
Registrado: 12 Sep 2014 19:58
Agradecido : 101 veces
Agradecimiento recibido: 583 veces

Re: Cartografiando y desensamblando Maniac Mansion

Mensajepor gflorez » 31 Oct 2017 02:26

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.

Avatar de Usuario
alvaroalea
Mensajes: 53
Registrado: 04 Feb 2016 10:08
Agradecido : 6 veces
Agradecimiento recibido: 33 veces

Re: Cartografiando y desensamblando Maniac Mansion

Mensajepor alvaroalea » 31 Oct 2017 16:34

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.


Volver a “Software C64”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 3 invitados