tag:blogger.com,1999:blog-5513035545092402518.post441135597063161518..comments2023-09-11T08:49:32.403+02:00Comments on Back2theRetro: "Haciendo Retroinvaders" - Programación de un juego en Commodore 64Lobogrishttp://www.blogger.com/profile/13446681207618666272noreply@blogger.comBlogger23125tag:blogger.com,1999:blog-5513035545092402518.post-37792836607190385602011-01-10T16:37:45.764+01:002011-01-10T16:37:45.764+01:00¡Estupendo! ;)¡Estupendo! ;)Lobogrishttps://www.blogger.com/profile/13446681207618666272noreply@blogger.comtag:blogger.com,1999:blog-5513035545092402518.post-30186065939466249522011-01-10T10:39:06.461+01:002011-01-10T10:39:06.461+01:00Ahora lo entiendo perfectamente :)Ahora lo entiendo perfectamente :)Josepzinhttps://www.blogger.com/profile/04262607912012817846noreply@blogger.comtag:blogger.com,1999:blog-5513035545092402518.post-75541506227171980362011-01-10T00:53:39.117+01:002011-01-10T00:53:39.117+01:00las que te generan "tochos de código" ha...las que te generan "tochos de código" hay que usarlas puntualmente y con cuidado sí :DLobogrishttps://www.blogger.com/profile/13446681207618666272noreply@blogger.comtag:blogger.com,1999:blog-5513035545092402518.post-30550297218465514112011-01-10T00:51:04.190+01:002011-01-10T00:51:04.190+01:00eso es, lo que queria decir se puede resumir en qu...eso es, lo que queria decir se puede resumir en que x*40 no se convierte en código, si no que el compilador evalua la expresión y pone el resultado a continuación.<br /><br />Bueno yo uso mucho esas expresiones, por que es mas facil leer eso que un numero ya calculado, al pasar el tiempo... por que asi ves la lógica de ese numero, el por qué de ese número. <br /><br />Son cosas personales, claro.Lobogrishttps://www.blogger.com/profile/13446681207618666272noreply@blogger.comtag:blogger.com,1999:blog-5513035545092402518.post-49773558128263568412011-01-09T15:07:18.968+01:002011-01-09T15:07:18.968+01:00Gracias por tanta respuesta!
Ya entiendo la difer...Gracias por tanta respuesta!<br /><br />Ya entiendo la diferencia entre el código generado por el ensamblador y el compilador de C (cc65)<br /><br />De hecho, pensé que al poner x*40 eso se convertía en el código de una multiplicación (que es lo que hace el CC65) con la consiguiente ralentización del 6510.<br /><br />Aunque igual me pregunto que usar estas operaciones (sta $d800+[yc*40]+xc,x) tambien deben ser para casos puntuales ya que se generan cosas en plan "tocho de codigo"... ¿no?Josepzinhttps://www.blogger.com/profile/04262607912012817846noreply@blogger.comtag:blogger.com,1999:blog-5513035545092402518.post-50869435864728781382011-01-08T17:33:43.311+01:002011-01-08T17:33:43.311+01:00bueno para generar tablas serias, me hacia un prog...bueno para generar tablas serias, me hacia un programa en basic que me generaba un fichero ascii, para incluir en la fuente, ya con la estructura TABLA DB 23,23,0,234,255,...Lobogrishttps://www.blogger.com/profile/13446681207618666272noreply@blogger.comtag:blogger.com,1999:blog-5513035545092402518.post-58361351460045360132011-01-08T16:40:01.615+01:002011-01-08T16:40:01.615+01:00Bueno, el bucle ".for" puede generar cod...Bueno, el bucle ".for" puede generar codigo duplicado (la cantidad que necesites) para no tener que teclearlo tu ... es ideal si tenias que teclearlo, si no hay que estar atento y no confundir que kickass no es C/C++, por lo que kickass no te va a convertir el bucle escrito en un "script" de alto nivel a un eficiente código máquina 6510 (código objeto). <br /><br />Dicho de una forma, el ejemplo de antes ES TAN SOLO una forma cómoda (y queda compacta y elegante a la vista) de no tener que teclar 10 lineas, pero nada te impide usar Cut&paste en tu editor y cambiar la direccion de memoria de cada STA a mano...<br /><br />mira como uso .for para crear la tabla que me guarda el tipo de invasores, en mi juego:<br /><br />// color del invasor (según fila) 55 registros (bytes)<br />INV_COLOR:<br /> // color (según numero de fila)<br />{<br />.for (var f=0;f<5;f++) {<br /> .for(var c=0;c<11;c++) {<br /> .if (f==0) .byte LIGHT_GREEN<br /> .if (f==1) .byte GREEN<br /> .if (f==2) .byte GYAN<br /> .if (f==3) .byte YELLOW<br /> .if (f==4) .byte LIGHT_RED<br /> }<br />}<br /><br />¡Imagínate, tener que teclear 55 registros y acordarte que cada 11, empieza el color para una nueva fila! Y esta es una tabla que guarda un BYTE, la de offsets de pantalla y offsets de color contiene un WORD (2 bytes) por registro (110 registros).<br />Mira que elegante y cortito queda con la ayuda de .for :)<br /><br />esta es la tabla de offsets, como curiosidad:<br />INV_OFFSET_PANT: <br />{<br /> .const cx=8<br /> .var x=cx .var y=3 .var offset=0<br /> .for (var f=0;f<5;f++) {<br /> .for(var c=0;c<11;c++) {<br /> .eval offset=[y*40]+x<br /> .word offset+virtual<br /> .eval x=x+2<br /> }<br /> .eval y=y+2<br /> .eval x=cx<br /> }<br />}<br />.eval es para evaluar una variable definida anteriormente con .var<br />esta tabla te genera los 110 registros con los offsets de pantalla de los 55 invasores, y podría haberse tecleado manualmente así:<br /><br />INV_OFFSET_PANT: .word $c800,$c801,$c802 (...) ¡asi hasta los 110 registros!<br /><br />asi programaba yo, en assembler, antes de conocer a kickass ;)Lobogrishttps://www.blogger.com/profile/13446681207618666272noreply@blogger.comtag:blogger.com,1999:blog-5513035545092402518.post-13647844682577677852011-01-08T13:15:16.188+01:002011-01-08T13:15:16.188+01:00Entonces por lo que veo, ¿usar este tipo de facili...Entonces por lo que veo, ¿usar este tipo de facilidades genera montones de códigos duplicado?<br /><br />Porque en el ejemplo del for, son solo 5 pases y es solo un lda sta, pero si fueran 200 y adentro del for hubiera muchas instrucciones... ¿me equivoco?Josepzinhttps://www.blogger.com/profile/04262607912012817846noreply@blogger.comtag:blogger.com,1999:blog-5513035545092402518.post-15340012421167603442011-01-07T23:45:45.172+01:002011-01-07T23:45:45.172+01:00en el anterior ejemplo, sobra .var x=5en el anterior ejemplo, sobra .var x=5Lobogrishttps://www.blogger.com/profile/13446681207618666272noreply@blogger.comtag:blogger.com,1999:blog-5513035545092402518.post-58377256594170654502011-01-07T23:41:38.609+01:002011-01-07T23:41:38.609+01:00si, son variables, pero no variables del código ob...si, son variables, pero no variables del código obj generado, sino para el preprocesamiento de éste.<br /><br />es parecido a lo que pasa con la macros<br />un ejemplo claro:<br /><br />.var x=5<br />.for (var x=0;x<5;x++)<br />{<br />lda #0<br />sta variable+x<br />}<br />variable: .byte 255<br /><br />esto queda generado (una vez compilado con kickass) asi en el c64:<br />lda #0<br />sta $1000<br />lda #0<br />sta $1001<br />lda #0<br />sta $1002<br />lda #0<br />sta $1003<br />lda #0<br />sta $1004<br /><br />las .var son variables que se usan para el pre-procesamiento.<br />y las variables de etiqueta (las que se finalizan con ":"), el compilador les otorga una posición de memoria (según el puntero de programa (PC) en el que se encuentran definidas.Lobogrishttps://www.blogger.com/profile/13446681207618666272noreply@blogger.comtag:blogger.com,1999:blog-5513035545092402518.post-18023975655589209712011-01-07T20:59:03.216+01:002011-01-07T20:59:03.216+01:00Viendo que no recibes los comentarios desde el FB,...Viendo que no recibes los comentarios desde el FB, sigo por aquí.<br /><br />******************************************<br /><br />Mi pregunta:<br /><br />Veo que en el código tienes cosas como esta: sta #d800+[yc*40]+xc, x<br /><br />¿Cómo resuelve el ensamblador todo eso? Lo pregunto porque ahí tienes una multiplicación.<br /><br />******************************************<br /><br />Tu respuesta:<br /><br />sta $d800+[yc*40]+xc,x lo resuelve el compilador interpretando la operación matemática, o sea que en realidad queda por ejemplo sta sta $d800,x si xc=0 y yc=0 o sta $d841,x si xc=1 y yc=1. O sea que es un valor constante. Las variables son definidas con .var, por lo que no son variables propias del codigo ensamblado si no facilidades para el código fuente (para el kickassembler)... En este caso con inx moveria el bicho 1 byte a la derecha (en un offset de pantalla constante predefinido).<br /><br /><br />******************************************<br /><br />Sigo con dudas :P<br /><br />¿yc y xc son variables?Josepzinhttps://www.blogger.com/profile/04262607912012817846noreply@blogger.comtag:blogger.com,1999:blog-5513035545092402518.post-56814380238054717962011-01-05T14:45:57.994+01:002011-01-05T14:45:57.994+01:00Para mi tambien ha sido una bendición haberte cono...Para mi tambien ha sido una bendición haberte conocido Raúl :) gente buena así no abunda en este pequeño planetaLobogrishttps://www.blogger.com/profile/13446681207618666272noreply@blogger.comtag:blogger.com,1999:blog-5513035545092402518.post-17422042723116862011-01-05T14:20:34.455+01:002011-01-05T14:20:34.455+01:00jeje pues sí soy un lobo burro! ejem un lobo de lo...jeje pues sí soy un lobo burro! ejem un lobo de los burros, esto... parte del equipo de Los Burros del Soft, ahora sí jeje<br /><br />Excelente, @Rulas: Adjudicado! queda públicamente dicho:¡¡tu serás quien haga la pantalla de carga del juego!!Lobogrishttps://www.blogger.com/profile/13446681207618666272noreply@blogger.comtag:blogger.com,1999:blog-5513035545092402518.post-60321665093093368252011-01-05T03:49:18.321+01:002011-01-05T03:49:18.321+01:00Me ofrezco Publicamente a Concurso para hacer la P...Me ofrezco Publicamente a Concurso para hacer la Pantalla de Presentacion!! del proyecto RetroInvaders C-64 de Lobo!!Rulas Internationalhttps://www.blogger.com/profile/02055710998445263356noreply@blogger.comtag:blogger.com,1999:blog-5513035545092402518.post-36230370305954195382011-01-05T03:41:28.428+01:002011-01-05T03:41:28.428+01:00Por otro lado también en relación a Lobo comentar ...Por otro lado también en relación a Lobo comentar que la Participacion (Aunque en realidad es un Burro)en el siguiente de Los Burros ha sido un regalo de Dios, marcando una nueva Etapa.<br />Gracias!!Rulas Internationalhttps://www.blogger.com/profile/02055710998445263356noreply@blogger.comtag:blogger.com,1999:blog-5513035545092402518.post-14153041101200783982011-01-05T03:39:21.406+01:002011-01-05T03:39:21.406+01:00-Con la Demo de RGS volvi al Basic despues de 20 a...-Con la Demo de RGS volvi al Basic despues de 20 años<br />-Con La Carretera aprendi a hacer graficos<br />-Con lo siguiente (que por cierto has soltado como Novedad) me empiezo a soltar en Programación (ya que será el primer juego en el que aparezca como programador)<br />-Con lo proximo que tengo en la cabeza quiero empezar a MOVER "Churufletas" (y perdon por la expresion) por la pantalla<br /><br />Con esto quiero decir que el aprendizaje es una escalera de peldaños, que tiene que basarse en proyectos y en cada proyecto se va mejorando...<br /><br />Tambien es importante saber que un buen Desarrollador debe de ser equilibrado tanto en Programacion como en Gráficos,..yo ya he llegado donde queria en lo segundo,..ahora quiero equilibrarme en lo primero..<br /><br />En definitiva, que no soñeis ni penseis, que todo es ponerse Al Hierro poco a poco y subiendo y subiendo, porque lo que un Commodore puede dar de sí es impresionante,.es una herramienta crativa como pocas y que puede canalizar muy bien nuestra dinámica en este sentido..<br />Así que todos a animarse!!Rulas Internationalhttps://www.blogger.com/profile/02055710998445263356noreply@blogger.comtag:blogger.com,1999:blog-5513035545092402518.post-39874336427510137622011-01-04T15:35:59.283+01:002011-01-04T15:35:59.283+01:00@Rulas, @Jose Zanni y @Bieno Gracias por vuestro f...@Rulas, @Jose Zanni y @Bieno Gracias por vuestro feedback amigos! me alegra saber que os gusta ;)Lobogrishttps://www.blogger.com/profile/13446681207618666272noreply@blogger.comtag:blogger.com,1999:blog-5513035545092402518.post-54342001250829050432011-01-04T12:56:45.849+01:002011-01-04T12:56:45.849+01:00Felicidades, Lobogris. Esto si que es noticia. y f...Felicidades, Lobogris. Esto si que es noticia. y felicidades para Zanny por lo que le pertoca.Bienohttps://www.blogger.com/profile/09426381252477750141noreply@blogger.comtag:blogger.com,1999:blog-5513035545092402518.post-3228876524633278362011-01-04T12:10:56.568+01:002011-01-04T12:10:56.568+01:00Ostras... me tomo unos días de vacaciones y a la v...Ostras... me tomo unos días de vacaciones y a la vuelta me encuentro con esto!!! Un juego dedicado a Retroinvaders!!! :O<br /><br />Por lo que se ve será un juegazo, y será un placer que sea el "Juego oficial de RetroInvades" :P<br /><br />Me estoy poniendo al día con las retronovedades, todavía estoy dando los últimos ajustes al calendario!Josepzinhttps://www.blogger.com/profile/04262607912012817846noreply@blogger.comtag:blogger.com,1999:blog-5513035545092402518.post-82490908765750111152011-01-04T11:22:24.744+01:002011-01-04T11:22:24.744+01:00Tenemos telepatia,..dentro de poco vereis un video...Tenemos telepatia,..dentro de poco vereis un video/tutorial mio de una Bitmap que alguno se va a quedar con la boca abierta!!Rulas Internationalhttps://www.blogger.com/profile/02055710998445263356noreply@blogger.comtag:blogger.com,1999:blog-5513035545092402518.post-83060872029627706332011-01-04T11:13:50.610+01:002011-01-04T11:13:50.610+01:00Mo-nu-men-tal!!Mo-nu-men-tal!!Rulas Internationalhttps://www.blogger.com/profile/02055710998445263356noreply@blogger.comtag:blogger.com,1999:blog-5513035545092402518.post-76814833958877049042011-01-04T00:31:24.047+01:002011-01-04T00:31:24.047+01:00Gracias por tu aliento Bo!! :D estoy metido en 3 p...Gracias por tu aliento Bo!! :D estoy metido en 3 proyectos para c64! uno de ellos es TOP SECRET, y el otro lo estoy haciendo con Raúl de Los Burros del Soft (el otro proyecto a parte de la Carretera...) Este de los invasores, me he puesto a hacerlo para refrescar mis conceptos de programación aun más (¡hacia tanto tiempo que no programaba!) y me decidí por este, no solo por que es simple, sino por que en C64, como digo en el articulo, no he encontrado ninguna versión decente, con los 55 invasores a la vez. Seguro que muy pronto podreis disfrutar de este jueguecillo en vuestros commodores... Algo muy chungo, se avecina desde el espacio exterior ....Lobogrishttps://www.blogger.com/profile/13446681207618666272noreply@blogger.comtag:blogger.com,1999:blog-5513035545092402518.post-46099201699019664112011-01-04T00:12:18.421+01:002011-01-04T00:12:18.421+01:00Ole, Lobogris!!! Una gran noticia ver que siguen s...Ole, Lobogris!!! Una gran noticia ver que siguen saliendo coders en España para el c64. Y por las capturas que he visto, tiene una pinta genial.<br /><br />Pues eso, q animo con el proyecto, espero q pronto lo podamos disfrutar!!Bovirtualhttps://www.blogger.com/profile/01403272144657771253noreply@blogger.com