1

Je suis en train de regarder le format SNDH, et y a un truc que je ne capte pas.

J'ai regardé le fichier sndhv2.txt qui contient ca :

; SNDH file structure, Revision 2.00

; Original SNDH Format devised by Jochen Knaus
; SNDH V1.1 Updated/Created by Anders Eriksson and Odd Skancke
; SNDH V2.0 by Phil Graham

; This document was originally created by Anders Eriksson, updated and
; adapted with SNDH v2 structures by Phil Graham.

; February, 2005
;
;
; All values are in MOTOROLA BIG ENDIAN format


;---------------------------------------------------------------------------
;Offset Size Function Example
;---------------------------------------------------------------------------
;0 4 INIT music driver bra.w init_music_driver
; (subtune number in d0.w)
;4 4 EXIT music driver bra.w exit_music_driver
;8 4 music driver PLAY bra.w vbl_play
;12 4 SNDH head dc.b 'SNDH'



;---------------------------------------------------------------------------
;Beneath follows the different TAGS that can (should) be used.
;The order of the TAGS is not important.
;---------------------------------------------------------------------------

;---------------------------------------------------------------------------
; TAG Description Example Termination
;---------------------------------------------------------------------------
; TITL Title of Song dc.b 'TITL','Led Storm',0 0 (Null)
; COMM Composer Name dc.b 'COMM','Tim Follin',0 0 (Null)
; RIPP Ripper Name dc.b 'RIPP','Me the hacker',0 0 (Null)
; CONV Converter Name dc.b 'CONV','Me the converter',0 0 (Null)
; ##?? Sub Tunes dc.b '##04',0 0 (Null)
; TA??? Timer A dc.b 'TA50',0 0 (Null)
; TB??? Timer B dc.b 'TB60',0 0 (Null)
; TC??? Timer C dc.b 'TC50',0 0 (Null)
; TD??? Timer D dc.b 'TD100',0 0 (Null)
; !V?? VBL dc.b '!V50',0 0 (Null)
; YEAR Year of release dc.b '1996',0 0 (Null) SNHDv2
; TIME (sub) tune time dc.b 'TIME' None SNDHv2
; (in seconds) dc.w x1,x2,x3,x4
; HDNS End of Header dc.b 'HDNS' None SNDHv2
; Must be on an
; EVEN boundary

;---------------------------------------------------------------------------
;Calling method and speed
;---------------------------------------------------------------------------
;This a very important part to do correctly.
;Here you specify what hardware interrupt to use for calling the music
;driver.
;
;These options are available;
;dc.b '!Vnn' VBL (nn=frequency)
;dc.b 'TAnnn',0 Timer A (nnn=frequency)
;dc.b 'TBnnn',0 Timer B (nnn=frequency)
;dc.b 'TCnnn',0 Timer C (nnn=frequency)
;dc.b 'TDnnn',0 Timer D (nnn=frequency)
;
;VBL - Is NOT recommended for use. There is no change made to the
; VBL frequency so it will play at the current VBL speed.
;
;Timer A - Is only recommended if Timer C is not accurate enough. Use
; with caution, many songs are using Timer A for special
; effects.
;
;Timer B - Is only recommended if Timer C is not accurate enough. Use
; with caution, many songs are using Timer B for special
; effects.
;
;Timer C - The default timer if nothing is specified. Default speed
; is 50Hz. Use Timer C playback wherever possible. It hooks
; up to the OS 200Hz Timer C interrupt and leaves all other
; interrupts free for special effects.
;
; For songs with a replay speed uneven of 200Hz, SND Player
; uses a smart routine to correct for the wrong speed. The
; result is usually very good. If the result isn't good
; enough,then consider another Timer, but be careful with
; Timer collisions!
;
;Timer D - Is only recommended if Timer C is not accurate enough.
; Use with caution, many songs are using Timer D for
; special effects.


