Parecía increíble que pasara… pero mi Tetris es jugable 100% ^^
Y digo 100% teniendo en cuenta que aunque es una versión “simplificada” del Tetris, ya puedo rotar piezas y todo…
Antes de enseñar más o menos cómo me va quedando, quiero aclarar varias cosas respecto a mi “programa”, lo primero es que está programado para un procesador MIPS R2000 de 1985 de 8-16 MHz, el cual quedó obsoleto en 1988 al actualizarse con el R3000… por lo que ya os podréis imaginar el aspecto que tendrá un programa de esa época xD (ahora que lo pienso creo que el programa es válido tanto para el R2000 como para el R3000… pero bueno), como curiosidad, el MIPS R4300 se usó en la Nintendo 64.
Lo segundo es que es un programa para un procesador, y ésto implica que sin un programa que emule el funcionamiento del procesador, sería imposible ejecutarlo en cualquier ordenador actual, vamos, que también os quitéis de la cabeza cualquier tipo de gráficos decentes ya que sus “gráficos” se basan todos en carácteres ASCII. Lo que sale por pantalla es directamente la salida del procesador, al contrario que en la Nintendo64 que tiene un procesador de vídeo (GPU).
El programa en sí (de momento) consta de alrededor de 1.600 líneas de código y permite jugar a un Tetris sin puntuaciones, con la caida de la ficha manual (tienes que pulsar abajo para que caiga y cae sola cada vez que mueves hacia algún lado), permite rotar las fichas y cambiar las dimensiones del tablero.
La putada es que el proyecto no es “sólo” programarlo… sino que hay que de alguna forma documentarlo… supongo que en la próxima clase preguntaré que coño es eso xD
Pongo el vídeo de una partida corta matándome aposta mientras roto unas pocas fichas y tal, puede resultar un poco mareante por la forma de imprimir el juego por pantalla… peeero que se le va a hacer xD
Ya cuando haga la entrega en Junio con toda la documentación publicaré el código, documentación y demás cosas como hice con las prácticas de Java por si hay algún curioso xD (lo dudo mucho pero bueno)
Entradas Relacionadas:
Tetris
Prácticas MTP
Archivado bajo: Evolucionando, Universidad, Videos, informatica | Etiquetado: computadores, cuatlo, ensamblador, entrega, estructura, etc, mips, pcspim, practica, prueba, tecnologia, tetris, Universidad, video





