Título: Problemilla ensamblero (poner tamaño sprites 16x16) Publicado por: cybernoid en 30 de Octubre de 2007, 11:37:01 am Hola,
Bueno, pues yo sigo probando cosas en ensamblador C y Basic (todo terreno :P) y hoy estaba probando con asm, concretamente quería pasar el ejemplo de disparos que colge el otro día a ASM a ver como se me daba. Pues me encuentro con un pequeño problema (seguro que una chorrada como la copa de un pino) que creo no debe ser muy complicado de solucionar, pero la cuestión es que no se donde esta el fallo. Utilizo parte de uno de los listados de robsy para inicializar el video, concretamente el del Pong, en el mismo listado se inicializan los sprites a 16x16 o por lo menos eso parece. la cuestión es que cuando muestro el sprite este aparece en 8x8 :( vamos, que solo veo una parte de 8x8, el modo de video me queda como screen 1,1 cuando lo que necesito es 1,2 ale, aquí pego el código para ver si alguien me puede ayudar: Código: ;--------------------------------------------------------- ; TEST ;--------------------------------------------------------- ; CONSTANTES SPRTBL equ 3800h SPRATR equ 1b00h ; Variables del sistema CLIKSW equ 0f3dbh ; click FORCLR equ 0f3e9h ; color fondo ;--------------------------------------------------------- ; ASMSX ;--------------------------------------------------------- .bios .page 2 ; 8000h .rom .start INIT ;--------------------------------------------------------- INIT: ;--------------------------------------------------------- CALL INITIALISATION CALL INIT_GRAPHICS BUC1: CALL MOVNAVE CALL IMPNAVE JP BUC1 LOADSPR: LD HL,SPRNAVE ;define sprite LD DE,3800H LD BC,32 CALL LDIRVM LD HL,POS_NAVE ;inicializa x e y LD [HL],10 LD HL,POS_NAVE+1 LD [HL],10 RET MOVNAVE: XOR A ; A=0 call GTSTCK ; A=STICK(1) CP 3 JP NZ,@@IZQ ; IF A<>3 THEN GOTO @@IZQ @@DERE: LD HL,POS_NAVE+1; HL=DIS_POSNAVE_X LD A,[HL] ; A=POSNAVE_X CP 250 ; IF A=0 RETURN RET Z INC A LD [HL],A @@IZQ: CP 7 ; IF A<>7 THEN RETURN RET NZ LD HL,POS_NAVE+1; HL=DIS_POSNAVE_X LD A,[HL] ; A=POSNAVE_X CP 0 ; IF A=0 RETURN RET Z DEC A LD [HL],A RET IMPNAVE: LD HL,POS_NAVE LD A,[HL] LD HL,SPRATR CALL WRTVRM ; Y=SPR0Y LD HL,POS_NAVE+1 LD A,[HL] LD HL,SPRATR+1 CALL WRTVRM ; Y=SPR0X LD A,1 LD HL,SPRATR+2 CALL WRTVRM ; SPR Nº=SPR0X LD A,15 LD HL,SPRATR+3 CALL WRTVRM ; CLR=SPR0X RET ;--------------------------------------------------------- INIT_GRAPHICS: ; Initialise the graphic mode and define graphic elements ;--------------------------------------------------------- ; Set proper colours ; BASIC: COLOR 15,0,0 ld hl,FORCLR ld [hl],15 inc hl ld [hl],0 inc hl ld [hl],0 ; Set text mode II ; BASIC: SCREEN 1 call INIT32 ;call INIGRP ; Erase all sprite data call CLRSPR ; 16x16 Sprite mode ; BASIC: SCREEN ,2 ; ld bc,0e201h ; call WRTVDP ; Hide screen call DISSCR ; Define sprites CALL LOADSPR ; Recover screen call ENASCR ; Return to main program ret ;--------------------------------------------------------- ;--------------------------------------------------------- INITIALISATION: ; One-time initialisation ;--------------------------------------------------------- ; desactiva el click del teclado ; BASIC: SCREEN ,,0 xor a ld [CLIKSW],a ; inicializa el psg call GICINI ; Init memory refreshment register R - [0-127] xor a ld r,a ; Hide function keys ; BASIC: KEY OFF call ERAFNK ; Return to main program ret ;--------------------------------------------------------- ; CONSTANTES ;--------------------------------------------------------- SPRNAVE: ; --- Slot 0 ; color 1 DB 00000000b DB 00000000b DB 00000000b DB 00100000b DB 01000000b DB 11000111b DB 11001100b DB 11001100b DB 11001100b DB 11001111b DB 11001111b DB 11001111b DB 11000111b DB 01000000b DB 00100000b DB 00000000b DB 00000000b DB 00000000b DB 00000000b DB 00000100b DB 00000010b DB 11100011b DB 00110011b DB 00110011b DB 00110011b DB 11110011b DB 11110011b DB 11110011b DB 11100011b DB 00000010b DB 00000100b DB 00000000b ;--------------------------------------------------------- ; VARIABLES ;--------------------------------------------------------- .page 3 POS_NAVE: DS 2 POS_DISP: DS 20 // MAX 10 DISPAROS Gracias. Gobblin Título: Re: Problemilla ensamblero (poner tamaño sprites 16x16) Publicado por: jltursan en 30 de Octubre de 2007, 11:53:44 am Yo para empezar veo una cosilla rara, en la rutina de IMPNAVE, estás inicializando el patrón a 1, cuando sospecho que lo que querías poner era 0, es posible que eso provoque ese efecto.
Recuerda que cuando se utilizan los sprites de 16x16 es algo más lioso identificar los patrones ya que tienes 64 sprites numerados no secuencialmente, sino 0,4,8,12,16,....etc Título: Re: Problemilla ensamblero (poner tamaño sprites 16x16) Publicado por: cybernoid en 30 de Octubre de 2007, 11:58:24 am Yo para empezar veo una cosilla rara, en la rutina de IMPNAVE, estás inicializando el patrón a 1, cuando sospecho que lo que querías poner era 0, es posible que eso provoque ese efecto. Recuerda que cuando se utilizan los sprites de 16x16 es algo más lioso identificar los patrones ya que tienes 64 sprites numerados no secuencialmente, sino 0,4,8,12,16,....etc si, eso es un error, pero no soluciona el problema, había puesto 1 para comprobar si realmente estaba la pantalla en modo 8x8, para comprobar que se estaban definiendo correctamente el sprite. pero vamos, que poniéndole 0 se queda igual :( Título: Re: Problemilla ensamblero (poner tamaño sprites 16x16) Publicado por: cybernoid en 30 de Octubre de 2007, 01:07:53 pm JEJEJEJE
Era aun mas tonto de lo que parecia las lineas que hacen el screen ,2 estan comentadas :_) es que aveces hago pruebas y me las deje comentadas xDDD se aceptan apedreamientos :D Título: Re: Problemilla ensamblero (poner tamaño sprites 16x16) Publicado por: pitpan en 30 de Octubre de 2007, 01:43:51 pm Pues sí, sí, hoy toca lapidación. Mira que dudar de mi código X(
Título: Re: Problemilla ensamblero (poner tamaño sprites 16x16) Publicado por: jltursan en 30 de Octubre de 2007, 02:55:53 pm Jajaja....y yo que ya paso por encima y ni lo veo... :P
Título: Re: Problemilla ensamblero (poner tamaño sprites 16x16) Publicado por: cybernoid en 30 de Octubre de 2007, 03:00:05 pm Siento haberos hecho perder el tiempo :P
es que cuando es asm no me fio ni de mi sombra xD , estoy muy oxidado en este tema vamos, que si me sale el tema de la navecita y los disparos haré una fiesta xDD Edito: ya estoy de fiesta hace un buen rato xD Título: Re: Problemilla ensamblero (poner tamaño sprites 16x16) Publicado por: Jon_Cortazar en 30 de Octubre de 2007, 05:35:17 pm Enhorabuena por tus progresos gobblin! sigue así! :D :D :D :D :D
Título: Re: Problemilla ensamblero (poner tamaño sprites 16x16) Publicado por: SapphiRe_MSX en 30 de Octubre de 2007, 05:54:05 pm Edito: ya estoy de fiesta hace un buen rato xD ¡¡Genial!! ¿Significa eso que habrá jueguecillos tuyos en ensamblador próximamente? ¡¡Sigue así!! Título: Re: Problemilla ensamblero (poner tamaño sprites 16x16) Publicado por: cybernoid en 30 de Octubre de 2007, 07:04:55 pm GRACIAS POR LOS ANIMOS :D :D :D :D
Voy avanzando en mi dominio MSXero, pero aun me queda cacho, respecto a lo de los jueguecillos ¡OJALÁ! creo que aun me queda que aprender un poco, pero seguro que alguno si vereis :) o eso espero, a ver si llego a la dev :) Título: Re: Problemilla ensamblero (poner tamaño sprites 16x16) Publicado por: jltursan en 30 de Octubre de 2007, 07:53:18 pm Pues ya se te ve bastante suelto en lo del ensamblador ;)
Y aprovecho para romper una lanza por los juegos pequeños; a ver si va a resultar que ahora mucha gente no va a a participar porque si no saca un megarom va a resultar que no vale la pena. ¿Que ha sido de las roms de 8Kb?, algún juego sencillito, tipo G&W es lo que hace falta...:-) Título: Re: Problemilla ensamblero (poner tamaño sprites 16x16) Publicado por: kabish en 30 de Octubre de 2007, 10:44:17 pm Y aprovecho para romper una lanza por los juegos pequeños; a ver si va a resultar que ahora mucha gente no va a a participar porque si no saca un megarom va a resultar que no vale la pena. ¿Que ha sido de las roms de 8Kb?, algún juego sencillito, tipo G&W es lo que hace falta...:-) Pues estoy de acuerdo contigo a medias. Mas que un juego de 8ks o un megarom se puede hacer una cosa muy digna con 16ks o 32ks, sobre todo con las rutinas de compresion que hay por ahi. Pero 8ks a mi se me antoja muy poco, incluso cuando empiezas .. Opinion personal totalmente discutible y censurable. ;) Título: Re: Problemilla ensamblero (poner tamaño sprites 16x16) Publicado por: nerlaska en 31 de Octubre de 2007, 06:34:51 am Lo de los 8Kb es un reto más que nada.
Si es por hacer videojuegos cuando más Kb pues mejor porque menos te limitas. Yo me apunto al carro de Kabish .. bueno que voy a decir si no bajo de los 128Kb :) Por cierto .. creo que en nada publican entrada nueva en la MSXDEV jejeje :) |