Karoshi MSX Community

Desarrollo MSX => Desarrollo (Español/Spanish) => Mensaje iniciado por: SapphiRe_MSX en 20 de Mayo de 2008, 03:19:06 pm



Título: Replayer PT3 desde ROM compilable con asMSX
Publicado por: SapphiRe_MSX en 20 de Mayo de 2008, 03:19:06 pm
Buenas, pues eso, que tengo una versión del replayer del PT3 que funciona desde ROM (gracias a las indicaciones de MSX-Kun que fue el que se curró la eliminación del código automodificable) y que, además es compilable con el asMSX (esto sí me lo he currado yo).

Está basada en la versión original que Dioniso adaptó a MSX, pero con tabla de notas fija. Esta versión acepta comandos (algo imprescindible en las músicas del QBIQS), por lo que ocupa 1762 bytes en ROM y usa 384 bytes de RAM. Estoy mirando a ver si puedo comprimir la tabla de volúmenes basándome en las rutinas originales, ya que el BITBUSTER sólo rasca 53 bytes extra.

En breve os mando algo si estáis interesados, claro ;D ;D

Saludos
--
Sph.


Título: Re: Replayer PT3 desde ROM compilable con asMSX
Publicado por: ARTRAG en 20 de Mayo de 2008, 03:27:20 pm
Please, share it if u can, it c an be very useful!!


Título: Re: Replayer PT3 desde ROM compilable con asMSX
Publicado por: jltursan en 20 de Mayo de 2008, 04:29:48 pm
Pues estaría bien disponer del código :). Era uno de esos temas pendientes que pululaban por ahí y que nadie se había molestado (o atrevido) a meterse con él.

¡Buen trabajo SapphiRe! :D


Título: Re: Replayer PT3 desde ROM compilable con asMSX
Publicado por: SapphiRe_MSX en 20 de Mayo de 2008, 05:34:31 pm
Más noticias, acabo de adaptar la rutina de generación de la tabla de volúmenes con lo que he ahorrado "unos cuantos" bytes más en ROM. Ahora sólo ocupa 1540 bytes en lugar de los 1762 iniciales, ganando 222 bytes. Sigo investigando por donde meter tijeretazos sin perder funcionalidad :D


Título: Re: Replayer PT3 desde ROM compilable con asMSX
Publicado por: Dioniso en 20 de Mayo de 2008, 07:09:41 pm
Pues, si adaptas el replayer, te puedes ahorrar los 100 primeros bytes de las canciones PT3; eso sería otro buen tijeretazo  ;)


Título: Re: Replayer PT3 desde ROM compilable con asMSX
Publicado por: SapphiRe_MSX en 20 de Mayo de 2008, 07:20:27 pm
Pues, si adaptas el replayer, te puedes ahorrar los 100 primeros bytes de las canciones PT3; eso sería otro buen tijeretazo  ;)

Eso ya está hecho :D

He comparado la última versión (release 7) con la que tú adaptaste (release 6) que es sobre la que me he basado. La diferencia es tan minúscula que no merece la pena modificar el código.

Lo que he estado haciendo ha sido declarar como locales muchas de las etiquetas, porque así no se engorrina mucho el código (hay que reconocer que el replayer tiene un montón de etiquetas). También he repasado el código en sí y he optimizado algunas partes recortando bytes de aquí y de allá. Al final queda como sigue: 1528 bytes en ROM y 382 en RAM. Antes de la optimización el replayer comprimido me usaba 1459 bytes en ROM y 2146 en RAM, con lo que la ganancia ha sido interesante :P


Título: Re: Replayer PT3 desde ROM compilable con asMSX
Publicado por: Dioniso en 20 de Mayo de 2008, 07:22:13 pm
Yes.

Sobre el otro tema  ::) te acabo de escribir un email. Eso sólo te lo comento por privado.


Título: Re: Replayer PT3 desde ROM compilable con asMSX
Publicado por: MsxKun en 21 de Mayo de 2008, 12:42:06 pm
Buenas, pues eso, que tengo una versión del replayer del PT3 que funciona desde ROM (gracias a las indicaciones de MSX-Kun que fue el que se curró la eliminación del código automodificable) y que, además es compilable con el asMSX (esto sí me lo he currado yo).

