Conversión código para 6809

Avatar de Usuario
pser1
Mensajes: 2101
Registrado: 08 Dic 2012 18:34
Agradecido : 220 veces
Agradecimiento recibido: 227 veces

Re: Conversión código para 6809

Mensajepor pser1 » 21 Jun 2015 12:33

Último mensaje de la página anterior:

Hola compañeros,
bienvenidas las pruebas que estáis haciendo todos, pero os recuerdo, tal como ya indiqué en mi post anterior lo siguiente:

---------------------------------------------------------------------------------------------------------------------
... Que tengáis claro que lo que se obtiene mientras vamos haciendo pruebas, es pura ficción
ya que constantemente el programa tropieza con partes no implementadas que se limitan a devolver un OK sin haber cumplido con
su misión que puede ser vital para seguir el juego correctamente.
Por ello si tenéis hecho el POKE 231,231 veréis la cantidad de cosas que requiere el programa y por tanto cosas que deja de hacer
---------------------------------------------------------------------------------------------------------------------

Ahora mismo la primera discordancia con la versión original es que no avisa de que Gandalf tiene el mapa.
Por lo tanto voy a seguir el programa a partir del momento en que muestra que vemos a Gandalf.
En realidad nunca he llegado hasta allí, pues antes de mostrar los objetos de la localización daba errores del stack (aparecía EAT muchas veces)
Viendo las direcciones de retorno que siempre aparecen como respuesta a una orden nuestra, está claro que falta código por añadir ...
Pero, repito, no añadiré nada, hasta que obtengamos la misma situación que en el original ... SpecEmu por ejemplo

saludos
pere

Avatar de Usuario
pser1
Mensajes: 2101
Registrado: 08 Dic 2012 18:34
Agradecido : 220 veces
Agradecimiento recibido: 227 veces

Re: Conversión código para 6809

Mensajepor pser1 » 03 Sep 2015 15:24

Hola compañeros,

Esta es la situación actual de la conversión con los cambios que he realizado
desde la última actualización que os subí ... que era la "H6809sF.txt".
Ahora subo la versión "HOB0812.txt" cambio de nombre y sistema de numeración.

PARTE 1 de 4
===========
Durante este periodo he estado añadiendo / corrigiendo funcionalidades,
cambiando muy a menudo de versión como ya es mi costumbre.
Os detallo los cambios que aparecen con esta última versión:

Código: Seleccionar todo

Versión de fuente - Cambios(s) realizado(s)
g  - se añade código para detectar mas rutinas no implementadas
h  - se crea rutina ShowHexa para facilitar ver datos de version g
i  - se añade Action_Look (y se descubren múltiples errores!)
j  - correcciones en PrintDescriptionHL, GetDeterminerWord, L_7E30,
     DrawLocGFX, GetLocPointer2IX
k  - PrintDescriptionIY no guardaba registro IY
l  - GetNextObjectAndID no salvaba registro de flags CC
m  - se añade compatibilidad con DosPlus49.b y DosPlus5.0
n  - L_9FC7 no recuperaba registro IY en tres puntos del programa
o  - L_742D usaba AF invertidos (F en lugar de A)
p  - se recuperan los 512 bytes antes dejados para Basic
q  - se pasa a MAP1 (todo RAM = 64k) ya que los 512 bytes no solucionan el
     problema de esapcio necesitado.
r  - se reorganizan datos para ganar el máximo posible de RAM para el programa
s  - vuelvo a dejar los 512 bytes para pruebas desde Basic
t  - se añade Action_Dir y rutinas relacionadas
u  - se añade L_910E (Open Objects) y rutinas relacionadas