No te matas aposta!! eres muy malo y todo el mundo lo sabe!
Me parece muy interesante. ¿Me podrias pasar el ejecutable? Gracias
hola paco, me podrias enviar el codigo fuente, gracias, o subirlo a la web
hombre, la verdad es que no tengo pensado subir nada del código fuente hasta que se acabe la convocatoria de Septiembre
Pacovi sube el código por favor. A más de uno de los que nos cuesta nos harías un gran favor. Un saludo.
Hola pacovi, yo también estoy haciendo el Tetris para ahora, la convocatoria de Septiembre. A ver si me puedes resolver una duda,
Nunca he hecho el examen de la práctica, es decir, el que haces una vez terminada la misma y que consiste en 3 ejercicios a aplicar sobre tu práctica y de los cuales tienes que tener minimo 2 bien para aprobar.
¿Me podrias decir que te puso a ti para realizar?, es decir ¿Que tres preguntas hizo el profesor? ¿Eran exactamente las mismas para todas las prácticas o varían en función de la misma?
Es para tener mas o menos una idea.
Muchas gracias y suerte con la carrera :)
Pues las preguntas fueron todas las mismas para todo el mundo, nada mas que cada uno tenía que realizar las modificaciones sobre su práctica que estaba subida a SUMA.
Preguntó, modificarlo de forma que cada ficha nueva saliera en una columna aleatoria (que no saliera siempre en el centro), luego que permitiera mover la ficha hacia arriba y por último que pudieras eliminar una fila concreta que introduces por teclado.
De nada y suerte igualmente :P
Muchas gracias pacovi :)
Otra duda, en los ejercicios ¿te marcan las pautas a seguir (por ejemplo, en la practica en el main te dice que para hacer izquierda: xprov=x-1 y yprov=y y mas tarde generas la matriz tablero_prov) o no te dan ninguna ayuda?
Es decir, cuando a ti p.ej. te puso lo de implementar arriba, ¿te decia que pasos tenias que seguir mas o menos o te las tenias que apañar tu?
Esque ando algo preocupado por la prueba, ya que me juego mucho. Un saludo.
pues a mi me dijeron que tuviera en cuenta que al salir en una columna aleatoria debía tener en cuenta que las últimas columnas no están disponibles para que salga la ficha porque parte de ella quedaría “fuera” del tablero pero creo que nada mas.
el resto te tenías que apañar tu solito si
Tengo una duda y querria ver si tu me la puedes resolver.
Para imprimir un carazter, por ejemplo el car_vacio: .byte 46 yo lo hago de la siguiente forma:
la $a0,car_vacio
li $v0,4
syscall
lo que ocurre es q en lugar de salirme el ‘.’ me sale esto: .X
(Me sale el punto pero despues me sale un signo raro y una X)
Q estoi haciendo mal?¿
Hola, una duda.
Para lo que has comentado antes de eliminar una fila concreta que metes por teclado, ¿como habia que implementarlo?. ¿necesitabas meter una nueva opción al menu de seleccion de jugada (por ej el numero 8) y una vez que pulsas el numero 8 introduces la fila que quieres eliminar? O como habia que hacerlo?
Esque no llego a comprender como funciona esa “mejora”. Salu2
anonimo: Creo que el error que te da a tí es que al llamar al syscall con el 4 en $v0, tienes que poner en $a0 la dirección de un .asciiz, cuando tu lo que haces es ponerle un .byte, si quieres que te imprima el caracter ascii de car_vacio lo que tendrías que hacer es poner ese valor en un .asciiz de memoria auxiliar y darle esa dirección al $a0 (creo que era algo así lo que ocurría ya que tuve ese problema yo tb)
Antonio: es justo como dices, una de las opciones del menú era la de eliminar fila, luego te pedía por pantalla que qué fila querías eliminar.
pacovi muchas gracias por tu respuesta me sirvio :P,
Pero me ha surgiod otra xD, ya e acabado el tetris., me iba perfectamente pero de repente (xD) las piezas no me salian aleatoriamente(nun_aleatorio no genera numeros aleatorios) sino que siguen un patron., ejemplo. me sale la pieza 1, a continuacion la 4 y luego la 3.., entonces despues de la 3 me vuelve a salir la 1.
ejemplo de piezas q van saliendo:1,3,4,1,3,4,1,3,4,1,3,4
siempre sigue un patron y no lo hace aleatoriamente :(. tb a veces me ocurre q solo sale una pieza y mete un monton de piezas de golpe.
el procedimiento num_aleatorio en verdad no es aleatorio, es pseudoaleatorio, ya que para generar el número aleatorio se basa en una “semilla” que son los registros que tienes al inicio, si reproduces los mismos movimientos va a salir el mismo juego exactamente una y otra vez.
Entonces lo dejo como esta¿? asi esta bien?¿
Es para la universidad de Murcia..(bueno supongo q lo sabrias xk nadie en su sano juicio se pone a programar un tetris en este lenguaje..)
He aprobado!!
Jajajaja que contento estoy xD
Yo termine el tetris justamente un dia despues de la fecha de entrega y no pude entregarlo xDDDD, tendre que esperar a febrero.
joer vaya putadón… creo que para febrero te pedirán mas cosas eh :S
En febrero si no me equivoco, eran obligatorias las interrupciones y además también se hacían obligatorias todas las mejoras optativas, como girar la pieza, etc…
Bah… no me preocupa, hiba a hacer las mejoras de todas formas.. asi me entretengo un rato ^^
Wooooola a todos!!! Yo stoy estudiando este año I.T.I de Sistemas, y mi proyecto en ensamblador MIPS es un TETRIS!!!!! por favorrrrr!!!!!!!!!!!!!!! si alguien tiene el codigo q me lo pase pro correo!!! dave5_11@hotmail.com.
me hariais un grandiiiiismo favor!!! muchas gracias!!!
hola pacovi, acabo de ver q has terminado el tetris, yo estoy en ello, pero me atranco en lo de rotar la pieza, no me podias echar una mano?? si me pudieras pasar el codigo de esa rutina perfecto, sino con que mas o menos me lo expliques te lo agradeceria, un saludo
A la hora de girar piezas, se usaban simplemente piezas extra, es decir, tenías las X primeras piezas normales sin rotar asignadas a ciertos números, y luego unas matrices extra representando cada uno de los giros de las otras piezas, para girar simpemente tenías que hacer como que “cambiabas de ficha” por la girada 90 grados.