Es que me hacia falta tenerlo en ROM, la necesidad obliga :P Me alegro haber sido util por una vez  ;D
El replayer ROMero esta ahora mismo rulando en el TamRam, sin problemas :)


Título: Re: Replayer PT3 desde ROM compilable con asMSX
Publicado por: SapphiRe_MSX en 21 de Mayo de 2008, 02:08:47 pm
Es que me hacia falta tenerlo en ROM, la necesidad obliga :P Me alegro haber sido util por una vez  ;D

¿Cómo que por una vez? ¡La cantidad de ideas que habremos parido con nuestras conversaciones!

Citar
El replayer ROMero esta ahora mismo rulando en el TamTam, sin problemas :)

Sip, igual digo con respecto al QBIQS, funcionando a la perfección con una mínima inversión de memoria y con la tranquilidad de que, al usar el asMSX, todo se ensambla perfectamente aunque el replayer cambie de dirección.

A ver si a lo largo de la tarde os puedo poner el código en algún sitio :D


Título: Re: Replayer PT3 desde ROM compilable con asMSX
Publicado por: SapphiRe_MSX en 21 de Mayo de 2008, 04:42:12 pm
Ea, ya está el código disponible aquí:

http://z80st-software.blogspot.com/2008/05/replayer-pt3-en-rom-con-sintxis-asmsx.html

Si tenéis comentarios podéis dejarlos aquí o, mejor, en el propio post del blog.


Título: [NUEVA VERSIÓN] Replayer PT3 desde ROM compilable con asMSX
Publicado por: SapphiRe_MSX en 19 de Noviembre de 2008, 08:04:10 pm
Hola a todos:

  Pues eso, que hay una nueva versión del código del replayer PT3 desde ROM compilable con asMSX. Me he visto en la necesidad de volver al código del replayer para poder utilizar más de una tabla de frecuencias, así que ahora hay una versión que admite todas las tablas del Vortex Tracker.

  Podéis ver las características de la nueva versión y descargarla en mi blog:

http://z80st-software.blogspot.com/2008/11/nueva-versin-del-replayer-de-pt3.html

  Espero que os sea útil :D :D :D

Saludos
--
Sph.


Título: Re: Replayer PT3 desde ROM compilable con asMSX
Publicado por: ARTRAG en 25 de Noviembre de 2008, 02:18:35 pm
Nice! I'll study your update and see if I need to include your changes!
Thanks!


Título: Re: Replayer PT3 desde ROM compilable con asMSX
Publicado por: SapphiRe_MSX en 25 de Noviembre de 2008, 03:40:39 pm
Nice! I'll study your update and see if I need to include your changes!

Sure you need! Even if you're using a fixed table, the new version is around 80 bytes shorter than the previous one :D

Hope you find it useful

Regards
--
Sph.


Título: Re: Replayer PT3 desde ROM compilable con asMSX
Publicado por: ARTRAG en 27 de Noviembre de 2008, 05:58:12 pm
Sapphire,
was you aware of the fact that it exists already a recent ROM ready version of the PT3 player from  S.V.Bulba ?
It is here: http://bulba.untergrund.net/PTxTools.7z
There is also some msx code in the same pack but outdated and not rom ready
Here the leading comments from the code:
Código:
;Vortex Tracker II v1.0 PT3 player for ZX Spectrum
;ROM version (specially for Axor)
;(c)2004,2007 S.V.Bulba <vorobey@mail.khstu.ru>
;http://bulba.untergrund.net (http://bulba.at.kz)

;Release number
Release EQU "MOR7"

;Features
;--------
;-Can run in ROM (self-modified code is not used).
;-Can be compiled at any address (i.e. no need rounding ORG
; address).
;-Variables (VARS) can be located at any address (not only after
;code block).
;-INIT subroutine detects module version and rightly generates
; both note and volume tables outside of code block (in VARS).
;-Two portamento (spc. command 3xxx) algorithms (depending of
; module version).
;-New 1.XX and 2.XX special command behaviour (only for PT v3.7
; and higher).
;-Any Tempo value are accepted (including Tempo=1 and Tempo=2).
;-Fully compatible with Ay_Emul PT3 player codes.
;-See also notes at the end of this source code.

