ImageImageImageImage
Hazte Socio (El Foro siempre Gratis)
Paga con Tarjetas+ Info www.arde.cc/socios

Pac Man u otro juego simple en assembler

Foro para postear los temas de ensamblador

Moderator: Junta Directiva

User avatar
technik
Usuario Avanzado
Usuario Avanzado
Posts: 287
Joined: Fri Jul 13, 2007 5:10 pm
Location: Sevilla

Re: Pac Man u otro juego simple en assembler

Post by technik » Wed May 07, 2008 8:10 pm

Me referia a que, como ranganok te ha dicho, el assembler es distinto para cada plataforma/familia de procesadores. Por ejemplo te recomendaria que usases un Pic16 o pic12 para empezar, ya que son procesadores cuyo ensambladro consta de tan solo 32 instrucciones, y ademas suelen tener pocos registros de trabajo. Aunque ahora que lo pienso, quizás halla una platafora que te interese mas, el propeller. Por si no lo conoces te dire que es un procesador que sale por unos 15€, que puedes programar en assembler y que trae ejemplos y rutinas ya preparadas para comunicacion con televisores, ratones, teclados, etc...y que esta muy bien para el desarrollo de juegos simples (de hecho la videoconsola hydra se basa en este chip). Es de parallax, esta bastante bien y te permite ejecutar varias tareas en paralelo para que asi te puedas olvidar de crear un arbol de procesos. Igualmente podrias utilizar las rutinas que trae creadas para gráficos y control y dedicarte exclusivamente a programar el juego en sí, y luego irias sustituyendo las rutinas predeterminadas por tu propio código.
Espero que esto te sirva.

User avatar
GUITARMAN
Posts: 9
Joined: Wed Feb 20, 2008 11:41 pm

Re: Pac Man u otro juego simple en assembler

Post by GUITARMAN » Wed May 07, 2008 8:16 pm

Ahhh pues yo ando pensado es aprender en los cprocesadores 8086 de intel

User avatar
GUITARMAN
Posts: 9
Joined: Wed Feb 20, 2008 11:41 pm

Re: Pac Man u otro juego simple en assembler

Post by GUITARMAN » Thu May 15, 2008 9:09 pm

ya ando leyendo el manual esta como chevere para si alguien le interesa esta aqui:
http://fermat.movimage.com/docs/ensamblador/


y tomo un parrafo que hay ahi y dice :


Veamos cómo se codifica esta instrucción:

MOV WORD PTR [7654H],5 ---> C7 06 54 76 05 00
Vemos que esta instrucción ha ocupado el máximo posible (6 bytes).
De tal forma que los 4 campos de instrucción están presentes.
Vamos a estudiarla detenidamente:
Lo primero que tenemos es el código de operación: C7.
Este código indica una operación MOV sobre una dirección concreta ó
desplazamiento, y con un valor numérico de tipo palabra.

El 3º y 4º byte juntos forman el desplazamiento (tener en cuenta
lo del tema del orden inverso en los bytes), y los bytes 5º y 6º
juntos forman el valor inemdiato a introducir (tener en cuenta de nuevo
lo del orden inverso).

Y nos queda el 2º byte, que es el byte EA o de direccionamiento.
¿Que por qué lo he dejado para el final?
je. Porque llevo 2 o 3 horas intentando descubrir el por qué de que sea
06. No me cuadra por ningún sitio, ya que este 6 indica que no hay
desplazamiento, cuando sí lo hay.



A ver si para la próxima lección, consigo descifrar el misterio.


Un saludo.
AESOFT....

PD : el parrafo fue tomado del manual si saben por que el 06 ?
cordial saludo guitarman

User avatar
technik
Usuario Avanzado
Usuario Avanzado
Posts: 287
Joined: Fri Jul 13, 2007 5:10 pm
Location: Sevilla

Re: Pac Man u otro juego simple en assembler

Post by technik » Fri May 16, 2008 3:08 pm

¿Que significa "esta como chevere ? Es que soy de España y ni idea.

User avatar
Luison
Usuario de baja
Posts: 493
Joined: Mon Dec 24, 2007 12:03 pm
Location: Guecho

Re: Pac Man u otro juego simple en assembler

Post by Luison » Fri May 16, 2008 3:46 pm