;---------------------------------------------------------------------------
; TIME Tag
;---------------------------------------------------------------------------
; The TIME tag is followed by 'x' short words ('x' being the number of
; tunes). Each word contains the length of each sub tune in seconds. If the
; word is null then it is assumed that the tune endlessly loops.
;---------------------------------------------------------------------------


;---------------------------------------------------------------------------
; HDNS Tag
;---------------------------------------------------------------------------
; The HDNS signifies the end of the SNDH header and the start of the actual
; music data. This tag must be on an even boundary.
;---------------------------------------------------------------------------


;---------------------------------------------------------------------------
;Example of a complete SNDH header/file
;---------------------------------------------------------------------------
;
; section text
;
; bra.w sndh_init
; bra.w sndh_exit
; bra.w sndh_vbl
;
; dc.b 'SNDH'
; dc.b 'TITL','Odd Stuff Main Tune',0
; dc.b 'COMM','Dma-Sc / Sector one',0
; dc.b 'CONV','John Doe',0
; dc.b 'RIPP','Doe Johnson',0
; dc.b '##01',0
; dc.b 'TC50',0
; dc.b 'YEAR','2001',0
; dc.b 'TIME'
; dc.w $e1 ; 3 mins 45 secs = 225 seconds = $e1
; even
; dc.b 'HDNS'
;
;
;sndh_init:
; movem.l d0-a6,-(sp)
; lea songfile(pc),a0
; bsr.w player
; movem.l (sp)+,d0-a6
; rts
;
;sndh_exit:
; movem.l d0-a6,-(sp)
; bsr.w player+4
; movem.l (sp)+,d0-a6
; rts
;
;sndh_vbl:
; movem.l d0-a6,-(sp)
; bsr.w player+8
; movem.l (sp)+,d0-a6
; rts
;
; section data
;
;songfile:
; incbin 'mysong'
; even
;
;player:
; incbin 'replaycode.bin'
; even


;http://phf.atari.org/

;(EOF)


Ma question .... il est où ce fichier replaycode.bin ?.... je ne le vois nulle part !? ....

2

Ben c'est à toi de le programmer... le SNDH n'est qu'un conteneur pour des données et du code laissé au choix de l'auteur de la musique.
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

3

Ok, vu.

C'est bon, ca fonctionne nickel, j'ai juste fait une routine vite fait sur la vbl, je verrai plus tard pour le Timer C.

En passant, je cherche un algo pour décompresser du ICE, les SNDH fournis sur le site sont compressés, et plutôt que de les décompresser à la main, je preferai me prog une routine de decompression à intégrer direct dans le source en asm, mais j'ai pas d'algo.

Quelqu'un aurait ca ?

4

!call GT Turbo
--- Call : GT Turbo appelé(e) sur ce topic ...

Il a peut-être ça.
Jette aussi un coup d'œil à la partie programmation de DHS.
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

5

J'ai regardé la partie prog de dhs, y a un source pour décompresser l'arj, mais je n'ai rien vu pour le ice.

Je continue de chercher ... ^^ ... en attendant éventuellement gt ^^

6

L'ice smile Je dois bien avoir la routine qui traine sur une disquette, faut que je regardes, les Jagwaristes doivent l'avoir car il est le premier packer / depacker a avoir utilisé sur Jaguar, je crois que dans les 'exemples' d'une disquette de Starcat le source s'y trouve, car j'ai quelques petits problemes avec le net a cette heure. Donc ceux qui codent sur Jaguar mettez un oeil dans vos exemples, sinon faudra attendre que je me reconnectes.

GT Off line rabbit
avatar
Accrochez vous ca va être Cerebral !!

7

Ok, merci pour l'info GT.

Un jaguariste pourrait regarder svp ?... ce serait sympa .. smile.

J'ai toujours pas trouvé sur le net ... je continu de chercher.

8

J'ai retrouvé des routines de décompression ICE en GFA Basic : Ice_gfa.zip
Et aussi des sources en assembleur : _ice.s
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

9

haaa.... super smile ....

Merci smile