annotate src/console/readme.txt @ 3091:2bd8895c9fe0

gio: if we ungetc(), then our position moves backwards by the number of ungetc()'d bytes.
author William Pitcock <nenolod@atheme.org>
date Thu, 30 Apr 2009 06:50:27 -0500
parents 986f098da058
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
316
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents:
diff changeset
1 Audacious Console Video Game Music Plugin
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents:
diff changeset
2 -----------------------------------------
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents:
diff changeset
3 This plugin plays music from video game consoles of the 1980s and early
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents:
diff changeset
4 1990s. It uses the Game_Music_Emu sound engine and supports the
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents:
diff changeset
5 following file formats:
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents:
diff changeset
6
341
986f098da058 [svn] - merge in blargg's changes
nenolod
parents: 316
diff changeset
7 AY ZX Spectrum/Amstrad CPC
316
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents:
diff changeset
8 GBS Nintendo Game Boy
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents:
diff changeset
9 GYM Sega Genesis/Mega Drive
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents:
diff changeset
10 HES NEC TurboGrafx-16/PC Engine
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents:
diff changeset
11 KSS MSX Home Computer/other Z80 systems (doesn't support FM sound)
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents:
diff changeset
12 NSF/NSFE Nintendo NES/Famicom (with VRC 6, Namco 106, and FME-7 sound)
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents:
diff changeset
13 SAP Atari systems using POKEY sound chip
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents:
diff changeset
14 SPC Super Nintendo/Super Famicom
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents:
diff changeset
15 VGM/VGZ Sega Master System/Mark III, Sega Genesis/Mega Drive,BBC Micro
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents:
diff changeset
16
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents:
diff changeset
17 Text information tags and track length information is supported in all
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents:
diff changeset
18 formats, though some files might not make use of it.
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents:
diff changeset
19
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents:
diff changeset
20 Most formats include the actual music player code, "ripped" by hand from
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents:
diff changeset
21 the original game to allow it to run on its own. This plugin then
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents:
diff changeset
22 emulates the original processor and sound chip(s) in order to reproduce
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents:
diff changeset
23 the original sound, glitches and all. Band-limited synthesis is used to
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents:
diff changeset
24 give crystal-clear sound quality.
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents:
diff changeset
25
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents:
diff changeset
26 Contact: Shay Green <gblargg@gmail.com>
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents:
diff changeset
27
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents:
diff changeset
28
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents:
diff changeset
29 Notes
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents:
diff changeset
30 -----
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents:
diff changeset
31 * Errors and warnings are logged to stdout, which might help if you want
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents:
diff changeset
32 to figure out why a music file isn't playing properly.
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents:
diff changeset
33
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents:
diff changeset
34 * The HES and KSS music formats lack proper track numbering, presenting
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents:
diff changeset
35 the game's music sometimes randomly scattered among the 256 possible
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents:
diff changeset
36 track numbers. Because of this, most HES and KSS music files are
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents:
diff changeset
37 distributed with an .m3u file in a non-standard format which specifies
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents:
diff changeset
38 which tracks actually have music, among other things. When a game music
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents:
diff changeset
39 file is opened, a corresponding m3u file is opened if in the same
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents:
diff changeset
40 directory. There's not much that we can do about the situation,
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents:
diff changeset
41 unfortunately.
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents:
diff changeset
42
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents:
diff changeset
43
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents:
diff changeset
44 Things not supported
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents:
diff changeset
45 --------------------
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents:
diff changeset
46 * KSS: FM sound
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents:
diff changeset
47
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents:
diff changeset
48 * HES: ADPCM samples (used in only a few soundtracks, if that)
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents:
diff changeset
49
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents:
diff changeset
50 * SAP: "digimusic samples" and more obscure tracker formats
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents:
diff changeset
51
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents:
diff changeset
52 * VGM/VGZ: original Sega Master System FM sound chip (Sega Genesis/Mega
341
986f098da058 [svn] - merge in blargg's changes
nenolod
parents: 316
diff changeset
53 Drive music plays fine). See the following discussion for a way to add
986f098da058 [svn] - merge in blargg's changes
nenolod
parents: 316
diff changeset
54 support for this: http://www.smspower.org/forums/viewtopic.php?t=9321
316
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents:
diff changeset
55
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents:
diff changeset
56
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents:
diff changeset
57 Source code notes
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents:
diff changeset
58 -----------------
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents:
diff changeset
59 Game_Music_Emu library configuration is in blargg_config.h. See
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents:
diff changeset
60 gme_readme.txt and gme.txt for library documentation.
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents:
diff changeset
61
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents:
diff changeset
62 * See TODO comments in Audacious_Config.cxx and Audacious_Driver.cxx for
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents:
diff changeset
63 things which would be good to address.
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents:
diff changeset
64
341
986f098da058 [svn] - merge in blargg's changes
nenolod
parents: 316
diff changeset
65 * C++ exceptions and RTTI are not used or needed.
316
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents:
diff changeset
66
341
986f098da058 [svn] - merge in blargg's changes
nenolod
parents: 316
diff changeset
67 * File types are determined based on the first four bytes of a file
986f098da058 [svn] - merge in blargg's changes
nenolod
parents: 316
diff changeset
68 except for .gym files, some of which have no file header at all.
316
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents:
diff changeset
69
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents:
diff changeset
70 * Some music formats have more than one track in a file. This track is
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents:
diff changeset
71 specified to the console plugin by appending ?i to the end of the file
fb513e10174e [svn] - merge libconsole-blargg into mainline libconsole:
nenolod
parents:
diff changeset
72 path, where i is the track index, starting at 0. For example, foo.nsf?2
341
986f098da058 [svn] - merge in blargg's changes
nenolod
parents: 316
diff changeset
73 specifies the third track. This is an internal thing, as the user should
986f098da058 [svn] - merge in blargg's changes
nenolod
parents: 316
diff changeset
74 never see these modified paths.