Se pasa a version 8.nn
01 - correcciones errores actualización y uso del puntero IY
02 - Action_Dir no guarda nueva localización
03 - al ir a LOC05 daba File Not Found
04 - no detecta cuando una LOC no tiene pantalla asociada y da error
05 - no calcula bien el espacio libre en linea de pantalla. Parte palabras
06 - cuando no muestra pantalla de una LOCxx, describe LOC01 en su lugar
07 - si no debe presentar pantalla, omite las posibles salidas
08 - tras mostrar un texto espera tecla (el original NO lo hace)
09 - HELP falla si debe buscar el texto en la tabla L_83CD
10 - PAUSE no espera tecla!
11 - corrección L_6E97
12 - revisión código desde inicio hasta antes de PrintMsg


Saludos
pere
Adjuntos
25 - HOB0812 DSDD.zip
Disco doble densidad (360k)
(134.98 KiB) Descargado 57 veces

Avatar de Usuario
pser1
Mensajes: 2101
Registrado: 08 Dic 2012 18:34
Agradecido : 220 veces
Agradecimiento recibido: 227 veces

Re: Conversión código para 6809

Mensajepor pser1 » 03 Sep 2015 15:26

PARTE 2 de 4
===========
El primer objetivo de llegar a ver la primera localización, su descripción, las posibles
salidas y los objetos / personajes que están en ella ya está conseguido.
Además también indica que Gandalf tiene el mapa ...
A continuación debería haber convertido "ProcesBilboEvents" (719 líneas) ya que es lo que pide
el programa para llevar a cabo acciones de los personajes, pero ésto implica las macros ...
Habida cuenta que, de promedio, cada línea ha generado 2 bytes de código, harían
falta 1.438 bytes, pero ya SOLO me quedaban libres para el programa 1.313 bytes.
Como tarde o temprano íbamos a necesitar mas de los 32K, llegó el temido momento de
pasar a modo 64k (mapa1) para así recuperar las 8k de la parte alta de memoria ($E000-$FEFF).
Esto conlleva otras complicaciones, ya que al compilar se genera un único binario y necesitamos
partirlo en dos bloques de código (parte baja y alta) separados por el stack y las 24k de ROM.

De momento he atacado otra acción: "ACTION_DIR" de forma que ya se puede mover a Bilbo
por todo el laberinto, aunque los demás personajes no hagan nada. Buena idea, Chema!!
Para ello, se han incorporado todas las pantallas que tenemos, excepto la 31 que está
pendiente de conseguir ... Animo José Luis!
Esto ha implicado mas consumo de espacio en disco y he pasado a utilizar uno de 360k en lugar
del normal de 180k
El próximo paso complejo será revisar el parser ...

A partir de ahora hay que usar un "DRAGON64" real o emulado y lanzar el programa:
H0812.BAS
Al arrancar pide si queremos B/N. Si respondemos B lo hará, sinó será en verde-negro
Además pregunta si quieres ver "Rutinas no implementadas". Responde R si lo deseas
Este programa Basic está contenido dentro del binario que se carga posteriormente, de forma
que cuando salgamos con QUIT y luego BREAK, al regresar al BASIC podremos ver que todavía está
vivo y se puede ejecutar nuevamente para cambiar de parámetros iniciales.

Debo insistir hasta la saciedad, que tenemos solamente las acciones LOOK, OPEN y GO implementadas
o sea que cualquier experimento con el parser con otros comandos puede resultar en basurita!
Lo que si he comprobado es que puedo concatenar órdenes, por ejemplo:
OPEN DOOR, E, NE, S, SE, E y se ejecutan correctamente.

No estaría de más que alguien nos indicara cuales van a ser los comandos mas utilizados, para
implementarlos en este orden precisamente.

Saludos
pere

Avatar de Usuario
pser1
Mensajes: 2101
Registrado: 08 Dic 2012 18:34
Agradecido : 220 veces
Agradecimiento recibido: 227 veces

Re: Conversión código para 6809

Mensajepor pser1 » 03 Sep 2015 15:46

PARTE 3 de 4
===========
Avance Proyecto Conversión The Hobbit 2015-09-03
Ficheros código Z-80 y número de líneas de código contenido

Código: Seleccionar todo

239.594 01  - Start y MainLoop                                          (557 líneas).txt
 44.089 02  - 6DD6 y 6E97                                               (795 líneas).txt
 41.933 03  - SayWhat y PrintMsg                                        (703 líneas).txt
 21.492 04A - IfB17AZeroClearAndJmpTable75D2                            (348 líneas).txt
 17.105 04B - Despacho rutinas tabla 75D2 mediante JMP ,X               (317 líneas).txt
 24.763 04C - Despacho rutinas tabla 8271 mediante JMP ,X               (392 líneas).txt
 19.945 05A - ExecuteUsrCommandsBilboEvents y DescribeActionOnScreen    (301 líneas).txt
 40.522 05B - AnalyzeUsrCommand                                         (701 líneas).txt
 35.568 05C - ExecuteGetB6FB y ExecuteAction                            (571 líneas).txt
 25.697 U01 - Action_Look                                               (484 líneas).txt
 20.203 U02 - Action_Dir                                                (374 líneas).txt
  3.532 U03 - L_910E (Open Objects)                                     ( 58 líneas).txt
- TOTAL YA CONVERTIDO: Ocupa: 11.119 bytes 5.601 líneas (65,8%)

Código: Seleccionar todo

           
 46.988 05D - ProcesBilboEvents                                         (719 líneas).txt
 50.680 06  - Llamadas desde OBJETOS:  06A-06B                          (865 líneas).txt
 40.812 07  - Llamadas desde SCRIPTS:  07                               (656 líneas).txt
 37.585 08  - Llamadas desde ACCIONES: 08A-08B                          (672 líneas).txt
- TOTAL PTE CONVERTIR: 2.912 líneas (34,2%)
---- TOTAL: 8.513 líneas
Una simple proyección, asumiendo que se pueda mantener el nivel de conversión,
nos dice que el código ocupará: 16.900 bytes
o sea que se necesitarán otros 5.781 bytes

Actualmente nos quedan libres 8.248 bytes
así que nos sobrarán :-) 2.467 bytes
Aunque puede que al ir añadiendo código también haya que añadir variables relacionadas
que tirarán de este hipotético sobrante.
-------------------------------------------------------------------------------------------------------------------
Aparte del código convertido hay que tener en cuenta que llevamos también adaptada
una cantidad de datos importante:
Un bloque de 3.889 bytes, uno de 4.657 bytes y otro de 3.274 bytes (ver Mapa)
En total son 11.820 bytes ... MAS que el código ya traducido!
He optado por pegar el texto porqué estoy convencido que mucha gente descarga los adjuntos
pero suelen acabar tirados por ahí sin que nadie los lea ....

Saludos
pere
Adjuntos
91 - Avance Proyecto The Hobbit 2015-09-03.zip
(1.24 KiB) Descargado 37 veces

Avatar de Usuario
pser1
Mensajes: 2101
Registrado: 08 Dic 2012 18:34
Agradecido : 220 veces
Agradecimiento recibido: 227 veces

Re: Conversión código para 6809

Mensajepor pser1 » 03 Sep 2015 15:54

PARTE 4 de 4
===========
CONTENIDO POR BLOQUES DE MEMORIA - 2015-09-03

Código: Seleccionar todo

Bloque  Contenido          Ocupa en Spectrum  Long. Bytes   Hexa  Ubicado en
01   variables del sistema             1.024 bytes ($0400) $0000-$03FF ok
02   pantalla de texto                   512 bytes ($0200) $0400-$05FF ok
03   área trabajo D.O.S.               1.536 bytes ($0600) $0600-$0BFF ok
04   RAM Graficos PMode4                6.144 bytes ($1800) $0C00-$23FF ok   9.216 ($2400)
05   Zona para Basic   *** LIBRE *** (Z0)       512 bytes ($0200) $2400-$25FF ok    512 ($0200)
06   Ocupación actual Código           9.862 bytes ($2686) $2600-$4C85 ok                
07   Variables para 6809             185 bytes ($00B9) $4C86-$4D3E ok         
08   Variables internas PGM (reubicadas)     1.072 bytes ($0430) $4D3F-$516E ok  11.119 ($2B6F)
09   *** LIBRE *** (Z1)           3.729 bytes ($0E91) $516F-$5FFF ok   3.729 ($0E91)

