BASIC:del ZX SPECTRUM al SEGA MEGADRIVE

Cursos, reparaciones, fichas, tutoriales, etc.

Moderador: Fundadores

Avatar de Usuario
tacha Uruguay
Hermano de Lucifer
Hermano de Lucifer
Mensajes: 3139
Registrado: 04 Abr 2013, 20:22
Ubicación: Montevideo, Uruguay
Has thanked: 44 times
Been thanked: 30 times
Contactar:

BASIC:del ZX SPECTRUM al SEGA MEGADRIVE

Mensaje por tacha »

Hola a todos. Debido a la demanda de interés me dispongo a hacer un tutorial para programación BASICO (por el momento) pero no voy a comenzar explicando sobre la consola (megadrive) en lo profundo, sino que lo primero que haré será evacuar dudas de algun compañero de aqui, para luego ir explicando en detalle como se hace en profundidad paso por paso. Como tengo poco tiempo no me extenderé mucho en principio, pero si, la idea es tener al final un megatutorial para poder programan algo gigante DESDE CERO

Lo primero es descargarse el compilador, no lleva nada mas que una instalación:
http://www.second-dimension.com/second-basic

Aqui una página que yo utilizo de guía donde explica los comandos
http://devster.monkeeh.com/sega/basiega ... mmand_poke

Lo bonito de todo esto es que programar en Second Basic es como programar en el basic de Spectrum, solo que para una Megadrive, donde todo va tan rápido y fluido que te kagas :)

Empezando a construir el edificio por el techo:

¿cómo creo colisiones en un escenario?

Muy fácil. Muchos y/o la gran mayoría de juegos, para crear colisiones utilizan una pantalla "virtual" o "no visible". Por ejemplo, lo hace el MsPACMAN de ZX Spectrum.

vamos a crear un escenario de colisiones en un zx spectrum :D

Código: Seleccionar todo

10 DIM a$(10,10)
20 RESTORE
30 FOR F=1 TO 10
40 READ A$(F)
50 NEXT F
100 DATA "1111111111"
101 DATA "1000300001"
102 DATA "1000000001"
103 DATA "1000000002"
104 DATA "1001111111"
105 DATA "1000000001"
106 DATA "1300000001"
107 DATA "1111111001"
108 DATA "1000000001"
109 DATA "1111111111"

120 LET X=2
122 LET Y=9
200 REM DO 
210 LET K$= INKEY$
220 IF K$="Q" AND A$(Y-1,X) <> "1" THEN LET Y=Y-1
222 IF K$="A" AND A$(Y+1,X) <> "1" THEN LET Y=Y+1
224 IF K$="O" AND A$(Y,X-1) <> "1" THEN LET X=X-1
226 IF K$="P" AND A$(Y,X+1) <> "1" THEN LET X=X+1
230 REM COLISIONES
240 IF a$(Y,X)="0" THEN REM ESPACIO VACIO
242 IF a$(Y,X)="3" THEN GOSUB 3000 : REM EXPLOTA,
242 IF a$(Y,X)="2" THEN GOSUB 3100 : REM PUERTA, PASA DE PANTALLA
400 GOTO 210 : REM CIERRA LOOP
3000 STOP : REM AQUI RUTINA DE PERDER
3100 STOP : REM AQUI RUTINA DE PASAR A OTRA HABITACION
Como podrán ver, este programa no imprime absolutamente nada en pantalla, porque lo que hace es dejarme mover dos cordenadas (xy) dentro de una matriz, dentro de un "mapa virtual".

Ok, hagamos que imprima así podemos verlo funcionar

Código: Seleccionar todo

