Autor Tema: Programación en BASIC  (Leído 4778 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado necromode

  • Calculadora
  • Mensajes: 20
  • Fecha de registro: Noviembre 05, 2011, 01:22:01 am
    • Ver Perfil
    • Email
Re: Programación en BASIC
« Respuesta #15 en: Mayo 25, 2023, 16:03:20 pm »
Acabo de probarlo y me funciona.

Veamos:
Platoon 1986
Dosbox 0.74-3

Cargo plat.bas en el powerbasic 3.5 (o basic similar)
Run
Escojo las opciones que me interesan, para probar digo que sí a todo.
En la última opción 'unidad para salvar el cargador' escojo C que es donde dosbox se monta por defecto
Se genera cplat.com
Copio cplat.com a la carpeta del platoon
Hago una copia de platoon.exe a o.exe (esto es debido a que en el cargador está así tal cual y busca ese archivo) (veré si puedo modificarlo)
Ejecuto cplat.com contra dosbox y el se encarga de cargar o.exe que es el juego.
Y funciona (no sale ningún enemigo).

No se si estos pasos son parecidos a los tuyos.

« Última modificación: Mayo 25, 2023, 16:06:26 pm por necromode »

Desconectado Scr34m

  • AMD Athlon
  • ***
  • Mensajes: 728
  • País: sc
  • Fecha de registro: Septiembre 12, 2021, 11:52:52 am
    • Ver Perfil
    • Mis Aportes
Re: Programación en BASIC
« Respuesta #16 en: Mayo 25, 2023, 16:21:52 pm »
Hola,

No lo he probado pero cambiaría esta línea:
430 OPEN "O", #1, U$+":"+N$+".COM", NB

El primer parámetro es el nombre del archivo, y el COM si es EXE creo se debería cambiar también?

Salu2

EDITO:
Me autocorrijo:
OPEN modestring, #filenum, filespec [,record size]

Con lo cuál, abrimos para salida secuencial "O".
Lo del .COM si que lo cambiaría a punto EXE, y habría que modificar la variable N que sería el nombre.
Está definido en las primeras lineas, y es el nombre del archivo cargador CPLAT...

Está claro, el cargador genera el .COM para ejecutar el juego trucado.
Para cambiar el nombre del archivo que ejecuta:

600 DATA "9401CD200000000000002E5C6F2E657865000000", 1003 : REM  /  8 /
610 DATA "0000002A2A2A204520522052204F2052202A2A2A", 838  : REM  /  9 /


Donde
"2E5C6F2E657865" es = ".\o.exe"
"2E5C706C61746F6F6E2E657865" = ".\platoon.exe"

Con lo cuál, cambiando esos bytes cambiaremos el nombre.
De todas formas tiene una comprobación de que son los datos originales, con el cálculo de SUMA y CHECKSUM.
El valor posterior a la ristra de bytes, es la suma de los bytes de esa linea DATA.

No me he metido en profundidad, pero habría que tocar varias cosas.

También habría que ver el espacio que tenemos disponible etc, pero por ahí van los tiros...

Para simplificarlo se me ocurre un simple:
COPY PLATOON.EXE O.EXE

P.D.
La de tiempo que no tocaba Basic...

« Última modificación: Mayo 25, 2023, 17:53:39 pm por Scr34m »


Scr34m
"Es de bien nacido ser agradecido"

Password de mis aportes :zip:: AbandonSocios

Desconectado necromode

  • Calculadora
  • Mensajes: 20
  • Fecha de registro: Noviembre 05, 2011, 01:22:01 am
    • Ver Perfil
    • Email
Re: Programación en BASIC
« Respuesta #17 en: Mayo 25, 2023, 18:19:28 pm »
En assembler, esta es la porción de la sección de datos original del cargador que nos interesa.
Vemos que por encima y debajo del db 'a:\o.exe' hay más datos que son referenciados/utilizados en otras partes de código.
Eso nos da un margen de 8 carácteres para el nombre del ejecutable .exe incluído.
La suma/checksum de cada línea se calcula sumando los valores hexadecimales (00+00+00, etc) de esa línea y convirtiéndolo a decimal.

seg000:018E                               start endp
seg000:018E
seg000:018E                               ; ---------------------------------------------------------------------------
seg000:0190 00 00                         word_10190 dw 0                         ; DATA XREF: start+2↑w
seg000:0190                                                                       ; start+82↑r
seg000:0192 00 00                         word_10192 dw 0                         ; DATA XREF: start+A↑w
seg000:0192                                                                       ; start+86↑r
seg000:0194 00 00                         word_10194 dw 0                         ; DATA XREF: start+6↑w
seg000:0194                                                                       ; start+8A↑r
seg000:0196 61 3A 5C 6F 2E 65 78 65 00    aAOExe db 'a:\o.exe',0                  ; DATA XREF: start+12↑o
seg000:019F 00 00                         word_1019F dw 0                         ; DATA XREF: start+16↑w
seg000:019F                                                                       ; start+22↑o
seg000:01A1 00 00                         word_101A1 dw 0                         ; DATA XREF: start+1C↑w
seg000:01A3 2A 2A 2A 20 45 20 52 20 52 20+aERROR db '*** E R R O R ***',0Dh,0Ah
seg000:01A3 4F 20 52 20 2A 2A 2A 0D 0A 24+db '$',0
seg000:01B8 00 00 00 00 00 00 00 00 00 00+db 10h dup(0), 0Dh, 0Ah
seg000:01B8 00 00 00 00 00 00 0D 0A       seg000 ends
seg000:01B8
« Última modificación: Mayo 25, 2023, 18:26:03 pm por necromode »

Desconectado Crafterlock

  • IBM PC
  • *
  • Mensajes: 121
  • País: es
  • Sexo: Masculino
  • Fecha de registro: Julio 12, 2018, 01:33:33 am
    • Ver Perfil
    • Email
Re: Programación en BASIC
« Respuesta #18 en: Mayo 25, 2023, 22:17:01 pm »
@necromode sigo exactamente el mismo procedimiento que describes, pero sigue sin funcionarme.

He probado con distintas versiones del juego pero ninguna carga. Cuando ejecuto el cplat.com simplemente aparece el cursor del sistema debajo y ahí se queda.

He encontrado una versión que curiosamente el .exe ya estaba cambiado a o.exe, pero en esta al ejecutar el cargador se queda la pantalla en negro y de ahí no avanza.

Me queda probar con otro DOSBox, que el que tengo es la primera versión del 0.74-3 en inglés, pero no creo que ese sea el problema, todo lo demás siempre me ha funcionado bien.
Yo soy el dolor.

Desconectado necromode

  • Calculadora
  • Mensajes: 20
  • Fecha de registro: Noviembre 05, 2011, 01:22:01 am
    • Ver Perfil
    • Email
Re: Programación en BASIC
« Respuesta #19 en: Mayo 26, 2023, 00:07:17 am »
Por descartar, se genera bien el cplat.com?, debería ser de 202 bytes.

Se me ocurre también ejecutar el Reset Options.bat en la carpeta de dosbox.

Otra opción en el foro de vogons:
DOSBox 0.74-3 Options.bat

There have been numerous threads here describing this same problem, swiftly remedied by changing output=surface to output=opengl or output=openglnb.
 output: What video system to use for output.
 Possible values: surface, overlay, opengl, openglnb, ddraw.
Procedimiento igual a este vídeo: https://www.youtube.com/watch?v=a-dr84MQvJI
« Última modificación: Mayo 26, 2023, 00:43:48 am por necromode »

Desconectado Crafterlock

  • IBM PC
  • *
  • Mensajes: 121
  • País: es
  • Sexo: Masculino
  • Fecha de registro: Julio 12, 2018, 01:33:33 am
    • Ver Perfil
    • Email
Re: Programación en BASIC
« Respuesta #20 en: Mayo 27, 2023, 00:33:48 am »
¡Por fin, mil gracias @necromode!  :bravo2:
Esa ha sido la solución, cambiar el video de salida a openglnb y ha ido perfecto.
Creo que después de 34 años podré llegar a ver el final del maldito juego... :lol:
Yo soy el dolor.

Desconectado necromode

  • Calculadora
  • Mensajes: 20
  • Fecha de registro: Noviembre 05, 2011, 01:22:01 am
    • Ver Perfil
    • Email
Re: Programación en BASIC
« Respuesta #21 en: Mayo 27, 2023, 00:37:05 am »
Genial!

Desconectado Crafterlock

  • IBM PC
  • *
  • Mensajes: 121
  • País: es
  • Sexo: Masculino
  • Fecha de registro: Julio 12, 2018, 01:33:33 am
    • Ver Perfil
    • Email
Re: Programación en BASIC
« Respuesta #22 en: Mayo 27, 2023, 01:25:27 am »
Un detalle que se me había pasado por alto @necromode.

El cargador solo funciona en la primera versión europea del juego, que es en CGA,
que es la versión reseñada en la revista de donde procede el cargador.

En la versión americana que trae las paletas Hércules, CGA, EGA y Tandy el cargador no funciona.
Yo soy el dolor.

Desconectado necromode

  • Calculadora
  • Mensajes: 20
  • Fecha de registro: Noviembre 05, 2011, 01:22:01 am
    • Ver Perfil
    • Email
Re: Programación en BASIC
« Respuesta #23 en: Mayo 27, 2023, 10:07:47 am »
Cierto, Cheat Engine https://www.cheatengine.org/ debería ser una posible solución.

Desconectado Crafterlock

  • IBM PC
  • *
  • Mensajes: 121
  • País: es
  • Sexo: Masculino
  • Fecha de registro: Julio 12, 2018, 01:33:33 am
    • Ver Perfil
    • Email
Re: Programación en BASIC
« Respuesta #24 en: Mayo 28, 2023, 00:50:20 am »
Bueno, tampoco es algo como para estar ya buscando los trucos a piñón fijo.
La gracia radica en usar el cargador de la época.
Y a mi ya me está bien jugar la versión CGA, que es la que tuve en su día.

Gracias por todo.
Yo soy el dolor.