Código: Seleccionar todo

20   WordIndex                 $6000-$603F        64 bytes ($0040) $6000-$603F ok
21   Dictionaries              $6040-$6BFF     3.008 bytes ($0BC0) $6040-$6BFF ok
22   CommonWords               $AD3D-$AD7C        64 bytes ($0040) $6C00-$6C3F ok
23   Location Text Descrip.    $B563-$B6D9       375 bytes ($0177) $6C40-$6DB6 ok
24   Loc Help Mesg table       $83CD-$83EE        34 bytes ($0022) $6DB7-$6DD8 ok
25   LOCTABLE (index)          $B9E0-$BA7F       160 bytes ($00A0) $6DD9-$6E78 ok
26   OBJECT Index table        $C063-$C11A       184 bytes ($00B8) $6E79-$6F30 ok   3.889 ($0F31)
30   *** LIBRE *** (Z2)             4.007 bytes ($0FA7) $6F31-$7ED7 ok   4.007 ($0FA7)
40   Cadenas y Stack           $7ED8-$7FFF       296 bytes ($0128) $7ED8-$7FFF ok            
41   Intérprete BASIC                 16.384 bytes ($4000) $8000-$BFFF ok           
42   Sistema D.O.S              8.192 bytes ($2000) $C000-$DFFF ok  24.872 ($6128)

Código: Seleccionar todo

50   Scripts                $C82D-$CA83       599 bytes ($0257) $E000-$E256 ok
51   ROMFONT fonts Spectrum    $3D00-$3FFF       768 bytes ($0300) $E257-$E556 ok
52   MAINFONT 42 chars/lin     $8822-$8B21        768 bytes ($0300) $E557-$E856 ok
53   Text Messages             $AD7D-$B479     1.789 bytes ($06FD) $E857-$EF53 ok
54   Determiner table 1        $AD2D-$AD34         8 bytes ($0008) $EF54-$EF5B ok
55   Determiner table 2        $AD35-$AD3C         8 bytes ($0008) $EF5C-$EF63 ok
56   Preposition Table         $BA80-$BA89        10 bytes ($000A) $EF64-$EF6D ok
57   Actions table             $AB53-$AD2C       474 bytes ($01DA) $EF6E-$F147 ok
58   Location Help Messages    $B47A-$B562       233 bytes ($00E9) $F148-$F230 ok   4.657 ($1231)

Código: Seleccionar todo

60K   OBJECTS              $C11B-$C72F     1.557 bytes ($0615) $F231-$F845 ok
61K   Locations                 $BA8A-$C062     1.497 bytes ($05D9) $F846-$FE1E ok
62K   DATABLK1                  $B6EB-$B707        29 bytes ($001D) $FE1F-$FE3B ok
63K   DATABLK3                  $CA84-$CB42       191 bytes ($00BF) $FE3C-$FEFA ok   3.274 ($0CCA)
70   espacio no utilizado               5 bytes ($0005) $FEFB-$FEFF ok       5 ($0005)
71   Vectores sistema             256 bytes ($0100) $FF00-$FFFF ok     256 ($0100)

saludos
pere
Adjuntos
91 - Mapa de memoria The Hobbit x 6809 - 2015-09-03.zip
(1.75 KiB) Descargado 52 veces

Avatar de Usuario
ron
Mensajes: 17707
Registrado: 28 Oct 2010 14:20
Ubicación: retrocrypta
Agradecido : 775 veces
Agradecimiento recibido: 830 veces

Re: Conversión código para 6809

Mensajepor ron » 03 Sep 2015 18:40

Que grande Pser1 !!!

Vamos a ver si de entrada podemos mirar esto.

dgnhbrw81sep1501.png
dgnhbrw81sep1501.png (44.6 KiB) Visto 1071 veces


hb812_02.png
hb812_02.png (59.71 KiB) Visto 1071 veces