10 DIM a$(10,10)
20 RESTORE 100 : CLS : PRINT
30 FOR F=1 TO 10
40 READ A$(F) 
45 PRINT A$(F)
50 NEXT F
100 DATA "1111111111"
101 DATA "1000300001"
102 DATA "1000000001"
103 DATA "1000000002"
104 DATA "1001111111"
105 DATA "1000000001"
106 DATA "1300000001"
107 DATA "1111111001"
108 DATA "1000000001"
109 DATA "1111111111"
120 LET X=2
122 LET Y=9
200 REM DO 
210 LET K$= INKEY$
220 IF K$="Q" AND A$(Y-1,X) <> "1" THEN GOSUB 4010 : LET Y=Y-1 : GOSUB 4000
222 IF K$="A" AND A$(Y+1,X) <> "1" THEN GOSUB 4010 : LET Y=Y+1 : GOSUB 4000
224 IF K$="O" AND A$(Y,X-1) <> "1" THEN GOSUB 4010 : LET X=X-1 : GOSUB 4000
226 IF K$="P" AND A$(Y,X+1) <> "1" THEN GOSUB 4010 : LET X=X+1 : GOSUB 4000
230 REM COLISIONES
240 IF a$(Y,X)="0" THEN REM ESPACIO VACIO
242 IF a$(Y,X)="3" THEN GOSUB 3000 : REM EXPLOTA
242 IF a$(Y,X)="2" THEN GOSUB 3100 : REM PUERTA, PASA DE PANTALLA
400 GOTO 210 : REM CIERRA LOOP
3000 PRINT AT 20,0;"TOCASTE UNA MINA" : STOP
3100 PRINT AT 20,0;"OTRA HABITACION" : STOP
4000 PRINT AT Y,X ; INVERSE 1 ;"X" : RETURN
4010 PRINT AT Y,X ; INVERSE 0 ;"0" : RETURN
Bien. como siguiente te reto a borrar la linea 45 en el ultimo programa para poder moverte "a ciegas", llegar hasta la puerta de la habitación pero sin verla.
Entonces, verás que te mueves y que colisionas en un escenario invisible, donde hay un par de trampillas invisibles, intentando llegar a una puerta invisible.

De este mismo modo se crean los mapas de colisiones en la gran mayoría de los juegos, o sea que no es que colisionen con "lo que estas viendo en pantalla", sino que colisiona con algo invisible, algo virtual, pero que coincide de algun modo con lo que estás viendo.

En la SEGA MEGADRIVE sucede exactamente igual... pero vais a decirme: "En el spectrum estas moviendo caracteres de a 8 pixeles mientras que en la megadrive los sprites se mueven de a 1 pixel. ¿cómo le hago?"

Primero hay que explicar que es un sprite, cuantos planos tiene la Megadrive, como imprimo en ella, etc.

...en unas horas lo continuo :)
Última edición por tacha el 03 Jun 2018, 04:41, editado 1 vez en total.
66 6C 6F 70 70 69 6E 67 20 6D 61 73 63 61 20 50 30 6C 6C 34 / 6D 61 73 20 63 6F 74 69 6C 6C 61 20 73 65 72 E1 73 20 74 75 20 49 7A 61 72 6F 20 3A 70
Avatar de Usuario
flopping
Fundador
Fundador
Mensajes: 9971
Registrado: 29 Mar 2013, 15:26
Ubicación: Valencia
Been thanked: 122 times
Contactar:

Re: BASIC:del ZX SPECTRUM al SEGA MEGADRIVE

Mensaje por flopping »

Hombre, al fin vas a hacer algo de provecho y no solo "mariconadas".
No me hago responsable de mis post pues estan escritos bajo la influencia del alcohol y drogas psicotropicas, por la esquizofrenia paranoide.
(C) 1982-2024, 42 años de ZX Spectrum.
http://www.va-de-retro.com/ un foro "diferente".

Mi juego, que puedes descargar desde aqui
Avatar de Usuario
jordigahan
Demonio segundo orden
Demonio segundo orden
Mensajes: 1755
Registrado: 06 Sep 2013, 02:17
Has thanked: 3 times
Been thanked: 17 times
Contactar:

Re: BASIC:del ZX SPECTRUM al SEGA MEGADRIVE

Mensaje por jordigahan »

me apunto !!!
Avatar de Usuario
Lord Raptor !Commodore Amiga
Demonio tercer orden
Demonio tercer orden
Mensajes: 732
Registrado: 15 Oct 2014, 23:41
Been thanked: 18 times

Re: BASIC:del ZX SPECTRUM al SEGA MEGADRIVE

Mensaje por Lord Raptor »

Wow... gracias !!!
Esto es por mí, seguro... ;)

Cuando empieces con todo el mogollón, me apunto a echarte una mano con explicaciones, referencias
o lo ke sea.... [si te parece bien :| ]
Ahora, también te digo.... te voy a acribillar a preguntas y todo eso... !! :mrgreen: :mrgreen: :mrgreen:

