Package: s3mod
Version: 1.09-14_arm.deb

When attempting to play a valid MOD file with s3mod, it complains that the file is invalid:

[EMAIL PROTECTED]:~$ s3mod ../ian/icu8ab4t.mod
Protracker Module name = "icu8ab4t            "
0  04530 written and composed    1  00096  alex craxton 1992
2  00000 92 accel of dmx         3  00002 imension x    <
4  59102 rockish tune.           5  59594 the nasty
6  16580 he guitar               7  59102 ed to
8  59614 itar                    9  55506
10 00000                         11 00000    8
12 00000                         13 00000
14 00000                         15 00000
16 00000                         17 00000
18 00002                         19 00000
20 00000                         21 00000
22 00000                         23 00000
24 00000                         25 00000
26 00000                         27 00000
28 29284                         29 03600
30 00000
File is not a valid mod or s3m!

The file format may not be recognised because the structures describing the MOD file format are not correct on the ARMv4l architecture - as defined in mod.h. A suggested fix is in the patch below:

$ diff -u mod.h s3mod-1.09.orig/mod.h
--- mod.h       2005-11-20 22:47:28.000000000 +0000
+++ s3mod-1.09.orig/mod.h       1995-10-21 07:58:08.000000000 +0100
@@ -65,9 +65,6 @@
 #define S3M_MAGIC2 "SCRM"
 #define S3M_INSTR2 "SCRS"

-
-#pragma pack(1)
-
 typedef struct _s3m_header
 {
   int8              name[28];
@@ -84,7 +81,7 @@
   uint8             bpm;
   uint8             fill_1[13];
   uint8             channel_maps[32];
-}  __attribute__((__packed__))  s3m_header;
+} s3m_header;

 typedef struct _s3m_instr
 {
@@ -103,7 +100,7 @@
   uint16            word_4;
   int8              comment[28];
   int8              id[4];
-}  __attribute__((__packed__))  s3m_instr;
+} s3m_instr;

 typedef struct _mod_voice
 {
@@ -113,7 +110,7 @@
   uint8             volume;
   uint16            repeat_point;
   uint16            repeat_length;
-}  __attribute__((__packed__))  mod_voice;
+} mod_voice;

 typedef struct _song_data
 {
@@ -136,14 +133,14 @@
   uint16            bpm;
   uint16            tempo;
   uint8             s3m;
-}  __attribute__((__packed__)) song_data;
+} song_data;

 typedef struct _song_15
 {
   uint8             song_length_patterns;
   uint8             song_repeat_patterns;
   uint8             positions[128];
-} __attribute__((__packed__)) song_15;
+} song_15;

 typedef struct track_info
 {
@@ -152,7 +149,7 @@
   uint16        length;
   uint16        repeat;
   uint16        replen;
-  int8                 volume;
+  int8          volume;
   int8          error;
   uint16        pitch;
   uint16        old_position;
@@ -193,8 +190,6 @@
   uint16        period_high_limit;
 } track_info;

-#pragma pack(0)
-
 #ifdef NEAR_FAR_PTR
 typedef track_info near *track_info_ptr;
 #else

This is all on a StrongARM NetWinder machine, running Debian GNU/Linux 3.1, kernel 2.4.19-rmk7 and libc6 2.3.2.ds1-22.

Thanks,

--
Chris Williams | http://www.diodesign.co.uk/


--
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to