technik wrote:¿Que significa "esta como chevere ? Es que soy de España y ni idea.
Chévere se puede traducir como "Muy bien" o gracioso (depende del contesto). Es una expresión muy utilizada en Sur América... lo que uno aprende de los foros de hoy en día en Español ;)

User avatar
Ivan
Posts: 9
Joined: Sat Jan 03, 2009 10:59 pm

Re: Pac Man u otro juego simple en assembler

Post by Ivan » Sun Feb 15, 2009 8:24 pm

Hola soy nuevo, me llamo Ivan y soy aficionado desde granada o ciudad real (segun donde este), no se si habra un foro de presentaciones y si lo hay perdon por no presentarme.
La verdad que da un poco miedo escribir mi primer post donde estan de discursiones y espero ke mis palabras no sirban para calentar mas el ambiente, ya que mucho no se pero tratare de explicar algo por encima porque algo e visto aunque no e profundizado mucho. Perdon por mis faltas de ortografia ya que no soy buen escritor y no creo que mejore eso a la vejez :oops:

Guitarman, la verdad esque en lo que te dicen lleban razon y lo que quieres es mas complicado de lo que te crees y no creo que merecca la pena, ya que si llegas a saber como se hace desistiras antes de hacerlo.

Te explico:
Cuando aprendi el asm del pic (por aficcion, no por estudios ni nada parecido), tambien me meti a hacer mis pinitos con el asm del pc.

Yo, al igual que tu soy de los que pensaba, pienso y pensare que en asm se puede hacer todo. Otra cosa es la complicacion y el tiempo que necesitaras para realizar determinadas tareas que en lengujes de alto nivel seran sencillas por el apollo de las librerias y en asm te llebarian una eternidad.

Aparte de lo dicho anteriormente, el problema que tienes con el asm para pc es que no programas para un procesador como en el pic, programas para un sistema operativo (hacerlo sin el creo que desde el 386 ya no se puede, supongo que por secretismos de fabricantes, no lo se). Los pocos programas que e visto de asm sin sistema operativo usan como minimo la tabla de interrupciones del MS-DOS, o la de Unix, que aunque sean distintas, bienen a ser lo mismo.

Para hacer lo que tu quieres para windows, aparte de saber trabajar con el emsamblador tendras que aprenderte la API de windows, que es el sustituto a la tabla de interrupciones del DOS, cambia en que tendras que aprender palabras en ingles (identificadores) en vez de direcciones y podras olvidarte de la segmentacion para manejar el disco.
Yo casi prefiero hacer una chuleta de direcciones que aprenderme identificadores, aunque lo de trabajar con una memoria plana de 32bit da menos calenturas de cerebro que andar con la segmentacion.
La API no me la e aprendio y supongo que facilitara el trabajar los graficos con las tarjetas modernas.

Si lo haces para ms dos tendras que trabajar con un msdos de los de antes y en modo real, no protegido, no vale la consola de windows aunque te deje usar el debug y cosas asi, supongo que porque ya ira con la API. Tu programa lo primero que tendria que elegir o ver el modo grafico, sabras como hacerlo si te miras la tabla de interrupciones del DOS y las interrupciones, servicios y direcciones del bios.
Tendrias casi que elegir una resolucion baja (lo que te impediria ejecutarlo con monitores planos o que no admitan tan poca resolucion), con esto solo tendrias que conocer la direccion de la tarjeta grafica para con la interrupcion y el servicio adecuado poder escribir un caracter ascii (en tu caso no seria una letra sino un cuadrado opaco que no recuerdo a cual corresponde en ascii) en la posicion de pantalla que elijas. Para explicartelo facil, hazte a la idea que la pantalla se divide en caracteres empezando de arriba izquierda y contados de izquierda a derecha cada posicion tiene una direccion y no recuerdo de cuantos bits son.Para escribir mandas a la direccion de la posicion de pantalla que elijas el caracter ascii elejido y el color (creo ke eran 16 bit para la posicion de pantalla y 16 bit para el caracter y el color en hexadecimal, 8 y 8 para cada cosa, en un modo que no recuerdo si era 25x80 o 80 x no se cuantos, ya no me acuerdo, que era la resolucion para un ejercicio que hice y fue hace tiempo).

Si cojes una resolucion alta ya tendras que aprender la paginacion de la memoria de tu tarjeta y demas... Algo que para los de nvidia sera facil pero que a ti se te complicara, y lo mas seguro esque solo funcione con tu tarjeta.