Por cierto, en la línea 222 del listado debería ser: A$(Y+1,X) verdad ?
Deseas bajar de 1 en 1, no creo ke de 2 en 2...
Otra cosa: 240 IF a$(Y,X)="0" THEN REM ESPACIO VACIO <---> esto ké clase de code es ? :P ? [no se ké intentabas poner ahí]
...Por ké kuesta más karo pagarse un entierro ke kobrarse una vida ?!
Miembro activo en la demoscene de Amiga desde 1992
Radiosity
El infierno es su lugar
El infierno es su lugar
Mensajes: 161
Registrado: 01 Nov 2015, 18:35

Re: BASIC:del ZX SPECTRUM al SEGA MEGADRIVE

Mensaje por Radiosity »

Ayyyyy que casi se me escapa este hilo. Estoy expectante. Acabo de instalar Second Basic y me da un poco por saco que tengamos que detectar las colisiones 'a mano'.
Radiosity
El infierno es su lugar
El infierno es su lugar
Mensajes: 161
Registrado: 01 Nov 2015, 18:35

Re: BASIC:del ZX SPECTRUM al SEGA MEGADRIVE

Mensaje por Radiosity »

Una pregunta.Veo que los arcades tipo Sonic para detectar las colisiones con el suelo parece que es bastante preciso. La deteccion de colisiones se haría creando mapas de durezas? Otra pregunta que me asalta. Cuando colocamos un sprite en una posicion X e Y ese punto relativo que parte del sprite es? el centro en pixels de todos los tiles que los forman, la corodenada X e Y de la esquina superior izquierda? es que creo que esto es importante para poder fabricarse las colisiones.
Avatar de Usuario
wilco2009 !Sinclair 1
Hermano de Lucifer
Hermano de Lucifer
Mensajes: 8152
Registrado: 01 Abr 2013, 23:47
Ubicación: Valencia
Has thanked: 47 times
Been thanked: 101 times

Re: BASIC:del ZX SPECTRUM al SEGA MEGADRIVE

Mensaje por wilco2009 »

Hombre tacha, por fin algo útil, :D :D :D :D :P :P

Si ya te decia tu mamá que llegarías lejos. ;) :P

En serio, mola la idea. A ver si llega a buen puerto y tenemos un montón de nuevos programadores de Megadrive.
"Aprender a volar es todo un arte. Aunque sólo hay que cogerle el truco. Consiste en tirarse al suelo y fallar".

Douglas Adams. Guía del autoestopista galáctico.
Avatar de Usuario
Miguel angel
Aspirante a demonio
Aspirante a demonio
Mensajes: 477
Registrado: 11 Mar 2017, 17:52
Has thanked: 2 times

Re: BASIC:del ZX SPECTRUM al SEGA MEGADRIVE

Mensaje por Miguel angel »

Que interesante, cojo sitio.
Avatar de Usuario
Lord Raptor !Commodore Amiga
Demonio tercer orden
Demonio tercer orden
Mensajes: 732
Registrado: 15 Oct 2014, 23:41
Been thanked: 18 times

Re: BASIC:del ZX SPECTRUM al SEGA MEGADRIVE

Mensaje por Lord Raptor »

@Tacha: ....ke nos dejas colgados, y con la miel en los labios !!
...Por ké kuesta más karo pagarse un entierro ke kobrarse una vida ?!
Miembro activo en la demoscene de Amiga desde 1992
Radiosity
El infierno es su lugar
El infierno es su lugar
Mensajes: 161
Registrado: 01 Nov 2015, 18:35

Re: BASIC:del ZX SPECTRUM al SEGA MEGADRIVE

Mensaje por Radiosity »

Yo estoy trasteando con el SecondBasic y tiene pinta de ser bastante inestable. Se hecho he comprobado que tiene bugs a la hora de hacer operaciones con variables, de tal forma que un a++ no te funcione pero si un a=a+1 cuando en teoria deberia valer cualquiera de las 2. De hecho el operador ++ es ta permitido pero no siempre funciona bien al igual que los operadores -= y +=. Creo que al final es buena idea portar lo que llevo a SGDK y seguir desde ahi.

Por cierto, ya que estoy aprevecho para preguntar algo sobre SecondBasic: ¿ que diferencia hay entre drawtiles y drawtileinc? Alguno de ellos dibuja los tiles de forma temporal como se dibujan los sprites?.
Responder

Volver a “Cursos y Tutoriales”