PDF de programación - Videojuegos en lenguaje ensamblador para negados

Imágen de pdf Videojuegos en lenguaje ensamblador para negados

Videojuegos en lenguaje ensamblador para negadosgráfica de visualizaciones

Publicado el 22 de Mayo del 2021
1.285 visualizaciones desde el 22 de Mayo del 2021
432,6 KB
21 paginas
Creado hace 5a (22/08/2018)
Videojuegos en lenguaje ensamblador para negados

Creación de videojuegos en ZX Spectrum de forma profesional para

gente sin conocimientos previos de programación



Bienvenido


Estimado alumno, ha decidido entrar en el fascinante mundo de la programación de
videojuegos en lenguaje ensamblador. Le felicitamos por su valentia, arrojo, y ganas de
sufrimiento... estooo, por su coraje para crear videojuegos de forma profesional.

El curso estaba dividido originalmente en 728 entregas, de las cuales el 60% eran teoría
sobre procesadores, acceso a memoria, y rutinas avanzadas de e/s, y el 40% restante
ejercícios prácticos con no menos de 500 líneas de código. Se llamaba "Curso avanzado de
programación en lenguaje ensamblador y resolución de criptogramas cuánticos". Aquel
curso no conseguimos que ningún alumno pasara de la primera lección ("Algebra de Boole
mediante integrales de 5º grado").

A continuación realizamos una remodelación del plan de estudios, obteniendo como
resultado el "Curso de aprendizaje de programación en ensamblador para ZX Spectrum".
El curso constaba de 177 entregas, y regalábamos un póster de Sir Clive Sinclair haciendo
topless en Ibiza. Curisamente no se llegó a matricular ningún alumno, y eso que usamos
el poster de Sir Clive como cartel anunciador.

En nuestro tercer intento realizamos un curso de 83 entregas titulado "Videojuegos en
ensamblador para principiantes". Con el curso se regalaban vales para tomarse unas
cervezas al principio de cada lección... y fué un total éxito. El bar de la academia no daba
a basto, la pega es que los profesores también se hiban de cañas por falta de alumnos.

Es por ello que hemos realizado este curso "Videojuegos en lenguaje ensamblador para
negados". No hay regalos, y las lecciones no pasarán de la docena.

Conocimientos previos

Para la realización de este cursillo es necesario:

- el kit de programación que adjuntamos
- tener manos para poder escribir
- saber leer

Da exactamente igual que haya programado o no alguna vez en su vida, tampoco que
conozca como se usa un programa ensamblador, ni mucho menos que tenga graduado
escolar (el que escribe estas líneas sólo tiene el certificado de escolaridad... quien hiba a
pensar que luego sería ingeniero).

Al grano

Eso es todo, puede usted pasar a la primera lección y comenzar a realizar videojuegos
profesionales con conocimientos nulos del lenguaje.

Un cordial saludo

Radastan

Ensamblando


Preparando el ensamblador

En su fantástico paquete de iniciación, con el texto de introducción, las postales de
Doraemon, y un Z80 quemado por overclocking en nuestros laboratorios, debe usted
encontrar un fichero ZIP denominado "kit_ensamblador.zip".

En caso contrario puede usted encontrar todo en:

http://www.bytemaniacos.com/ficheros/curso_asm/

Una vez descomprimido a un directorio encontrará varios ficheros, de los cuales sólo le
interesan:

compilar.bat
programa.asm

Compilando

Si usted ejecuta "compilar.bat" advertirá que se crean dos nuevos ficheros, de los cuales
sólo le interesa:

programa.tap

dicho fichero es un ejecutable que se puede usar con cualquier emulador de ZX Spectrum
o reproducir con Winamp para cargarse en un ZX Spectrum real como si fuera una cinta.
En este último caso necesitaría el plug-in:

http://www.winamp.com/plugins/details.php?id=9186

En la primera ejecución debería obtener la letra "o" en pantalla, la cual puede mover con
las teclas "q a o p".

Editando sus programas

Si edita el fichero "programa.asm" con cualquier procesador de textos (ej. Notepad de
Windows). Advertirá que dentro hay un montón de insultos sin sentido, denominado
lenguaje ensamblador, y un texto sin pies ni cabeza tras ";", los cuales llamaremos
comentarios.

Los programas sólo se componen de estos dos tipos de contenidos: lenguaje ensamblador
y comentarios. Usted puede realizar programas sin comentarios, no son necesarios para el
ensamblador ni para el propio programa, pero si para mantener su cordura en el desarrollo
de su creación.

Le rogamos usar tantos comentarios como le sean precisos, no se corte.

Una vez editado su programa guarde una copia del fichero en otra parte con el nombre

ld a, 79

que le venga en gana y sobreescriba el fichero programa.asm. Tras esto sólo tiene que
ejecutar "compilar.bat" y ya tendrá un fichero TAP listo para su uso.

Errores

Si usted teclea mal un comando de ensamblador, o ha realizado algo incorrectamente,
verá que la compilación muestra un mensaje de error y el fichero programa.tap no se crea
o no se actualiza con los cambios. En dicho caso el ensamblador proporcionará el número
de línea donde se encuentra el error.

Un primer intento

Vamos a realizar una primera incursión en el lenguaje ensamblador.
No se asuste, será algo sencillo.

Localice la línea:



está casi al final del programa.

Cambie el 79 por 81, grabe el fichero programa.asm, y vuelva a ensamblar, ahora en vez
de una "o" debería poder mover una "q".

Ahora vamos a localizar la línea:



está por el principio del programa.

Cambie el 1 por un 2, grabe el fichero programa.asm, y vuelva a ensamblar, ahora en vez
de un borde azul debería obtener unborde de color rojo.

¿Ve que fácil?

En la próxima lección le enseñaremos desde cero como realizar un programa en
ensamblador sin haber programado antes.

; borde azul, para actualización inmediata

ld a, 1



Comenzando

RET


Nuestro primer programa

Bien, ya sabemos como ensamblar nuestro programa y estamos ansiosos por saber
programar. En otros cursos se frenaría al alumno y se le daría unas nociones de álgebra
digital, arquitectura del Z80, o fabricación de cócteles Molotov. Pero aquí no, vamos al
grano.

Vamos a describir como se realiza lo básico, el esqueleto de un programa en ensamblador:

; Nuestro primer programa

ORG 32768



Ya está, así de simple, si lo ensambla verá que el ZX Spectrum retornará a BASIC sin
haber hecho ABSOLUTAMENTE NADA. ¿No es genial? ¡¡NADAAAAAAAAAAAAA!!

¿Y el ORG 32768 ese? ¿para qué sirve? si se hace esta pregunta le daremos una respuesta
muy sencilla: es la posición de memoria donde el programa va a estar y es requerida por
el programa ensamblador. De momento no cambie dicha dirección, si lo hace verá que su
programa puede que no funcione, deje esas cosas para otro día.

¿Y el RET? eso es ensamblador, de hecho la única línea de código que hay en el programa.
Su función es muy simple: retornar. En este caso, como es la última línea, retornará al
BASIC. Es más, nuestro programa es una subrutina que llamamos desde BASIC con
randomize usr 32768 (no hace falta que recuerde esto).

Estructura de la memoria

Vamos a ver como es la estructura básica de la memoria de un ZX Spectrum:

00000 - Inicio de la ROM (sistema operativo BASIC)
16383 - Fin de la ROM

16384 - Inicio de la memoria de pantalla
23295 - Fin de la memoria de pantalla

23296 - Comienzo de la memoria libre
65535 - Fin de la memoria libre

Con esto tenemos lo básico para trabajar.

Como puede ver la ROM está entre 0 y 16383, ahí estan alojadas todas las subrutinas que
BASIC usa, entre otras cosas. Poco a poco le iremos mostrando cuales son las subrutinas
más interesantes y cómo se usan.

La pantalla está entre 16384 y 23295. Su estructura no la vamos a explicar poque no
vamos a necesitarlo, le proporcionaremos directamente las rutinas para manejar gráficos y
punto.

La memoria libre empieza a partir de 23296, pero nuestros programas no los
comenzaremos hasta bastante después. ¿por qué? porque si lo hacemos ya no podemos
usar las subrutinas de la ROM y volver al BASIC, puesto que el comienzo de este espacio
se usa para datos del BASIC (y por ende de subrutinas de la ROM). Hemos escogido
32768 para empezar, lo que nos da 32K de espacio para nuestro programa, más que
suficiente para un juego sencillo. ¿Y los 128K? nos olvidamos de ellos de momento, si
consigue realizar un juego para 48K nos damos por satisfechos.

Una buena idea es plasmar el mapa de memoria en un papel. Dibuje un rectángulo
alargado verticalmente, el cual debe dividir en 4 partes iguales. Cada parte se
corresponden con 16K de memoria, haciendo 64K en total:

- El primer bloque sería la ROM
- El segundo la pantalla, los datos de la ROM, y el programa BASIC
- El tercer y cuarto bloque sería nuestro programa

Nuestro segundo programa

; Nuestro segundo programa

ORG 32768



¿Y esto? ¿pero que co%$? tranquilo, vamos a ir poco a poco. Si lo ensambla y ejecuta
verá que el fondo de la pantalla cambia a color azul, así de simple. Ahora se lo
explicamos:

ld a,15

A esto llamamos una instrucción de carga, coje un valor (en este caso 15) y lo introduce
en el registro A. Y usted se acaba de perder, no sabe lo que son los registros. No nos hace
falta aún, imagine que ha metido el valor 15 en una hoja de papel que hay dentro del
ordenador, y que dicha hoja la usa para lo que usted quiera.

ld (23693),a

Esto es otra instrucción de carga, pero más rara todavia, lo que hace es introducir esa
hoja de papel que hemos escrito (a) en la posición de memoria 23693. Por un casual dicha
dirección es la que usa el ordenador para almacenar los colores con que se escribe en
BASIC en pantalla.



; papel azul y tinta en blanco
; actualizamos la variable de atributos en pantalla
; actualizamos la variable de atributos en pantalla
; (parte baja)

RET


ld a, 15
ld (23693),a
ld (23624),a


call 3503



ld (23624),a

Otra vez lo mismo, pero en esta ocasión hemos actualizado la parte inferior de la pantalla.
BASIC es así de latazo, divide la pantalla en dos partes: programa y editor. Observe una
cosa curiosa, lo que vamos a utilizar siempre está a la derecha de la instrucción en
ensamblador, y el destino a la izquierda.

call 3
  • Links de descarga
http://lwp-l.com/pdf19221

Comentarios de: Videojuegos en lenguaje ensamblador para negados (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad