LMMS
Loading...
Searching...
No Matches
s3m.h
Go to the documentation of this file.
1/*
2 * Adplug - Replayer for many OPL2/OPL3 audio file formats.
3 * Copyright (C) 1999 - 2006 Simon Peter, <dn.tlp@gmx.net>, et al.
4 *
5 * This library is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Lesser General Public
7 * License as published by the Free Software Foundation; either
8 * version 2.1 of the License, or (at your option) any later version.
9 *
10 * This library is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Lesser General Public License for more details.
14 *
15 * You should have received a copy of the GNU Lesser General Public
16 * License along with this library; if not, write to the Free Software
17 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
18 *
19 * s3m.h - AdLib S3M Player by Simon Peter <dn.tlp@gmx.net>
20 */
21
22#ifndef H_ADPLUG_S3M
23#define H_ADPLUG_S3M
24
25#include "player.h"
26
27class Cs3mPlayer: public CPlayer
29 public:
30 static CPlayer *factory(Copl *newopl);
32 Cs3mPlayer(Copl *newopl);
33
34 bool load(const std::string &filename, const CFileProvider &fp);
35 bool update();
36 void rewind(int subsong);
37 float getrefresh();
38
39 std::string gettype();
40 std::string gettitle()
41 { return std::string(header.name); };
42
43 unsigned int getpatterns()
44 { return header.patnum; };
45 unsigned int getpattern()
46 { return orders[ord]; };
47 unsigned int getorders()
48 { return (header.ordnum-1); };
49 unsigned int getorder()
50 { return ord; };
51 unsigned int getrow()
52 { return crow; };
53 unsigned int getspeed()
54 { return speed; };
55 unsigned int getinstruments()
56 { return header.insnum; };
57 std::string getinstrument(unsigned int n)
58 { return std::string(inst[n].name); };
59
60 protected:
61 struct s3mheader {
62 char name[28]; // song name
63 unsigned char kennung,typ,dummy[2];
64 unsigned short ordnum,insnum,patnum,flags,cwtv,ffi;
65 char scrm[4];
66 unsigned char gv,is,it,mv,uc,dp,dummy2[8];
67 unsigned short special;
68 unsigned char chanset[32];
69 };
70
71 struct s3minst {
72 unsigned char type;
73 char filename[15];
75 unsigned long c2spd;
76 char dummy2[12], name[28],scri[4];
77 } inst[99];
78
79 struct {
81 } pattern[99][64][32];
82
83 struct {
84 unsigned short freq,nextfreq;
86 } channel[9];
87
89 unsigned char orders[256];
91
92 private:
93 static const signed char chnresolv[];
94 static const unsigned short notetable[12];
95 static const unsigned char vibratotab[32];
96
97 void load_header(binistream *f, s3mheader *h);
98 void setvolume(unsigned char chan);
99 void setfreq(unsigned char chan);
100 void playnote(unsigned char chan);
101 void slide_down(unsigned char chan, unsigned char amount);
102 void slide_up(unsigned char chan, unsigned char amount);
103 void vibrato(unsigned char chan, unsigned char info);
104 void tone_portamento(unsigned char chan, unsigned char info);
105};
106
107#endif
Definition fprovide.h:29
CPlayer(Copl *newopl)
Definition player.cpp:34
Definition opl.h:26
unsigned char del
Definition s3m.h:90
unsigned char volume
Definition s3m.h:80
void vibrato(unsigned char chan, unsigned char info)
Definition s3m.cpp:513
void setfreq(unsigned char chan)
Definition s3m.cpp:456
bool update()
Definition s3m.cpp:152
unsigned char info
Definition s3m.h:80
unsigned short nextfreq
Definition s3m.h:84
bool load(const std::string &filename, const CFileProvider &fp)
Definition s3m.cpp:59
unsigned char note
Definition s3m.h:80
unsigned char dualinfo
Definition s3m.h:85
unsigned short freq
Definition s3m.h:84
std::string getinstrument(unsigned int n)
Definition s3m.h:57
void load_header(binistream *f, s3mheader *h)
Definition s3m.cpp:429
unsigned int getorders()
Definition s3m.h:47
void playnote(unsigned char chan)
Definition s3m.cpp:465
unsigned char loopstart
Definition s3m.h:90
void setvolume(unsigned char chan)
Definition s3m.cpp:447
std::string gettype()
Definition s3m.cpp:407
struct Cs3mPlayer::@173052331332364334054104007227203063050024076001 channel[9]
unsigned char instrument
Definition s3m.h:80
unsigned char ord
Definition s3m.h:90
unsigned int getpatterns()
Definition s3m.h:43
unsigned char orders[256]
Definition s3m.h:89
unsigned char trigger
Definition s3m.h:85
struct Cs3mPlayer::s3minst inst[99]
unsigned char vol
Definition s3m.h:85
void tone_portamento(unsigned char chan, unsigned char info)
Definition s3m.cpp:534
unsigned int getrow()
Definition s3m.h:51
unsigned int getpattern()
Definition s3m.h:45
unsigned char nextoct
Definition s3m.h:85
void rewind(int subsong)
Definition s3m.cpp:395
void slide_down(unsigned char chan, unsigned char amount)
Definition s3m.cpp:489
unsigned char command
Definition s3m.h:80
unsigned char songend
Definition s3m.h:90
std::string gettitle()
Definition s3m.h:40
unsigned char loopcnt
Definition s3m.h:90
unsigned int getorder()
Definition s3m.h:49
float getrefresh()
Definition s3m.cpp:422
static CPlayer * factory(Copl *newopl)
Definition s3m.cpp:39
unsigned char oct
Definition s3m.h:80
unsigned int getspeed()
Definition s3m.h:53
static const unsigned char vibratotab[32]
Definition s3m.h:34
s3mheader header
Definition s3m.h:88
static const signed char chnresolv[]
Definition s3m.h:28
unsigned int getinstruments()
Definition s3m.h:55
unsigned char speed
Definition s3m.h:90
static const unsigned short notetable[12]
Definition s3m.h:31
Cs3mPlayer(Copl *newopl)
Definition s3m.cpp:44
unsigned char key
Definition s3m.h:85
void slide_up(unsigned char chan, unsigned char amount)
Definition s3m.cpp:501
unsigned char fx
Definition s3m.h:85
unsigned char tempo
Definition s3m.h:90
unsigned char crow
Definition s3m.h:90
unsigned f
Definition inflate.c:1572
static char filename[]
Definition features.c:5
static const char * name
Definition pugl.h:1582
Definition s3m.h:61
unsigned short flags
Definition s3m.h:64
unsigned char it
Definition s3m.h:66
unsigned char is
Definition s3m.h:66
unsigned short ordnum
Definition s3m.h:64
unsigned char uc
Definition s3m.h:66
char scrm[4]
Definition s3m.h:65
unsigned short special
Definition s3m.h:67
unsigned short ffi
Definition s3m.h:64
unsigned char kennung
Definition s3m.h:63
unsigned char dummy2[8]
Definition s3m.h:66
unsigned char dummy[2]
Definition s3m.h:63
unsigned short cwtv
Definition s3m.h:64
unsigned short insnum
Definition s3m.h:64
unsigned char dp
Definition s3m.h:66
unsigned char gv
Definition s3m.h:66
unsigned char mv
Definition s3m.h:66
unsigned char typ
Definition s3m.h:63
unsigned short patnum
Definition s3m.h:64
char name[28]
Definition s3m.h:62
unsigned char chanset[32]
Definition s3m.h:68
Definition s3m.h:71
unsigned char d06
Definition s3m.h:74
char name[28]
Definition s3m.h:76
unsigned char d07
Definition s3m.h:74
unsigned char type
Definition s3m.h:72
char scri[4]
Definition s3m.h:76
unsigned char d02
Definition s3m.h:74
unsigned char volume
Definition s3m.h:74
unsigned char d03
Definition s3m.h:74
unsigned char d05
Definition s3m.h:74
unsigned char d00
Definition s3m.h:74
unsigned char d0b
Definition s3m.h:74
unsigned char d01
Definition s3m.h:74
unsigned char d09
Definition s3m.h:74
char filename[15]
Definition s3m.h:73
unsigned char d0a
Definition s3m.h:74
char dummy2[12]
Definition s3m.h:76
unsigned char d08
Definition s3m.h:74
unsigned char dummy[2]
Definition s3m.h:74
unsigned long c2spd
Definition s3m.h:75
unsigned char d04
Definition s3m.h:74
unsigned char dsk
Definition s3m.h:74
int n
Definition crypt.c:458
uch h[RAND_HEAD_LEN]
Definition crypt.c:459
int * pattern
Definition match.c:126