He tratado de explicartelo lo mas facil que e podio ya que hace tiempo que no miro asm para pc porque desisti y muchas cosas como el tamaño de las palabras que mandas para el caracter y el color puedo haberlas dicho mal, aun asi creo que puede servirte de orientacion y ayuda.

Si consiges escribir un punto (caracter) en la posicion de pantalla que elijas no tendras problemas para escribir un conjunto de puntos y hacer un dibujito. Pero moverlo por la pantalla te sera mas complicado. Tendrias que hacerlo dibujandolo en un lao dibujandolo en otro, borrar el anterior y cosas asi, por medio de una infinidad de algorritmos llenos de bucles y contadores y un calentamiento de cerebro colosal (algo que en lenguajes de alto nivel ya tienes solucionado usando librerias, como te an dicho antes ).


Desisti porque ya ves el comecocos que tienes que aprenderte. Aun asi, si te encabezonas, algo que entiendo perfectamente, creo que usando la API de windows podras tambien tener acceso a los direct x de windows, no lo se.

Un libro que trae un ejemplo de un juego en emsamblador (tipo arkanoid, o el de la rana que va saltando, ya no me acuerdo) es:
"Emsamblador para windows, linux y msdos" de la editorial anaya. No te pongo el autor porque no lo tengo aqui y no quisiera equivocarme de autor.

Espero que lo escrito te sirva de algo, no puedo profundizar mas porque mucho no se. Prefiero seguir aprendiendo a hacer los programas para pic, auque aun no pase de malmover los servos y poco mas, del microbot que monte que pelearme con el pc.

Un saludo y mis felicitaciones a ARDE por la pagina y la asociacion.

User avatar
rashii
Administrador
Administrador
Posts: 533
Joined: Mon Aug 22, 2005 10:55 am
Nombre: rashii
Location: Madrid
Contact:

Re: Pac Man u otro juego simple en assembler

Post by rashii » Sun Feb 15, 2009 8:52 pm

Vamos a ver GUITARMAN en ningún momento te falto el respeto technik así que no comprendo porque te pones así, supongo que habrá sido porque te dijo algo que no esperabas oir pero bueno, te comento:

en ensamblador se pueden hacer cosas muy optimizadas pero en cuanto se quiere hacer algo mínimamente dificil no merece la pena gastar tanto esfuerzo y tiempo en hacer algo que se puede hacer mucho más rápido con los lenguajes de alto nivel

si tu proposito es aprender ensamblador por la razón que sea programate funciones diversas que tengan más o menos dificultad pero como te quieras programar un juego así te vas a morir en el intento...

Estoy con la opinión de todos, cuando de verdad conozcas ensamblador creeme que nos darás la razón que no merecía la pena ni intentarlo.

Un saludo.

dragonet80
Usuario Desarrollador
Usuario Desarrollador
Posts: 1323
Joined: Wed Oct 03, 2007 12:15 am
Location: Ibiza

Re: Pac Man u otro juego simple en assembler

Post by dragonet80 » Mon Feb 16, 2009 3:57 pm

rashii, eso pasó hace ya casi un año (mayo del 2008) así que de poco servirá que le eches ahora la bronca ;)

Iván me parece que te colaste contestando a un post tan viejo, seguro que GUITARMAN ya ni está por el foro.

User avatar
rashii
Administrador
Administrador
Posts: 533
Joined: Mon Aug 22, 2005 10:55 am
Nombre: rashii
Location: Madrid
Contact:

Re: Pac Man u otro juego simple en assembler

Post by rashii » Mon Feb 16, 2009 5:01 pm

cierto, me confundió el mensaje de Iván respondiendole...

User avatar
Ivan
Posts: 9
Joined: Sat Jan 03, 2009 10:59 pm

Re: Pac Man u otro juego simple en assembler

Post by Ivan » Mon Feb 16, 2009 5:48 pm

Perdon, no mire las fechas, arriba lo vi el primero y conteste el post porque estuve un tiempo buscando informacion sobre cosas parecidas.

Supongo que los nuevos somos mas dados a estas cosas, mirare fechas la proxima vez.

Un saludo

Post Reply

Who is online

Users browsing this forum: No registered users and 1 guest