annotate src/console/Nsfe_Emu.cxx @ 2215:9ddfa78b43a0

- now container plugins feed only valid uri to the core. - fix a bug in pls plugin which prevented writing pls playlist.
author Yoshiki Yazawa <yaz@cc.rim.or.jp>
date Fri, 07 Dec 2007 01:13:34 +0900
parents 5abb9030e8a7
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
341
986f098da058 [svn] - merge in blargg's changes
nenolod
parents: 325
diff changeset
1 // Game_Music_Emu 0.5.2. http://www.slack.net/~ant/
0
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
2
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
3 #include "Nsfe_Emu.h"
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
4
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
5 #include "blargg_endian.h"
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
6 #include <string.h>
316
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
7 #include <ctype.h>
0
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
8
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
9 /* Copyright (C) 2005-2006 Shay Green. This module is free software; you
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
10 can redistribute it and/or modify it under the terms of the GNU Lesser
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
11 General Public License as published by the Free Software Foundation; either
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
12 version 2.1 of the License, or (at your option) any later version. This
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
13 module is distributed in the hope that it will be useful, but WITHOUT ANY
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
14 WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
316
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
15 FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
16 details. You should have received a copy of the GNU Lesser General Public
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
17 License along with this module; if not, write to the Free Software Foundation,
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
18 Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */
0
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
19
316
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
20 #include "blargg_source.h"
0
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
21
316
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
22 Nsfe_Info::Nsfe_Info() { playlist_disabled = false; }
0
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
23
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
24 Nsfe_Info::~Nsfe_Info() { }
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
25
316
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
26 inline void Nsfe_Info::unload()
0
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
27 {
316
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
28 track_name_data.clear();
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
29 track_names.clear();
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
30 playlist.clear();
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
31 track_times.clear();
0
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
32 }
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
33
316
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
34 // TODO: if no playlist, treat as if there is a playlist that is just 1,2,3,4,5... ?
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
35 void Nsfe_Info::disable_playlist( bool b )
0
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
36 {
316
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
37 playlist_disabled = b;
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
38 info.track_count = playlist.size();
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
39 if ( !info.track_count || playlist_disabled )
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
40 info.track_count = actual_track_count_;
0
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
41 }
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
42
316
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
43 int Nsfe_Info::remap_track( int track ) const
0
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
44 {
316
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
45 if ( !playlist_disabled && (unsigned) track < playlist.size() )
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
46 track = playlist [track];
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
47 return track;
0
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
48 }
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
49
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
50 // Read multiple strings and separate into individual strings
316
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
51 static blargg_err_t read_strs( Data_Reader& in, long size, blargg_vector<char>& chars,
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
52 blargg_vector<const char*>& strs )
0
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
53 {
316
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
54 RETURN_ERR( chars.resize( size + 1 ) );
0
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
55 chars [size] = 0; // in case last string doesn't have terminator
316
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
56 RETURN_ERR( in.read( &chars [0], size ) );
0
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
57
316
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
58 RETURN_ERR( strs.resize( 128 ) );
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
59 int count = 0;
0
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
60 for ( int i = 0; i < size; i++ )
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
61 {
316
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
62 if ( (int) strs.size() <= count )
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
63 RETURN_ERR( strs.resize( count * 2 ) );
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
64 strs [count++] = &chars [i];
0
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
65 while ( i < size && chars [i] )
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
66 i++;
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
67 }
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
68
316
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
69 return strs.resize( count );
0
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
70 }
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
71
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
72 // Copy in to out, where out has out_max characters allocated. Truncate to
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
73 // out_max - 1 characters.
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
74 static void copy_str( const char* in, char* out, int out_max )
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
75 {
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
76 out [out_max - 1] = 0;
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
77 strncpy( out, in, out_max - 1 );
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
78 }
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
79
316
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
80 struct nsfe_info_t
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
81 {
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
82 byte load_addr [2];
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
83 byte init_addr [2];
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
84 byte play_addr [2];
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
85 byte speed_flags;
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
86 byte chip_flags;
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
87 byte track_count;
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
88 byte first_track;
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
89 byte unused [6];
0
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
90 };
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
91
316
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
92 blargg_err_t Nsfe_Info::load( Data_Reader& in, Nsf_Emu* nsf_emu )
0
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
93 {
341
986f098da058 [svn] - merge in blargg's changes
nenolod
parents: 325
diff changeset
94 int const nsfe_info_size = 16;
986f098da058 [svn] - merge in blargg's changes
nenolod
parents: 325
diff changeset
95 assert( offsetof (nsfe_info_t,unused [6]) == nsfe_info_size );
986f098da058 [svn] - merge in blargg's changes
nenolod
parents: 325
diff changeset
96
0
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
97 // check header
316
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
98 byte signature [4];
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
99 blargg_err_t err = in.read( signature, sizeof signature );
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
100 if ( err )
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
101 return (err == in.eof_error ? gme_wrong_file_type : err);
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
102 if ( memcmp( signature, "NSFE", 4 ) )
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
103 return gme_wrong_file_type;
0
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
104
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
105 // free previous info
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
106 track_name_data.clear();
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
107 track_names.clear();
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
108 playlist.clear();
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
109 track_times.clear();
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
110
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
111 // default nsf header
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
112 static const Nsf_Emu::header_t base_header =
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
113 {
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
114 {'N','E','S','M','\x1A'},// tag
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
115 1, // version
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
116 1, 1, // track count, first track
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
117 {0,0},{0,0},{0,0}, // addresses
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
118 "","","", // strings
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
119 {0x1A, 0x41}, // NTSC rate
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
120 {0,0,0,0,0,0,0,0}, // banks
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
121 {0x20, 0x4E}, // PAL rate
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
122 0, 0, // flags
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
123 {0,0,0,0} // unused
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
124 };
316
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
125 Nsf_Emu::header_t& header = info;
0
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
126 header = base_header;
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
127
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
128 // parse tags
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
129 int phase = 0;
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
130 while ( phase != 3 )
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
131 {
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
132 // read size and tag
316
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
133 byte block_header [2] [4];
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
134 RETURN_ERR( in.read( block_header, sizeof block_header ) );
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
135 blargg_long size = get_le32( block_header [0] );
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
136 blargg_long tag = get_le32( block_header [1] );
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
137
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
138 //dprintf( "tag: %c%c%c%c\n", char(tag), char(tag>>8), char(tag>>16), char(tag>>24) );
0
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
139
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
140 switch ( tag )
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
141 {
316
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
142 case BLARGG_4CHAR('O','F','N','I'): {
0
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
143 check( phase == 0 );
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
144 if ( size < 8 )
316
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
145 return "Corrupt file";
0
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
146
316
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
147 nsfe_info_t finfo;
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
148 finfo.track_count = 1;
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
149 finfo.first_track = 0;
0
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
150
341
986f098da058 [svn] - merge in blargg's changes
nenolod
parents: 325
diff changeset
151 RETURN_ERR( in.read( &finfo, min( size, (blargg_long) nsfe_info_size ) ) );
986f098da058 [svn] - merge in blargg's changes
nenolod
parents: 325
diff changeset
152 if ( size > nsfe_info_size )
986f098da058 [svn] - merge in blargg's changes
nenolod
parents: 325
diff changeset
153 RETURN_ERR( in.skip( size - nsfe_info_size ) );
0
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
154 phase = 1;
316
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
155 info.speed_flags = finfo.speed_flags;
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
156 info.chip_flags = finfo.chip_flags;
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
157 info.track_count = finfo.track_count;
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
158 this->actual_track_count_ = finfo.track_count;
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
159 info.first_track = finfo.first_track;
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
160 memcpy( info.load_addr, finfo.load_addr, 2 * 3 );
0
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
161 break;
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
162 }
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
163
316
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
164 case BLARGG_4CHAR('K','N','A','B'):
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
165 if ( size > (int) sizeof info.banks )
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
166 return "Corrupt file";
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
167 RETURN_ERR( in.read( info.banks, size ) );
0
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
168 break;
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
169
316
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
170 case BLARGG_4CHAR('h','t','u','a'): {
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
171 blargg_vector<char> chars;
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
172 blargg_vector<const char*> strs;
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
173 RETURN_ERR( read_strs( in, size, chars, strs ) );
0
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
174 int n = strs.size();
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
175
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
176 if ( n > 3 )
316
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
177 copy_str( strs [3], info.dumper, sizeof info.dumper );
0
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
178
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
179 if ( n > 2 )
316
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
180 copy_str( strs [2], info.copyright, sizeof info.copyright );
0
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
181
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
182 if ( n > 1 )
316
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
183 copy_str( strs [1], info.author, sizeof info.author );
0
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
184
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
185 if ( n > 0 )
316
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
186 copy_str( strs [0], info.game, sizeof info.game );
0
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
187
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
188 break;
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
189 }
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
190
316
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
191 case BLARGG_4CHAR('e','m','i','t'):
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
192 RETURN_ERR( track_times.resize( size / 4 ) );
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
193 RETURN_ERR( in.read( track_times.begin(), track_times.size() * 4 ) );
0
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
194 break;
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
195
316
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
196 case BLARGG_4CHAR('l','b','l','t'):
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
197 RETURN_ERR( read_strs( in, size, track_name_data, track_names ) );
0
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
198 break;
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
199
316
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
200 case BLARGG_4CHAR('t','s','l','p'):
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
201 RETURN_ERR( playlist.resize( size ) );
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
202 RETURN_ERR( in.read( &playlist [0], size ) );
0
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
203 break;
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
204
316
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
205 case BLARGG_4CHAR('A','T','A','D'): {
0
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
206 check( phase == 1 );
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
207 phase = 2;
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
208 if ( !nsf_emu )
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
209 {
341
986f098da058 [svn] - merge in blargg's changes
nenolod
parents: 325
diff changeset
210 RETURN_ERR( in.skip( size ) );
0
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
211 }
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
212 else
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
213 {
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
214 Subset_Reader sub( &in, size ); // limit emu to nsf data
341
986f098da058 [svn] - merge in blargg's changes
nenolod
parents: 325
diff changeset
215 Remaining_Reader rem( &header, Nsf_Emu::header_size, &sub );
316
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
216 RETURN_ERR( nsf_emu->load( rem ) );
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
217 check( rem.remain() == 0 );
0
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
218 }
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
219 break;
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
220 }
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
221
316
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
222 case BLARGG_4CHAR('D','N','E','N'):
0
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
223 check( phase == 2 );
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
224 phase = 3;
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
225 break;
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
226
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
227 default:
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
228 // tags that can be skipped start with a lowercase character
316
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
229 check( islower( (tag >> 24) & 0xFF ) );
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
230 RETURN_ERR( in.skip( size ) );
0
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
231 break;
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
232 }
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
233 }
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
234
316
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
235 return 0;
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
236 }
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
237
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
238 blargg_err_t Nsfe_Info::track_info_( track_info_t* out, int track ) const
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
239 {
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
240 int remapped = remap_track( track );
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
241 if ( (unsigned) remapped < track_times.size() )
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
242 {
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
243 long length = (BOOST::int32_t) get_le32( track_times [remapped] );
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
244 if ( length > 0 )
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
245 out->length = length;
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
246 }
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
247 if ( (unsigned) remapped < track_names.size() )
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
248 Gme_File::copy_field_( out->song, track_names [remapped] );
0
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
249
316
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
250 GME_COPY_FIELD( info, out, game );
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
251 GME_COPY_FIELD( info, out, author );
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
252 GME_COPY_FIELD( info, out, copyright );
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
253 GME_COPY_FIELD( info, out, dumper );
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
254 return 0;
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
255 }
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
256
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
257 Nsfe_Emu::Nsfe_Emu()
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
258 {
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
259 loading = false;
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
260 set_type( gme_nsfe_type );
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
261 }
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
262
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
263 Nsfe_Emu::~Nsfe_Emu() { }
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
264
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
265 void Nsfe_Emu::unload()
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
266 {
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
267 if ( !loading )
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
268 info.unload(); // TODO: extremely hacky!
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
269 Nsf_Emu::unload();
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
270 }
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
271
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
272 blargg_err_t Nsfe_Emu::track_info_( track_info_t* out, int track ) const
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
273 {
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
274 return info.track_info_( out, track );
0
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
275 }
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
276
316
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
277 struct Nsfe_File : Gme_Info_
0
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
278 {
316
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
279 Nsfe_Info info;
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
280
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
281 Nsfe_File() { set_type( gme_nsfe_type ); }
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
282
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
283 blargg_err_t load_( Data_Reader& in )
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
284 {
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
285 RETURN_ERR( info.load( in, 0 ) );
341
986f098da058 [svn] - merge in blargg's changes
nenolod
parents: 325
diff changeset
286 info.disable_playlist( false );
316
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
287 set_track_count( info.info.track_count );
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
288 return 0;
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
289 }
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
290
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
291 blargg_err_t track_info_( track_info_t* out, int track ) const
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
292 {
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
293 return info.track_info_( out, track );
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
294 }
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
295 };
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
296
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
297 static Music_Emu* new_nsfe_emu () { return BLARGG_NEW Nsfe_Emu ; }
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
298 static Music_Emu* new_nsfe_file() { return BLARGG_NEW Nsfe_File; }
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
299
2004
5abb9030e8a7 Hush down some warnings.
Eugene Paskevich <eugene@raptor.kiev.ua>
parents: 341
diff changeset
300 gme_type_t_ const gme_nsfe_type [1] = {{ "Nintendo NES", 0, &new_nsfe_emu, &new_nsfe_file, "NSFE", 1 }};
316
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
301
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
302 blargg_err_t Nsfe_Emu::load_( Data_Reader& in )
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
303 {
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
304 if ( loading )
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
305 return Nsf_Emu::load_( in );
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
306
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
307 // TODO: this hacky recursion-avoidance could have subtle problems
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
308 loading = true;
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
309 blargg_err_t err = info.load( in, this );
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
310 loading = false;
325
31c9d8f37474 [svn] - disable the playlist when loading = false.
nenolod
parents: 316
diff changeset
311 disable_playlist( false );
316
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
312 return err;
0
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
313 }
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
314
316
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
315 void Nsfe_Emu::disable_playlist( bool b )
0
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
316 {
316
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
317 info.disable_playlist( b );
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
318 set_track_count( info.info.track_count );
0
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
319 }
13389e613d67 [svn] - initial import of audacious-plugins tree (lots to do)
nenolod
parents:
diff changeset
320
316
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
321 void Nsfe_Emu::clear_playlist_()
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
322 {
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
323 disable_playlist();
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
324 Nsf_Emu::clear_playlist_();
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
325 }
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
326
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
327 blargg_err_t Nsfe_Emu::start_track_( int track )
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
328 {
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
329 return Nsf_Emu::start_track_( info.remap_track( track ) );
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents: 311
diff changeset
330 }