hb812_03.png
(2.27 KiB) Descargado 814 veces


hb812_04.png
hb812_04.png (18.56 KiB) Visto 1071 veces


hb812_05.png
hb812_05.png (17.28 KiB) Visto 1071 veces


El problema es que mientras el juego no deje ver el mapa no nos deja seguir en ninguna dirección y no le podemos decir al juego que nos lea el mapa ya que nos contesta que no podemos ir al norte.

A ver si podemos mirar que pasa justo en este punto, creo que superado esto podremos seguir avanzando. Ya me dices.

Avatar de Usuario
pser1
Mensajes: 2101
Registrado: 08 Dic 2012 18:34
Agradecido : 220 veces
Agradecimiento recibido: 227 veces

Re: Conversión código para 6809

Mensajepor pser1 » 03 Sep 2015 18:51

Hola Rodrigo,

siento haber explicado tan rematadamente mal ....

Los únicos comandos que funcionan son: LOOK, OPEN y GO
El resto es pelearse con el diablo. Faltan muchas rutinas y la respuesta es (como has comprobado) simplemente basura!

Puedes moverte por el mapa, yo tengo una copia en papel para no perderme, simplemente haciendo:
OPEN DOOR (o no podemos salir), tambien OPEN ROUND GREEN DOOR, incluso OPEN ALL
GO EAST o simplemente E
y así sucesivamente.
Como ya estoy cansado de escribir lo mismo, cuando arranco le pongo siempre:
OPEN DOOR, E, NE, S, SE y ya estoy en Rivendel
Y pensar que Frodo necesitó la tira de tiempo para llegar a ver a Elrond (y a Trancos y barrancos) ... aunque ésto ya es la continuación!

saludos
pere

Avatar de Usuario
ron
Mensajes: 17707
Registrado: 28 Oct 2010 14:20
Ubicación: retrocrypta
Agradecido : 775 veces
Agradecimiento recibido: 830 veces

Re: Conversión código para 6809

Mensajepor ron » 04 Sep 2015 12:50

Comprendido ! Seguimos con las pruebas, ensayo y error, a ver hasta donde llegamos !!!

Imagen
0812pser1_rw_go.png
0812pser1_rw_go.png (38.62 KiB) Visto 257 veces

Avatar de Usuario
ron
Mensajes: 17707
Registrado: 28 Oct 2010 14:20
Ubicación: retrocrypta
Agradecido : 775 veces
Agradecimiento recibido: 830 veces

Re: Conversión código para 6809

Mensajepor ron » 08 Sep 2015 20:04

screen81201rw.png


Bueno bueno, pues como iba comentando he salido de Rivendell y aparecen varias alternativas.

screen81202rw.png


Y los valores que devuelve van cambiando según se va yendo de un sitio a otro. Claro, como muchos comandos están deshabilitados, pero creo que voy en buena linea. En todo el tiempo de ejecución ni un solo pete de programa, lo que haga no lo hará todavía correctamente, pero la ejecución ahí está para verla.

screen81203rw.png


A ver si contrasto el mapa que estoy haciendo : desde y hasta donde se puede ir según que rutas y cuando tenga datos, los subo a ver que pasa.

Avatar de Usuario
pser1
Mensajes: 2101
Registrado: 08 Dic 2012 18:34
Agradecido : 220 veces
Agradecimiento recibido: 227 veces

Re: Conversión código para 6809

Mensajepor pser1 » 08 Sep 2015 20:38

Hola Rodrigo,

tenemos el mapa REAL del juego casi desde el principio.
Lo que pasa es que al no ser código y por tanto no tener que traducirlo quizá no hemos hablado de él a menudo.
Lo adjunto para evitarte la paliza.
De paso verás a qué sitios puede irse en teoría (si no hay condiciones especiales que prohiban un determinado movimiento)

saludos
pere
Adjuntos
Hobbit - Game Map v6 big one.zip
(708.13 KiB) Descargado 53 veces


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 1 invitado