Título: ejecutar comandos copy (MSX2) heeelp Publicado por: cybernoid en 16 de Diciembre de 2009, 10:22:10 am Hola,
Vereis, queria hacer unas pruebecillas con los copiando datos de VRAM a VRAM en msx2, he visto que dispone de unas funciones por hard, pero no tengo ni idea de como llamarlas he visto que esta funcion en la bios BLTVV que permite hacer eso(copiar de vram a vram)... pero la verdad ni puñetera idea de como usarla para empezar aparentemente hay que pasar por la funcion SUBROM o EXTROM pasandoles en IX la direccion de la funcion deseada en este caso BLTVV parece que la cosa seria algo asi ;aqui los parametros para BLTVV ld ix,BLTVV call subrom pero bueno, entonces me miro la funcion BLTVV y aqui viene el mas dificil todavia :P, entre mi pobre nivel de ingles y mi poca experiencia ensamblera me lia una poco Function: transfers data in VRAM area Input: HL register <-- F562H The following parameters should be set: * SX (F562H, 2) X-coordinate of the source * SY (F564H, 2) Y-coordinate of the source * DX (F566H, 2) X-coordinate of the destination * DY (F568H, 2) Y-coordinate of the destination * NX (F56AH, 2) number of dots in the X direction * NY (F56CH, 2) number of dots in the Y direction * CDUMMY (F56EH, 1) dummy (not required to be set) * ARG (F56FH, 1) selects the direction and expansion RAM (same as VDP R#45) * LOGOP (F570H, 1) logical operation code (same as the logical operation code of VDP) Output: the CY flag is reset Registers: all entiendo que SC,SY,etc,etc son posiciones de memoria, pero no se si pertenecen a la ram o a la vram creo (si, CREO) que NX y NY hace referencia a el ancho y alto de la imagen, pero no lo tengo claro( eso de "numero de puntos" me despista) alguien tiene algun ejemplo que me pueda servir? gracias de antemano EDIT: adjunto pedacin de codigo que no chuta Código: ; MSX2 ;--------------------------------------------------------- ; ASSEMBLER DIRECTIVES (asMSX) ;--------------------------------------------------------- .bios ; Defines MSX BIOS routines .page 1 ; Assembly starts at 8000h .rom ; Selected format ;.basic .db "MSX2",1Ah ; Text header - not MSX standard .start INIT ; Program start INIT: call INIGRP ld a,5 call CHGMOD ld hl,0 ; inicio pantalla sc5 ld b,100 ; repetir 100 veces ld a,255 PINTA: ; dibujo un rallote feo call WRTVRM inc hl djnz PINTA ;copio los parametros de copia en la direccion que toca (teoricamente claro...) ld de,$F562 ; direccion de los parametros ld hl,datas ld bc,15 ldir ; ahora quiero copiarlo en otras coordenadas ld hl,$F562 ; direccion de los parametros ld ix,$0191 ; BLTVV call EXTROM BUCLE: ; dando vueltas como un tonto... jp BUCLE ; parametros datas: db 0,0,0,0 ; sx,sy db 0,100,0,100 ; dx,dy db 0,100,0,100 ; nx,ny db 0 ; dummy db 0 ; arg db 0 ; logical operation ; 15 bytes ¿ por que no chuta? WHYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY? Título: Re: ejecutar comandos copy (MSX2) heeelp Publicado por: Jon_Cortazar en 16 de Diciembre de 2009, 03:14:11 pm Yo siento no poder ayudarte, porque no tengo ni guarra de como van los comandos del VDP del MSX2 :'(, de todas formas te dejo un link a un artículo del MAP donde se trata el tema y que tal vez te de alguna pista: VDP programming tutorial (http://map.grauw.nl/articles/vdp_tut.php) ;)
Título: Re: ejecutar comandos copy (MSX2) heeelp Publicado por: cybernoid en 16 de Diciembre de 2009, 03:44:55 pm Yo siento no poder ayudarte, porque no tengo ni guarra de como van los comandos del VDP del MSX2 :'(, de todas formas te dejo un link a un artículo del MAP donde se trata el tema y que tal vez te de alguna pista: VDP programming tutorial (http://map.grauw.nl/articles/vdp_tut.php) ;) gracias, le pegare un vistazo, aunque mi ingles no vale mucho que se diga :P Título: Re: ejecutar comandos copy (MSX2) heeelp Publicado por: cybernoid en 16 de Diciembre de 2009, 05:02:24 pm parece que he conseguido copiar a traves del VDP, pero atraves de la bios nada :P
bueno, seguire jugando a ver que pasa... por cierto, al VDP del msx2 tambien hay que dejarle tiempo entre out y out? si hay que dejarle tiempo ¿como lo calculo? Título: Re: ejecutar comandos copy (MSX2) heeelp Publicado por: cybernoid en 17 de Diciembre de 2009, 09:27:52 am solucionado :P estaba pasando mal los parametros, me di cuenta leyendo el manual del VDP del msx2
Título: Re: ejecutar comandos copy (MSX2) heeelp Publicado por: ARTRAG en 17 de Diciembre de 2009, 12:02:57 pm This is from the tutorial and works
Código: ; ;Is supposed to run in screen 5, so you should make a small BASIC loader, ; or call the CHMOD BIOS routine. ; DoExampleCopy: xor a ;set vram write base address ld hl,#8000 ; to 1st byte of page 1... call SetVDP_Write ld a,#88 ;use color 8 (red) FillL1: ld c,8 ;fill 1st 8 lines of page 1 FillL2: ld b,128 ; out (#98),a ;could also have been done with djnz FillL2 ;a vdp command (probably faster) dec c ;(and could also use a fast loop) jp nz,FillL1 ld hl,COPYBLOCK ;execute the copy call DoCopy ret COPYBLOCK: DB 0,0,0,1 DB 0,0,0,0 DB 8,0,8,0 DB 0,0,#D0 ;HMMM ;As an alternate notation, you might actually prefer the following: ; ; DW #0000,#0100 ; DW #0000,#0000 ; DW #0008,#0008 ; DB 0,0,#D0 Título: Re: ejecutar comandos copy (MSX2) heeelp Publicado por: cybernoid en 17 de Diciembre de 2009, 12:33:24 pm This is from the tutorial and works Código: ; ;Is supposed to run in screen 5, so you should make a small BASIC loader, ; or call the CHMOD BIOS routine. ; DoExampleCopy: xor a ;set vram write base address ld hl,#8000 ; to 1st byte of page 1... call SetVDP_Write ld a,#88 ;use color 8 (red) FillL1: ld c,8 ;fill 1st 8 lines of page 1 FillL2: ld b,128 ; out (#98),a ;could also have been done with djnz FillL2 ;a vdp command (probably faster) dec c ;(and could also use a fast loop) jp nz,FillL1 ld hl,COPYBLOCK ;execute the copy call DoCopy ret COPYBLOCK: DB 0,0,0,1 DB 0,0,0,0 DB 8,0,8,0 DB 0,0,#D0 ;HMMM ;As an alternate notation, you might actually prefer the following: ; ; DW #0000,#0100 ; DW #0000,#0000 ; DW #0008,#0008 ; DB 0,0,#D0 tnx :) me lo mirare, igualmente ya lo tengo solucionado :) disculpa que no conteste en ingles, mi ingles escrito es peor que mi ingles leido Título: Re: ejecutar comandos copy (MSX2) heeelp Publicado por: MsxKun en 19 de Diciembre de 2009, 04:05:34 pm parece que he conseguido copiar a traves del VDP, pero atraves de la bios nada :P bueno, seguire jugando a ver que pasa... por cierto, al VDP del msx2 tambien hay que dejarle tiempo entre out y out? si hay que dejarle tiempo ¿como lo calculo? Pues no hace falta, de hecho se come ristras de outis a pelo... (que me corrijan si me equivoco) |