Karoshi MSX Community
06 de Julio de 2021, 12:26:08 am *
Bienvenido(a), Visitante. Por favor, ingresa o regístrate.

Ingresar con nombre de usuario, contraseña y duración de la sesión
Noticias:
 
   Inicio   Ayuda Buscar Ingresar Registrarse  
Páginas: [1]
  Imprimir  
Autor Tema: Problemilla ensamblero (poner tamaño sprites 16x16)  (Leído 5531 veces)
0 Usuarios y 1 Visitante están viendo este tema.
cybernoid
Karoshi Maniac
****
Mensajes: 368



WWW
« : 30 de Octubre de 2007, 11:37:01 am »

Hola,

Bueno, pues yo sigo probando cosas en ensamblador C y Basic (todo terreno Tongue) 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 Sad 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
« Última modificación: 30 de Octubre de 2007, 11:51:40 am por gobblin » En línea
jltursan
Karoshi Forum's Guru
*******
Mensajes: 1516


¿Que es lo que has aprendido hoy?


WWW Email
« Respuesta #1 : 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
En línea

Doom dee doom dee doom
cybernoid
Karoshi Maniac
****
Mensajes: 368



WWW
« Respuesta #2 : 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 Sad
En línea
cybernoid
Karoshi Maniac
****
Mensajes: 368



WWW
« Respuesta #3 : 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 Cheesy
En línea
pitpan
Karoshi Forum's Guru
*******
Mensajes: 1812


« Respuesta #4 : 30 de Octubre de 2007, 01:43:51 pm »

Pues sí, sí, hoy toca lapidación. Mira que dudar de mi código X(
En línea
jltursan
Karoshi Forum's Guru
*******
Mensajes: 1516


¿Que es lo que has aprendido hoy?


WWW Email
« Respuesta #5 : 30 de Octubre de 2007, 02:55:53 pm »

Jajaja....y yo que ya paso por encima y ni lo veo... Tongue
En línea

Doom dee doom dee doom
cybernoid
Karoshi Maniac
****
Mensajes: 368



WWW
« Respuesta #6 : 30 de Octubre de 2007, 03:00:05 pm »

Siento haberos hecho perder el tiempo Tongue

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
« Última modificación: 30 de Octubre de 2007, 04:06:12 pm por gobblin » En línea
Jon_Cortazar
Administrator
Karoshi Forum's God
********
Mensajes: 2777



WWW Email
« Respuesta #7 : 30 de Octubre de 2007, 05:35:17 pm »

Enhorabuena por tus progresos gobblin! sigue así!  Cheesy Cheesy Cheesy Cheesy Cheesy
En línea

Jon Cortázar Abraido (aka El Viejo Archivero)
RELEVO Videogames
[Dioniso: La cafeína está haciendo su trabajo; yo espero hacer el mío.]
[pitpan: Me sigue pareciendo más productivo jugar al SNAIL MAZE que seguir esta discusión.]
SapphiRe_MSX
Visitante
« Respuesta #8 : 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í!!
En línea
cybernoid
Karoshi Maniac
****
Mensajes: 368



WWW
« Respuesta #9 : 30 de Octubre de 2007, 07:04:55 pm »

GRACIAS POR LOS ANIMOS    Cheesy Cheesy Cheesy Cheesy

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 Smiley o eso espero, a ver si llego a la dev  Smiley
En línea
jltursan
Karoshi Forum's Guru
*******
Mensajes: 1516


¿Que es lo que has aprendido hoy?


WWW Email
« Respuesta #10 : 30 de Octubre de 2007, 07:53:18 pm »

Pues ya se te ve bastante suelto en lo del ensamblador Wink

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...:-)
En línea

Doom dee doom dee doom
kabish
Karoshi Maniac
****
Mensajes: 470


caspaflims@hotmail.com
« Respuesta #11 : 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. Wink
En línea
nerlaska
Karoshi Excellent Member
******
Mensajes: 1102


Programador


WWW Email
« Respuesta #12 : 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 Smiley
Por cierto .. creo que en nada publican entrada nueva en la MSXDEV jejeje Smiley
En línea

MSX4EVER2GETHER
www.nerlaska.com
Páginas: [1]
  Imprimir  
 
Ir a:  

Impulsado por MySQL Impulsado por PHP Powered by SMF 1.1.21 | SMF © 2013, Simple Machines XHTML 1.0 válido! CSS válido!