Análisis del Fuente The Hobbit V1.2 ASM Z80 ZX Spectrum 48K
-
- Mensajes: 457
- Registrado: 29 Oct 2010 22:05
- Agradecido : 1 vez
- Agradecimiento recibido: 15 veces
Análisis del Fuente The Hobbit V1.2 ASM Z80 ZX Spectrum 48K
Hola, adjunto el fichero ASM que si ensambla y genera un binario 100% idéntico a la versión V12.
Tambien adjunto otro fichero asm que en esencia es una copia del que circula por internet,
pero cambiando el simbolo #, por el $ para referenciar valores hexadecimales.
NOTA: Con Pasmo como assembler, pero imagino que valdrá cualquiera
pasmo --bin <fichero.asm> <fichero.bin>
Son los recursos que he utilizado en mi labor de análisis.
Como dije en mi primer post, el fichero que circula por internet, no tenía las direcciones
de memoria como me salían en el fichero desemsablado, así que ha sigo una labor de ingeniería
inversa divertida.
Tras leer la información de la fuente
http://www.icemark.com/dataformats/hobbit/
llegué a la conclusión que el fuente de internet tenía muchas cosas comentadas aprovechables.
el proceso ha consistido básicamente en utilizar un editor hexadecimal para buscar cadenas de datos y
encajarlas en el fichero desensamblado. (Principalmente para las estructuras de datos)
Otras veces , ha consistido en ejecutar paso a paso desde el debugger del SPIN e ir deduciendo cosas.
Otras leyendo aquí y allí y sacando conclusiones.
De estos ficheros y con la url citada anteriormente se responde algunas preguntas sobre literales, mensajes
y demás.
¿Porque es importante tener un fichero ASM lo más documentado posible y compilable?
Porque una vez que esté completo, el ASM de las definiciones de datos, se podrá añadir tal cual ( ojo con little endian/big endian en 6809)
al fichero ASM que se tenga que construir para 6809.
Al tener todo como etiquetas , reubicamos en direcciones más convenientes para el
Aquí quedan para adjuntar al repositorio que se está creando.
Happy Coding!
Descarga: download/file.php?id=20006647
Tambien adjunto otro fichero asm que en esencia es una copia del que circula por internet,
pero cambiando el simbolo #, por el $ para referenciar valores hexadecimales.
NOTA: Con Pasmo como assembler, pero imagino que valdrá cualquiera
pasmo --bin <fichero.asm> <fichero.bin>
Son los recursos que he utilizado en mi labor de análisis.
Como dije en mi primer post, el fichero que circula por internet, no tenía las direcciones
de memoria como me salían en el fichero desemsablado, así que ha sigo una labor de ingeniería
inversa divertida.
Tras leer la información de la fuente
http://www.icemark.com/dataformats/hobbit/
llegué a la conclusión que el fuente de internet tenía muchas cosas comentadas aprovechables.
el proceso ha consistido básicamente en utilizar un editor hexadecimal para buscar cadenas de datos y
encajarlas en el fichero desensamblado. (Principalmente para las estructuras de datos)
Otras veces , ha consistido en ejecutar paso a paso desde el debugger del SPIN e ir deduciendo cosas.
Otras leyendo aquí y allí y sacando conclusiones.
De estos ficheros y con la url citada anteriormente se responde algunas preguntas sobre literales, mensajes
y demás.
¿Porque es importante tener un fichero ASM lo más documentado posible y compilable?
Porque una vez que esté completo, el ASM de las definiciones de datos, se podrá añadir tal cual ( ojo con little endian/big endian en 6809)
al fichero ASM que se tenga que construir para 6809.
Al tener todo como etiquetas , reubicamos en direcciones más convenientes para el
Aquí quedan para adjuntar al repositorio que se está creando.
Happy Coding!
Descarga: download/file.php?id=20006647
- luiscoco
- Mensajes: 2414
- Registrado: 15 May 2011 04:23
- Ubicación: Caracas, Venezuela
- Agradecido : 38 veces
- Agradecimiento recibido: 59 veces
Re: Fuente The Hobbit V1.2 ASM Z80 ZX Spectrum 48K.
Correcto, empecemos
en tu fuente, se me hace extraño que las direcciones y los bytes estén como comentarios, si no se pueden mover a la izquierda no importa, trabajaremos así.
Empezamos con CC00
Hay que colocarla como el original?
Lo corriges tu?, lo hago yo?, o no hay que corregirlo?
-----------------------------------------------------------------------
pensé que eran datos o parámetros para hacer los gráficos, que bueno que probaste y al des ensamblarlo se ve que son las rutinas que crean los gráficos.
Ahora:
Yo opino que estos gráficos seria mejor hacerlos con llamadas a la ROM, Line, Circle, paint (que opináis)
Como están bien identificados creo que no habría problema, quiero decir que si se llama a la rutina que pinta por ejemplo el
DB $01,LCC43 ; "Tunnel like hall"
Pues mientras que lo pinte y regrese todo estará bien.
Pienso que no es necesario saber como pinta las lineas en la ZX- Spectrum, me imagino que de todas maneras habría que cambiarlo para la dragón.
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Cambio de opinión:
pienso que estas rutinas que pintan las pantallas de locaciones, no son assembler, ya que todas terminan en 00 = NOP y las rutinas no deberían acabar así
pienso que deben ser datos de las lineas y rellenos, pero no entiendo el formato (aun).
en tu fuente, se me hace extraño que las direcciones y los bytes estén como comentarios, si no se pueden mover a la izquierda no importa, trabajaremos así.
Empezamos con CC00
Código: Seleccionar todo
; LocGFXTable
; Tabla de punteros a los gráficos de las localizaciones
;
GFX_TABL: DB $01 ; CC00 01
DB $43 ; CC01 43
DB $CC ; CC02 CC
LD SP, $CE77 ; CC03 31 77 CE
LD B, $B2 ; CC06 06 B2
RST $08 ; CC08 CF
DEC BC ; CC09 0B
LD C, (HL) ; CC0A 4E
JP NC, $6725 ; CC0B D2 25 67
OUT ($2B), A ; CC0E D3 2B
OR L ; CC10 B5
PUSH DE ; CC11 D5
LD H, $13 ; CC12 26 13
RST $10 ; CC14 D7
RLCA ; CC15 07
LD HL, ($18D9) ; CC16 2A D9 18
XOR B ; CC19 A8
IN A, ($23) ; CC1A DB 23
LD A, C ; CC1C 79
DEFB $DD ; CC1D DD
DEC C ; CC1E 0D
INC L ; CC1F 2C
RET PO ; CC20 E0
RRA ; CC21 1F
LD C, C ; CC22 49
RET PO ; CC23 E0
DEC B ; CC24 05
LD B, D ; CC25 42
POP HL ; CC26 E1
INC E ; CC27 1C
SBC A, A ; CC28 9F
POP HL ; CC29 E1
INC B ; CC2A 04
CP $E3 ; CC2B FE E3
JR NZ, L_CCA9 ; CC2D 20 7A
CALL PO, L_E410 ; CC2F E4 10 E4
AND $19 ; CC32 E6 19
XOR $E9 ; CC34 EE E9
EX AF, AF ; CC36 08
LD A, $EC ; CC37 3E EC
ADD HL, HL ; CC39 29
LD B, E ; CC3A 43
XOR $1A ; CC3B EE 1A
LD BC, $27F0 ; CC3D 01 F0 27
AND $F1 ; CC40 E6 F1
RST $38 ; CC42 FF
Hay que colocarla como el original?
Código: Seleccionar todo
LocGFXTable: ; LCC00
DB $01,LCC43 ; "Tunnel like hall"
DB $31,LCE77 ; "great river"
DB $06,LCFB2 ; "trolls path"
DB $0B,LD24E ; "narrow place"
DB $25,LD367 ; "dragons desolation"
DB $2B,LD5B5 ; "straight smooth passage"
DB $26,LD713 ; "dale valley"
DB $07,LD92A ; "trolls cave"
DB $18,LDBA8 ; "forest gate"
DB $23,LDD79 ; "lake town"
DB $0D,LE02C ; "goblins dungeon"
DB $1F,LE049 ; "dark dungeon"
DB $05,LE142 ; "trolls clearing"
DB $1C,LE19F ; "elvish clearing"
DB $04,LE3FE ; "lonelands"
DB $20,LE47A ; "elvenkings cellar"
DB $10,LE6E4 ; "goblins big cavern"
DB $19,LE9EE ; "gloomy bewitched place"
DB $08,LEC3E ; "running river"
DB $29,LEE43 ; "lower halls"
DB $1A,LF001 ; "threads spider place"
DB $27,LF1E6 ; "front gate"
DB $FF
Lo corriges tu?, lo hago yo?, o no hay que corregirlo?
-----------------------------------------------------------------------
Código: Seleccionar todo
;*
;* Start of location graphics
;*
LCC43 DB $07,$38,$08,$9E,$46,$89,$44,$81,$C4,$81,$44,$81,$04,$80,$44,$80
DB $C4,$88,$44,$08,$C6,$46,$89,$44,$85,$C4,$85,$44,$84,$04,$84,$44
DB $8C,$04,$08,$9F,$45,$83,$C4,$83,$44,$83,$04,$82,$44,$82,$82,$8A
DB $04,$08,$C5,$45,$87,$C4,$87,$44,$87,$04,$86,$44,$86,$C4,$08,$91
pensé que eran datos o parámetros para hacer los gráficos, que bueno que probaste y al des ensamblarlo se ve que son las rutinas que crean los gráficos.
Ahora:
Código: Seleccionar todo
;
; Gráficos de las localizaciones
;
L_CC43: RLCA ; CC43 07
L_CC44: JR C, L_CC4E ; CC44 38 08
SBC A, (HL) ; CC46 9E
LD B, (HL) ; CC47 46
ADC A, C ; CC48 89
LD B, H ; CC49 44
ADD A, C ; CC4A 81
CALL NZ, $4481 ; CC4B C4 81 44
L_CC4E: ADD A, C ; CC4E 81
INC B ; CC4F 04
L_CC50: ADD A, B ; CC50 80
LD B, H ; CC51 44
ADD A, B ; CC52 80
CALL NZ, $4488 ; CC53 C4 88 44
EX AF, AF ; CC56 08
ADD A, $46 ; CC57 C6 46
ADC A, C ; CC59 89
LD B, H ; CC5A 44
ADD A, L ; CC5B 85
CALL NZ, $4485 ; CC5C C4 85 44
ADD A, H ; CC5F 84
INC B ; CC60 04
ADD A, H ; CC61 84
LD B, H ; CC62 44
ADC A, H ; CC63 8C
INC B ; CC64 04
EX AF, AF ; CC65 08
SBC A, A ; CC66 9F
LD B, L ; CC67 45
ADD A, E ; CC68 83
CALL NZ, $4483 ; CC69 C4 83 44
ADD A, E ; CC6C 83
INC B ; CC6D 04
ADD A, D ; CC6E 82
LD B, H ; CC6F 44
Yo opino que estos gráficos seria mejor hacerlos con llamadas a la ROM, Line, Circle, paint (que opináis)
Como están bien identificados creo que no habría problema, quiero decir que si se llama a la rutina que pinta por ejemplo el
DB $01,LCC43 ; "Tunnel like hall"
Pues mientras que lo pinte y regrese todo estará bien.
Pienso que no es necesario saber como pinta las lineas en la ZX- Spectrum, me imagino que de todas maneras habría que cambiarlo para la dragón.
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Cambio de opinión:
pienso que estas rutinas que pintan las pantallas de locaciones, no son assembler, ya que todas terminan en 00 = NOP y las rutinas no deberían acabar así
pienso que deben ser datos de las lineas y rellenos, pero no entiendo el formato (aun).
- luiscoco
- Mensajes: 2414
- Registrado: 15 May 2011 04:23
- Ubicación: Caracas, Venezuela
- Agradecido : 38 veces
- Agradecimiento recibido: 59 veces
Re: Fuente The Hobbit V1.2 ASM Z80 ZX Spectrum 48K.
Que paso al final del assembler?, tu fuente llega a F359
el original a
Que paso aqui?
Código: Seleccionar todo
ADD A, D ; F355 82
LD B, D ; F356 42
LD B, L ; F357 45
LD A, C ; F358 79
LD A, D ; F359 7A
NOP ; F35A 00
NOP ; F35B 00
NOP ; F35C 00
NOP ; F35D 00
NOP ; F35E 00
el original a
Código: Seleccionar todo
LFFED DB $66,$3C,$00,$7E,$5A,$18,$18,$18,$18,$3C,$00,$66,$66,$66,$66,$66
DB $66,$3C
Que paso aqui?
-
- Mensajes: 457
- Registrado: 29 Oct 2010 22:05
- Agradecido : 1 vez
- Agradecimiento recibido: 15 veces
Re: Fuente The Hobbit V1.2 ASM Z80 ZX Spectrum 48K.
OJO,, Cuidadín...
cuando se pasa un binario por un desensamblador, este intenta generar un listado 100% a base de instrucciones ejecutables.
es imposible saber donde estan las variables, datos y gráficos.
la labor de identificarlos es totalmente manual.
identificada una zona "no de código", se procede a sustituir las instrucciones por directivas DB, DW.
los comentarios que aparecen tras de cada instrucción, son una opción de generación del listado. La activé, para que me fuese más fácil encontrar patrones binarios entre el fuente comentado y el que he ido generando.
Me bajé un editor hexadecimal de fichero y buscaba la cadena, luego sumaba el offset de la dirección de inicio y así obtenía la dirección real.
Lo mismo hacía en el fichero de internet y podía comprobar que los datos o el código eran idénticos
El problema viene en tablas que son punteros a direcciones, que no se pueden buscar así, sino deduciendo el proceso de indexación utilizado.
Si ves he convertido alguna zona de datos, como la del principio, solo después de saber que era exacta. El resto de zonas se puede hacer dos cosas:
A mano se va generando los DB,DW o se localiza un programa de eso que genera un fichero de texto con los valores hexadecimales.
Siempre queda la opción de hacer un include del trocito binario que corresponda en cada caso.
Lo mejor es poner la mayor cantidad de estructuras con etiquetas y luego en las tablas indexadas, incluir la etiqueta, eso nos permitirá ubicar los datos en otras zonas del mapa de memoria del Dragón.
Es un trabajo de chinos, pero divertido, a modo de ejemplo,os cuento lo que me ocurrió, cuando cambié el código generado automáticamente a datos en la primera zona ($6000 en adelante) :
Verificando que era los mismo datos en ambos fuentes, hice un copy paste y al compilar me saltaron un montón de etiquetas no definidas en una zona de datos ( la de localizaciones), ¿por que?, sencillo, porque cuando se genera el código automáticamente, el debugger crea tantas etiquetas como necesite para hacer coherente las instrucciones y al pulirme código automático de una zona, ciertas etiquetas quedaron huérfanas..., nada paciencia y a mano fui editando y poniendo el valor numérico. Fácil por que las etiquetas son L_HHHH y representan la dirección $HHHH, pero un rollete de cuidao.
ah, y el código termina en $F35E, porque es una zona de datos y a partir de este punto hay un cerro de ceros en el código del cassette original.
No coincide con el otro fichero, porque son versiones disintas y ciertas cosas en distintas ubicaciones , otras no, pero suficientes como para haber tenido que empezar de cero.
Si hubiese tenido el binario destino no me hubiese importado.
Bueno peazo de ladrillo, saludos!
- luiscoco
- Mensajes: 2414
- Registrado: 15 May 2011 04:23
- Ubicación: Caracas, Venezuela
- Agradecido : 38 veces
- Agradecimiento recibido: 59 veces
Re: Fuente The Hobbit V1.2 ASM Z80 ZX Spectrum 48K.
race8086 escribió:-agree
OJO,, Cuidadín...
cuando se pasa un binario por un desensamblador, este intenta generar un listado 100% a base de instrucciones ejecutables.
es imposible saber donde estan las variables, datos y gráficos.
la labor de identificarlos es totalmente manual.
identificada una zona "no de código", se procede a sustituir las instrucciones por directivas DB, DW.
No , si lo se, solo lo comentaba como trabajo que queda por hacer
----------------------------------------------------------------------------
Ok,
1.- la pregunta es, como te ayudo, no puedo tocar tu fuente o si?, como nos dividimos el trabajo?
2.- Tu assembler funciona al compilarlo bien?, debido a los bugs que tiene el original, y unas versiones adicionales que hay, seria mejor tomar la ultima versión?
Por cierto el original fue hecho en TRS-80 no especifica cual?
-
- Mensajes: 6224
- Registrado: 13 Nov 2010 02:08
- Ubicación: Barcelona
- Agradecido : 664 veces
- Agradecimiento recibido: 1016 veces
Re: Fuente The Hobbit V1.2 ASM Z80 ZX Spectrum 48K.
Mi más sinceros ánimos a seguir con lo que estáis haciendo.
Me lo estoy pasando muy bien leyendo estos hilos, y ganas tengo de poder jugar algún día a esta versión del Hobbit.
Me lo estoy pasando muy bien leyendo estos hilos, y ganas tengo de poder jugar algún día a esta versión del Hobbit.
Buscando la IP de la W.O.P.R. he encontrado mi índice
-
- Mensajes: 457
- Registrado: 29 Oct 2010 22:05
- Agradecido : 1 vez
- Agradecimiento recibido: 15 veces
Re: Fuente The Hobbit V1.2 ASM Z80 ZX Spectrum 48K.
luis46coco escribió:1.- la pregunta es, como te ayudo, no puedo tocar tu fuente o si?, como nos dividimos el trabajo?
2.- Tu assembler funciona al compilarlo bien?, debido a los bugs que tiene el original, y unas versiones adicionales que hay, seria mejor tomar la ultima versión?
1.- por supuesto !, toca lo que quieras para eso está
2.- si, ensambla 100% , el origen fue del tap que hay en worldofspectrum , la ultima versión que me pareció encontrar (v12), no se hay versiones mas recientes.
a partir a ahora no voy a tenr tanto tiempo, pero hablamos y vemos lo que se puede hacer.
Desde el miércoles creo que estaremos casi en el mismo huso horario
- luiscoco
- Mensajes: 2414
- Registrado: 15 May 2011 04:23
- Ubicación: Caracas, Venezuela
- Agradecido : 38 veces
- Agradecimiento recibido: 59 veces
Re: Fuente The Hobbit V1.2 ASM Z80 ZX Spectrum 48K.
Me estoy dedicando a cambiar los mensajes y gráficas de la versión 4 y la llamare v5, tuve en cuenta intercambiar los bytes, utilice para esto un editor con bloque verticales que es muy útil, como decíais antes, use el notepad++, y posicione correctamente los labels y address. Cuando lo termine me gustaría que lo revisaran por errores o equivocaciones, explicare todo detalladamente, por un posible roll-back.
Lo ideal seria colocarlo en sourceforge para que todos lo podamos modificar al mismo tiempo y ver los cambios
Lo ideal seria colocarlo en sourceforge para que todos lo podamos modificar al mismo tiempo y ver los cambios
- luiscoco
- Mensajes: 2414
- Registrado: 15 May 2011 04:23
- Ubicación: Caracas, Venezuela
- Agradecido : 38 veces
- Agradecimiento recibido: 59 veces
Re: Fuente The Hobbit V1.2 ASM Z80 ZX Spectrum 48K.
Compretado V5, Por favor race8086 revisalo, aun falta cambiar los labels de los mensajes para que apunten a la dirección real, no lo hice por lo siguiente
1.- Se podria colocar solo el label inicial como lo hice en acciones? o se necesitan en todas las frases?
2.- Si lo compilas y lo des compilas seria mas fácil colocar le los labels.?
3.- Hago un programa o a mano los labels?
1.- Se podria colocar solo el label inicial como lo hice en acciones? o se necesitan en todas las frases?
2.- Si lo compilas y lo des compilas seria mas fácil colocar le los labels.?
3.- Hago un programa o a mano los labels?
-
- Mensajes: 457
- Registrado: 29 Oct 2010 22:05
- Agradecido : 1 vez
- Agradecimiento recibido: 15 veces
Re: Fuente The Hobbit V1.2 ASM Z80 ZX Spectrum 48K.
Puff...
no se puede ensamblar por lo siguiente:
Estamos ensamblando para z80 , si cambias el criterio LitleEndian-Bigendian para el 6809, el programa no se puede ejecutar en Spectrum, porque saldrán direcciones sin sentido y se colgará , no queda más remedio que conservar la notación hasta que demos por cerrado la documentación del original para spectrum
As copiado bloques con etiquetas originales y algunas sin el caracter :, esto generará 1 error por cada etiqueta que no encuentre o un error sintáctico, el tema es que como el ensamblado va paso a paso , nunca sabremos el total de errores
El pasmo se va parando 1 a 1 y te las va pidiendo
Puede que no las pida todas, pero si aparecen en el V4 es porque el debugger las tuvo que generar por alguna invocación en el código.
Te dejo dibujo de como iba el asunto, para que lo veas:
Si te parece hacemos lo siguiente:
- Tú dale la vuelta a las direcciones y me dejas en un fichero solo el trozo ese
- yo voy a ir cambiando a mano etiqueta a etiqueta a acotar la dimensión y luego decidimos como continuamos
Como ves, esto es más puñetero de lo que parece a primera vista, , pero tiene su punto ....
no se puede ensamblar por lo siguiente:
Estamos ensamblando para z80 , si cambias el criterio LitleEndian-Bigendian para el 6809, el programa no se puede ejecutar en Spectrum, porque saldrán direcciones sin sentido y se colgará , no queda más remedio que conservar la notación hasta que demos por cerrado la documentación del original para spectrum
As copiado bloques con etiquetas originales y algunas sin el caracter :, esto generará 1 error por cada etiqueta que no encuentre o un error sintáctico, el tema es que como el ensamblado va paso a paso , nunca sabremos el total de errores
El pasmo se va parando 1 a 1 y te las va pidiendo
Puede que no las pida todas, pero si aparecen en el V4 es porque el debugger las tuvo que generar por alguna invocación en el código.
Te dejo dibujo de como iba el asunto, para que lo veas:
Si te parece hacemos lo siguiente:
- Tú dale la vuelta a las direcciones y me dejas en un fichero solo el trozo ese
- yo voy a ir cambiando a mano etiqueta a etiqueta a acotar la dimensión y luego decidimos como continuamos
Como ves, esto es más puñetero de lo que parece a primera vista, , pero tiene su punto ....
-
- Mensajes: 457
- Registrado: 29 Oct 2010 22:05
- Agradecido : 1 vez
- Agradecimiento recibido: 15 veces
Re: Fuente The Hobbit V1.2 ASM Z80 ZX Spectrum 48K.
He comenzado a revisar el fichero, empezando desde la primera línea donde me reportó error el Pasmo.
Aunque en otros momentos es más efectivo , corregir un error , ensamblar y conitnuar con el siguiente, dada la cantidad de cambios que
hay que hacer, he optado por ir cambiando a saco.
El objetivo es conseguir que salga un binario idéntico al que genera la versión 4, así que me he centrado en ir etiquetando para que el ensamblado así lo consiga.
He dedicado una hora y algo más a los cambios y aún queda bastante.
Te dejo el fichero como queda, hay que seguir y lo haría en la misma dirección hasta terminar la zona de datos/mensajes.
Después seguro que saldrán etiquetas faltantes, por el ensamblado automático en otras zonas , aunque estoy respetando todas las etiquetas de la versión 4.
Lo he puesto en la cabecera, pero te dejo un pantallazo que queda más claro.
Ah, por cierto, voy despejando etiquetas, para no perderme, es facilísimo hacerse un lío.
El método, pues contar bytes y ver patrones coincidentes.
Los comentarios están quedando desplazados, espero que no mucho de su ubicación en esta versión del binario.
Nada que una ejecución paso a paso con un par de breakpoints no nos permita solucionar,
No te olvides de colocar la tablita que transformaste para 6809, pero volviendo a dejar el criterio de Z80.
Si se te ocurre otra forma de hacerlo, adelante, mientras que al final se ensamble y de el mismo binario que la versión 4.
Bájate el pasmo y se ensambla con:
pasmo --bin hobbit_v5r.asm h5r.bin.
pasmo --bin hobbit_v4.asm h4.bin.
Luego con un winmerge o herramienta similar se compara los dos ficheros bin y ya está .... si salen idénticos prueba
superada, sino ... algo se ha quedado por el camino
Suerte!
Aunque en otros momentos es más efectivo , corregir un error , ensamblar y conitnuar con el siguiente, dada la cantidad de cambios que
hay que hacer, he optado por ir cambiando a saco.
El objetivo es conseguir que salga un binario idéntico al que genera la versión 4, así que me he centrado en ir etiquetando para que el ensamblado así lo consiga.
He dedicado una hora y algo más a los cambios y aún queda bastante.
Te dejo el fichero como queda, hay que seguir y lo haría en la misma dirección hasta terminar la zona de datos/mensajes.
Después seguro que saldrán etiquetas faltantes, por el ensamblado automático en otras zonas , aunque estoy respetando todas las etiquetas de la versión 4.
Lo he puesto en la cabecera, pero te dejo un pantallazo que queda más claro.
Ah, por cierto, voy despejando etiquetas, para no perderme, es facilísimo hacerse un lío.
El método, pues contar bytes y ver patrones coincidentes.
Los comentarios están quedando desplazados, espero que no mucho de su ubicación en esta versión del binario.
Nada que una ejecución paso a paso con un par de breakpoints no nos permita solucionar,
No te olvides de colocar la tablita que transformaste para 6809, pero volviendo a dejar el criterio de Z80.
Si se te ocurre otra forma de hacerlo, adelante, mientras que al final se ensamble y de el mismo binario que la versión 4.
Bájate el pasmo y se ensambla con:
pasmo --bin hobbit_v5r.asm h5r.bin.
pasmo --bin hobbit_v4.asm h4.bin.
Luego con un winmerge o herramienta similar se compara los dos ficheros bin y ya está .... si salen idénticos prueba
superada, sino ... algo se ha quedado por el camino
Suerte!
- Adjuntos
-
- HOBASM_V5r.rar
- (139.11 KiB) Descargado 152 veces
- luiscoco
- Mensajes: 2414
- Registrado: 15 May 2011 04:23
- Ubicación: Caracas, Venezuela
- Agradecido : 38 veces
- Agradecimiento recibido: 59 veces
Re: Fuente The Hobbit V1.2 ASM Z80 ZX Spectrum 48K.
Ya entendí. pero, sugiero lo siguiente, es que ya he avanzado mucho a mano, veras
Las partes que yo ya he tocado, déjamelas para terminarlas yo, tu me dices si están mal, no las hagas tu o nos vamos a volver un lió
El tabulador lo puse a 8 creo que porque estaba asi en el original, si quieres otra cosa dime.
Enderezare los bytes cambiados a 6809
Los datos son los datos, lo mejor es llamarlos con nombres propios y así no importara su ubicación y de una vez hacer el ASSEMBLER Listo que valla funcionando en 6809, o sea HOBBIT_6809_V5.ASS, en el tendríamos solo las cosas ya pasadas.
Esto quiere decir que por ejemplo los OBJETOS los deberiamos llamar OBJ_01 ..... y asi, ya que en el nuevo programa aun no sabemos su dirección
Con respecto a ASMv5.ASS hare lo que me dices, cierto, le daré la vuelta para que compile en SPECTRUM y ver si todo esta bien.
No avances en esta zona hasta que saque la versión 6
Las partes que yo ya he tocado, déjamelas para terminarlas yo, tu me dices si están mal, no las hagas tu o nos vamos a volver un lió
El tabulador lo puse a 8 creo que porque estaba asi en el original, si quieres otra cosa dime.
Enderezare los bytes cambiados a 6809
Los datos son los datos, lo mejor es llamarlos con nombres propios y así no importara su ubicación y de una vez hacer el ASSEMBLER Listo que valla funcionando en 6809, o sea HOBBIT_6809_V5.ASS, en el tendríamos solo las cosas ya pasadas.
Esto quiere decir que por ejemplo los OBJETOS los deberiamos llamar OBJ_01 ..... y asi, ya que en el nuevo programa aun no sabemos su dirección
Con respecto a ASMv5.ASS hare lo que me dices, cierto, le daré la vuelta para que compile en SPECTRUM y ver si todo esta bien.
No avances en esta zona hasta que saque la versión 6
- luiscoco
- Mensajes: 2414
- Registrado: 15 May 2011 04:23
- Ubicación: Caracas, Venezuela
- Agradecido : 38 veces
- Agradecimiento recibido: 59 veces
Re: Fuente The Hobbit V1.2 ASM Z80 ZX Spectrum 48K.
Esta pasando algo extraño
Al pasar de el original al tuyo encontré diferencias en los datos y ahora no se que pensar
La segunda linea es idéntica en ambas versiones,
pero de nuevo la tercera linea tiene muchas diferencias para se error casual, que hacemos?
Aunque el label es diferente, es la misma linea, solo que en posiciones diferentes (esto no tiene importancia)
incluso a esta linea, la número 13, le falta un byte aparte de las diferencias
No se que hacer, porque yo copiaba estos trozos del original, y al parecer son muy diferentes
Al pasar de el original al tuyo encontré diferencias en los datos y ahora no se que pensar
Código: Seleccionar todo
1ra lineea del Original
L_C0BF DB $01,$FF,$10,$40,$10,$40,$40,$E0,$A8,$87,$00,$00,$00,$00,$00,$00,$01,$1B,$9A,$92,$00,$B7,$90,$FF
L_C11B DB $01,$FF,$10,$40,$10,$40,$40,$E0,$A8,$87,$00,$00,$00,$00,$00,$00,$01,$1B,$B5,$92,$00,$D2,$90,$FF
Misma 1ra linea según tu código
La segunda linea es idéntica en ambas versiones,
pero de nuevo la tercera linea tiene muchas diferencias para se error casual, que hacemos?
Aunque el label es diferente, es la misma linea, solo que en posiciones diferentes (esto no tiene importancia)
incluso a esta linea, la número 13, le falta un byte aparte de las diferencias
Código: Seleccionar todo
Original
L_C211 DB $02,$FF,$FF,$FF,$00,$00,$00,$86,$4A,$05,$53,$02,$00,$00,$00,$00,$17,$21,$11,$0D,$94,$0E,$0D,$94,$19,$DD,$8E,$32,$A2,$A2,$FF
Misma linea según tu código
L_C26D DB $02,$FF,$FF,$FF,$00,$00,$00,$86,$4A,$05,$53,$02,$00,$00,$00,$00,$17,$21,$22,$11,$28,$94,$0E,$28,$94,$19,$F8,$8E,$32,$CD,$A2,$FF
No se que hacer, porque yo copiaba estos trozos del original, y al parecer son muy diferentes
-
- Mensajes: 457
- Registrado: 29 Oct 2010 22:05
- Agradecido : 1 vez
- Agradecimiento recibido: 15 veces
Re: Fuente The Hobbit V1.2 ASM Z80 ZX Spectrum 48K.
luis46coco escribió:Esta pasando algo extraño
Al pasar de el original al tuyo encontré diferencias en los datos y ahora no se que pensar
No se que hacer, porque yo copiaba estos trozos del original, y al parecer son muy diferentes
Efectivamente , por eso yo decidí comenzar desde cero con un fichero desemsamblado en crudo... ya me dió rabia , por eso dije en los primeros post que abandonaba el fichero comentado de internet.
Yo encontré diferencias en código y datos.
¿Comprendes ahora, porque iba paso a paso y a mano, cuando utilizaba información del fichero de internet ?
Me espero a tu V6 como dices, en cualquier caso seguimos hablando.
- luiscoco
- Mensajes: 2414
- Registrado: 15 May 2011 04:23
- Ubicación: Caracas, Venezuela
- Agradecido : 38 veces
- Agradecimiento recibido: 59 veces
Re: Fuente The Hobbit V1.2 ASM Z80 ZX Spectrum 48K.
Voy a tener que usar byte a byte tu fuente, no hay manera, ahora si es trabajo de chinos, jeje
Ahora bien, porque unos datos que tienen igual número de objetos , largo, cantidad de bytes, cambian tanto por una versión, eso es extraño.
Seguro lo averiguaremos al hacer funcionar trozos.
Necesitare un par de días para hacerlo
Ahora bien, porque unos datos que tienen igual número de objetos , largo, cantidad de bytes, cambian tanto por una versión, eso es extraño.
Seguro lo averiguaremos al hacer funcionar trozos.
Necesitare un par de días para hacerlo
Volver a “Proyecto The Hobbit 6809 por pser1”
¿Quién está conectado?
Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 4 invitados