;Warning!!! PLAY subroutine can crash if no module are loaded
;into RAM or INIT subroutine was not called before.

;Call MUTE or INIT one more time to mute sound after stopping
;playing
[....]



Título: Re: Replayer PT3 desde ROM compilable con asMSX
Publicado por: SapphiRe_MSX en 28 de Noviembre de 2008, 12:27:23 pm
was you aware of the fact that it exists already a recent ROM ready version of the PT3 player from  S.V.Bulba ?
It is here: http://bulba.untergrund.net/PTxTools.7z

I just take a look to this version and:

- :) It uses the same trick that MSX-Kun did to allow run PT3 player on ROM. Great! The patch we used is the way to do that.
- :) Uses 5 bytes less RAM (571bytes vs 576bytes used by my version).
- :( It's bigger (1634 bytes) than the one you can find on my blog (1548 bytes).
- :( You can't strip first 99 bytes of PT3 files (bigger module files).
- :( ROUT routine follows PLAY routine, so you can't call them seperately as on my version.
- :( Doesn't work directly on MSX ;)

But, of course, the S.V.Bulba version allows to play more files due to the use of Version byte of PT3 modules and it's the official one.

Thanks for the info!!
--
Sph.


Título: Re: Replayer PT3 desde ROM compilable con asMSX
Publicado por: ARTRAG en 28 de Noviembre de 2008, 06:55:05 pm
I think you can get inspired to save some bytes of ram.
e.g. Bulba's code reuses the same locations for different meanings (especially for the ROM patch).
Probably he relies on the fact that the branches of code interested are never used at the same time.
look here:
Código:
CrPsPtr DW 0
AddToEn DB 0
AdInPtA DW 0
AdInPtB DW 0
AdInPtC DW 0
Env_Del DB 0
MODADDR DW 0
ESldAdd DW 0
Delay DB 0
PDSP_
CSP_
PSP_ DW 0
SamPtrs DW 0
OrnPtrs DW 0
PatsPtr DW 0
LPosPtr DW 0
L3
M2
PrSlide DW 0
PrNote DB 0
Version DB 0
;end of moved vars and self-modified code

we have PDSP_, CSP_, PSP_   in the same location and L3, M2, PrSlide in the same location.
This saves 8 bytes in ram.

The extra size in ROM allows the use of the version byte, for the different versions of the pt3 files: for sure you can strip the first 99 bytes also with this code, as no other data are taken from the header apart that (from what i see at least).

The real difference between the versions of replayer seems the volume table, or not ?



Título: Re: Replayer PT3 desde ROM compilable con asMSX
Publicado por: SapphiRe_MSX en 28 de Noviembre de 2008, 07:47:44 pm
I think you can get inspired to save some bytes of ram.
e.g. Bulba's code reuses the same locations for different meanings (especially for the ROM patch).
Probably he relies on the fact that the branches of code interested are never used at the same time.

Mmm, cool, I will take a more detailed look after Barcelona's RU :D

Citar
The extra size in ROM allows the use of the version byte, for the different versions of the pt3 files: for sure you can strip the first 99 bytes also with this code, as no other data are taken from the header apart that (from what i see at least).

The version byte is the 13th byte of the PT3 module. We can see it here:

Código:
LD A,(IX+13-100) ;EXTRACT VERSION NUMBER

So you can only strip 13 bytes instead of 99... unless you strip first 99 bytes except byte 13th and change this line. My question is: we really need the version byte and a more generic PT3 player?

There are also some extra code on this version to be used on Spectrum, because it needs extra instructions to set the upper byte of the output port:

Código:
ROUT XOR A
ROUT_A0 LD DE,#FFBF
LD BC,#FFFD
LD HL,AYREGS

And, of course, it doesn't take on mind the upper bits of REG#7... ;D ;D

Citar
The real difference between the versions of replayer seems the volume table, or not ?

No, no. The volume table is generated with the original routine in both ("fixed table" and "all tables") MSX versions. And the "all tables" version also uses the same tone table generator than the S.Bulba version.

I guess both (Bulba's and "all tables") codes are pretty similar.

Regards and thanks for the info
--
Sph.