[go: up one dir, main page]

Menu

[r125]: / in_vgm / trunk / in_vgm.html  Maximize  Restore  History

Download this file

918 lines (849 with data), 36.4 kB

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
<html><head>
<title>VGM input plugin documentation</title>
<script>
function showhistory()
{
document.getElementById("oldhistory").style.display = 'block';
document.getElementById("histlink").style.display = 'none';
return false;
}
</script>
<style>
body {
background: #006699;
color: white;
font-family: lucida grande, garamond, verdana, henlvetica, arial, sans-serif;
font-size: small;
width:40em;
padding:2em;
margin-left:4em;
border:1px solid black;
}
h1 {
background:#eee;
color:black;
padding:2em;
}
h2 {
padding-left:0.5em;
background:#00334c;
}
h3 {
padding-left:0.5em;
background:#004c72;
}
h4 {
padding-left:0.5em;
border-top:2px solid #004c72;
border-bottom:2px solid #004c72;
}
a {
color: white;
text-decoration: underline;
font-weight: bold;
}
.key {
color:black;
border: 2px outset #ddc;
background: #ddc;
padding-left:0.2em;
padding-right:0.2em;
white-space: nowrap;
}
.menu {
color:black;
background: #eee;
border-left: 2px outset #eee;
border-right: 2px outset #eee;
border-top: 1px dotted #eee;
border-bottom: 1px dotted #eee;
padding-left:1em;
padding-right:1em;
white-space: nowrap;
}
.button {
color:black;
border: 2px outset #ccc;
background: #ccc;
padding-left:0.2em;
padding-right:0.2em;
white-space: nowrap;
}
fieldset {
border: 2px groove #006699;
margin-top:1em;
margin-left:3em;
margin-right:3em;
padding: 0.5em;
}
legend {
}
tt {
border:1px solid black;
color:black;
background:#eee;
font-size:medium;
white-space: nowrap;
padding-left:0.2em;
padding-right:0.2em;
}
div.control {
margin-top:1em;
margin-bottom:0.5em;
}
div.quote {
border: 1px solid #555;
background: #eee;
color: #555;
padding: 0.5em;
margin-top: 1em;
margin-bottom: 1em;
font-style:italic;
}
li {
margin-top:0.5em;
margin-bottom:0.5em;
}
</style>
</head>
<body>
<h1>VGM input plugin 0.35</h1>
<h2>Table of Contents</h2>
<ul>
<li><a href=#problems>Problems</a></li>
<li><a href=#introduction>Introduction</a></li>
<li><a href=#credits>Credits</a></li>
<li><a href=#dialogueboxes>Dialogue Boxes</a></li>
<li><a href=#aaq>Actually Asked Questions</a></li>
<li><a href=#howtoplay>How to play VGM files direct from your webpage</a></li>
<li><a href=#knownissues>Known issues</a></li>
<li><a href=#history>History</a></li>
</ul>
<a name="problems"></a>
<h2>Problems</h2>
Here are the things that can go wrong, right at the start so you can
find them easily.
<ol>
<li>VGM files play too fast
<p>
If you have in_gym then disable its VGM handling. It is weird.
<p>
Look at the 50/60Hz options in the config screen - maybe you're used to 50Hz music?
<li>Anything else
<p>
Please contact me!
</ol>
<a name="introduction"></a>
<h2>Introduction</h2>
This is a <a href=http://www.winamp.com>Winamp</a> (2.xx and 5.xx) plugin for playing VGM files. VGM is a
standard for logging of SN76489/SN76496, YM2413, YM2612 and YM2151
music chip data, originated by Dave, allowing various systems' games'
music to be stored. See <a href=http://www.smspower.org/music>http://www.smspower.org/music</a> for more
information, and to download VGM music files.
<p>
Open this URL in Winamp to hear a demo:
<p>
<a href=http://www.smspower.org/music/vgm/demo/Golvellius.m3u>http://www.smspower.org/music/vgm/demo/Golvellius.m3u</a>
<p>
To use: put in_vgm.dll in Winamp's <tt>plugins\</tt> folder (usually <tt>C:\Program Files\Winamp\plugins\</tt>), and restart Winamp. If
you got the self-installing version then it should already be working.
<p>
Load .vgm or .vgz files in Winamp; go to the "File types" preferences
page to associate these extensions:
<ol>
<li>Open the Preferences dialogue box (press <span class=key>Ctrl+P</span>, or right-click and
choose Options -> Preferences...)
<li>Choose "File types" from the tree on the left (it's the second item
unless Winamp has changed since I wrote this)
<li>Make sure "vgm" and "vgz" are selected in the "Associated extensions"
list (if they aren't in the list it's because you have another buggy
plugin installed)
</ol>
Be sure to check out the file info and plugin configuration dialogues.
<a name="credits"></a>
<h2>Credits</h2>
<ul>
<li>The YM2413 emulation engine is EMU2413 by Mitsutaka Okazaki, which is
part of <a href=http://dsa.sakura.ne.jp/index.php?MSXplug>MSXplug</a>.
<li>The PSG engine is by me.
<li>The YM2612 engine is from <a href=http://gens.consolemul.com>Gens by
Stephane Dallongeville</a>.
<li>The YM2151 engine is from <a href=http://www.mame.net>MAME</a>
and was added by BlackAura.
<li><a href=http://www.zlib.org>zlib</a> decompression is by Jean-loup
Gailly and Mark Adler.
</ul>
<a name="dialogueboxes"></a>
<h2>Dialogue boxes</h2>
<h3>VGM file &amp; GD3 tag information</h3>
To open:
<ul>
<li>In the main window, press <span class=key>Alt+3</span>; or
double-click on the track title; or right-click and choose
<span class=menu>View file info...</span>.
<li>In the playlist editor, select some files and press
<span class=key>Alt+3</span>; or right-click and choose
<span class=menu>File info</span>; or press the
<span class=button>Misc</span> button, choose
<span class=menu>File info</span> and then
<span class=menu>File info...</span>.
<li>In the media library, select some files and press
<span class=key>Alt+3</span>; or right-click and choose
<span class=menu>View file info...</span>.
</ul>
This shows you information about the file and, if it has a GD3
information tag, it shows you information from there too. It's similar
to the ID3 information box for MP3s, except that you can't edit the GD3
tag from within Winamp.
<p>
Choose <span class=radio>English</span> or <span class=radio>Japanese</span>
to display the GD3 information for that language, if available.
<p>
If you see something like "????" for a GD3 entry then your version of
Windows doesn't support Unicode, or translation from Unicode to a valid
MBCS. If that makes no sense to you, you probably don't care about it.
Windows XP is generally OK so long as you have east asian fonts installed.
<p>
Click on <span class=button>View GD3 in browser</span> to open either
"Now Playing" (the MiniBrowser in older versions of Winamp) or your
regular web browser (depending on the setting, see below), with a page
showing the GD3 tag. Chances are, if you have the necessary
fonts installed, this will be able to display the Unicode text properly
on older versions of Windows.
<p>
Click on <span class=button>Configure plugin...</span> to open the plugin configuration
dialogue box.
<p>
If you open this dialogue box for several files in the playlist editor,
it will appear once for each file. Press <span class=key>Esc</span> or
close the window using the frame controls to abort showing it once per file.
<h3>VGM plugin configuration</h3>
To open:
<ul>
<li>Open the "VGM file &amp; GD3 tag information" dialogue box; then press the
<span class=button>Configure plugin...</span> button or press
<span class=key>Alt+P</span>.
<li>Or open the Winamp Preferences dialogue box (Right-click ->
<span class=menu>Options</span> -> <span class=menu>Preferences...</span>;
or press <span class=key>Ctrl+P</span>), choose the
Plug-ins -> Input page, then double-click on the "VGM input plugin
v0.xx [in_vgm.dll]" item, or select it and click on the <span class=button>Configure</span>
button.
</ul>
<h4>Playback tab</h4>
<fieldset><legend>Looping</legend>
<div class=control>Repeat looped section <input size=3> times</div>
Choose how many times to play the looped section in a VGM file, if
it has one. A value of 0 will play through the looped section once.
<div class=control>Then fade out over <input size=3> ms</div>
When repeating looped sections, there is no "end" to the music.
Enter a time in ms (1000ms = 1s) over which the music will fade out
after looping the desired number of times. A setting of 0 will give
no fadeout.
<div class=control><input type=checkbox>Loop forever</div>
Ignore the looping counter and loop forever. Note that this disables
seeking (in Winamp) and thus also the "<input type=checkbox>Immediate update" option.
</fieldset>
<fieldset><legend>Pause after non-looped tracks</legend>
<div class=control>Pause <input size=3> ms</div>
Even when a track does have an end, it does not sound good if the
next track follows on immediately. Enter a time in ms (1000ms = 1s)
to pause at the end of each track.
</fieldset>
<fieldset><legend>Playback rate</legend>
<div class=control><input type=radio>Recorded rate</div>
If this is selected, all VGM v1.01+ files will be played at the
rate specified in the file. VGM 1.00 files will be played at 60Hz.
<div class=control><input type=radio>50Hz<br><input type=radio>60Hz</div>
If 50Hz or 60Hz is selected, all files will be played at that rate -
50Hz corresponds to PAL/SECAM home systems used in Europe and
Australia/NZ; 60Hz corresponds to NTSC/PAL-M systems used in Asia
and the Americas.
<div class=control><input type=radio>Other: <input size=3> Hz</div>
If you choose this you can enter any rate, to play files extra
slowly or quickly. Extreme values and fractional values are not
allowed. Note that seeking is buggy with unusual rates.
<p>
The effect will only be heard when you restart the track, or when the
next track starts.
</fieldset>
<fieldset><legend>Volume, muting and panning</legend>
<div class=control><input type=checkbox>Overdrive</div>
Amplifies all sound to levels that are in danger of being clipped,
but are similar to regular MP3s so visualisations work better.
<div class=control><input type=checkbox>Keep muting when track changes</div>
If checked, per-muting will remain when the track changes; otherwise
all channels are unmuted.
<div class=control><input type=checkbox>Randomise panning on track start</div>
For channels with configurable fake stereo, this will apply a
Gaussian randomisation to the stereo panning for every channel.
</fieldset>
<h4>GD3 tags tab</h4>
<fieldset><legend>Data formatting</legend>
<div class=control><input type=checkbox>Prefer Japanese text</div>
If checked, the media library and advanced title formatting will
use Japanese text if available, otherwise English. If unchecked,
English text is used in preference to Japanese.
<div class=control><input type=checkbox>Append (FM) to game name for YM2413</div>
To make it easier to tell FM and PSG soundtracks apart, this will
make the returned game name (given as the album name) end with
"(FM)". Note that some emulators incorrectly specify an FM clock in
the VGM file, causing this to be displayed wrongly.
</fieldset>
<fieldset><legend>File Type</legend>
<div class=editbox>Return file type ID</div>
Winamp's Media Library comes by default with filtered views for
"Audio" and "Video", as well as other views for things like
recently played files. If you right-click on the tree you can edit
them and add new views for more advanced filters.
<p>
If, like me, you don't want VGMs to play mixed in with your regular
MP3s, you can use this to make it very easy to filter VGMs out of
the "Audio" view and into another. Here's the procedure:
<ol>
<li>Change the number to another value (I use <tt>262144</tt>)
<li>Add a new view to the Media Library
<li>On the advanced tab, change the query to <tt>TYPE=262144</tt> (or whatever
number you chose)
<li>Refresh your Media Library from the <span class=button>Library</span> button.
</ol>
Note that Winamp does not define meanings for values other than 0
(audio) and 1 (video). It might in later versions, so try to use a
value that is unlikely to be used in the future (2 is more likely
to be used than 262144).
</fieldset>
<fieldset><legend>Now Playing</legend>
<div class=control><input type=checkbox>Display GD3 tags as HTML in "Now Playing"</div>
If checked, displaying a GD3 tag as HTML (using the <span class=button>View in
browser</span> button described above) will use Now Playing. If unchecked,
it will use your regular web browser.
<div class=control><input type=checkbox>Display them automatically</div>
If checked, GD3 tags will automatically be displayed in Now Playing
when tracks start. This will also block most other parts of Winamp
from changing the Now Playing page while a VGM file is playing.
<div class=control><input type=checkbox>Open "Now Playing" if it is closed</div>
If checked, when auto-displaying GD3 tags, Now Playing will be
opened if it is closed.
<p>
Note that in older versions of Winamp, the MiniBrowser is the
equivalent of Now Playing. Also, in versions of Winamp since 5.22,
Now Playing does not support this feature; it may return in later versions.
</fieldset>
<fieldset><legend>Legacy title formatting</legend>
Enter text to control what title Winamp shows for the file. Enter
special codes like <tt>%t</tt> to insert various GD3 entries. If the file
has no GD3 tag then the filename will be used as the title.
<p>
Winamp 5's Advanced Title Formatting bypasses this, instead using
data from the Media Library.
</fieldset>
<h4>PSG tab</h4>
<fieldset><legend>Chip control</legend>
You can choose the relative volume of the chip (default: 100) and
globally enable/disable it.
</fieldset>
<fieldset><legend>Channel control</legend>
If the current track includes PSG data, the checkboxes will allow you
to enable and disable individual sound channels.
<p>
The trackbars allow you to apply "fake" stereo to the channels. This
can result in a more pleasing sound but is totally inaccurate :) The
original chip was strictly mono.
<p>
That is, apart from the Game Gear's extended version which allows
"digital" stereo (where the sound is either 100% left, centre or 100%
right). If the track includes such data then the "fake" stereo for the
affected channel is overridden.
<p>
Press the <span class=button>Centre all</span> button to reset all channels to a centre
position, or press the <span class=button>Randomise</span> button to position
them according to a random Gaussian distribution.
</fieldset>
<fieldset><legend>Emulation</legend>
<div class=control><input type=checkbox>Smooth PSG vol curve</div>
Applies a smooth logarithmic volume curve to the PSG volume levels;
if unchecked, values taken from a real SMS's output are used
instead. These values have reduced definition at high volume levels.
</fieldset>
<h4>YM2413 tab</h4>
<fieldset><legend>Chip control</legend>
You can choose the relative volume of the chip (default: 100) and
globally enable/disable it.
</fieldset>
<fieldset><legend>Channel control</legend>
If the current track includes YM2413 data, the checkboxes will allow you
to enable and disable individual sound channels. You can also apply
"fake" stereo as above.
</fieldset>
<fieldset><legend>Emulation</legend>
<div class=control><input type=checkbox>High quality YM2413</div>
This runs the YM2413 engine at the true clock rate and resamples to
44100Hz. The effect is marginal.
</fieldset>
<h4>YM2612/YM2151 tab</h4>
<fieldset><legend>YM2612 chip control</legend>
You can choose the relative volume of the chip (default: 25)
and globally enable/disable it.
</fieldset>
<fieldset><legend>YM2612 channel control</legend>
If the current track includes YM2612 data, the checkboxes will allow you
to enable and disable individual sound channels. "Fake" stereo is
unavailable because the YM2612 supports real stereo.
</fieldset>
<fieldset><legend>YM2151</legend>
Relative volume and global enabling as above.
</fieldset>
<h4>Bottom part of window</h4>
<div class=control><input type=checkbox>Immediate update</div>
If this is selected, the effect of changing some of the settings will
be instant, but it may introduce jumps or pauses to the sound,
depending on the output plugin and the type of VGM file playing. If
it is not selected then the effect will take the length of the output
buffer (usually two seconds) to be heard.
Note that cancelling this dialogue box does *not* restore the previous
settings for many options.
<a name="aaq"></a>
<h2>Actually asked questions</h2>
<div class=quote>
y doesnt the winamp show vgms as associted files? i always have to
select .vgm .vgz from the drop down menu.
</div>
This is a bug in Windows, at least up to XP (SP2). Try using other methods
to load your files. The Media Library is really good, try it!
<div class=quote>FM music is not based on SINE waves, is it?!</div>
Yes, it is. "Frequency modulation" means using one sine wave to change
the frequency of another, thereby producing quite complex waveforms
from two simple sine waves, a Good Thing when it comes to making cheap
sound chips. Although one source says "Note that the name 'FM' is a
misnomer; in actual fact the Yamaha chips all use phase modulation (PM)
to create their sounds." So now you know.
<div class=quote> The latest VGM plugin is much slower on my p133. The last one works
fine, but with the new one the songs stops and then continues after a
second all the time. Why?</div>
Because FM emulation is a lot more complicated than PSG emulation, so
it takes more time. You might like to get VGMTool to optimise any VGMs
with unnecessary chip data in them, or possibly re-download the files
if they've been updated with optimised versions.
<a name="howtoplay"></a>
<h2>How to play VGM files direct from your webpage</h2>
You can make it so people can click on a link and have a VGM played in
Winamp the same way as you can do it for MP3s...
<ol>
<li>Make a playlist file for the file(s) you want, listed as full URLs
<li>Link to that
</ol>
Winamp will try to make it so the playlist file is downloaded and
opened by the browser with as little prompting as possible, and in_vgm
hooks up with Winamp's downloading routines to play the files
themselves. <a href=http://www.smspower.org/music/vgm/demo/Golvellius.m3u>Try
this link for an example.</a>
<a name="knownissues"></a>
<h2>Known issues</h2>
<ul>
<li>You can choose to loop a VGM a lot of times. However, Winamp doesn't
handle extremely long track lengths very well.
<li>On my computer, turning on the equaliser will make it use 3 times as
much CPU for PSG tunes, and 1.8 times as much for FM. It also does not
process square waves well. I recommend you turn it off if you can.
<li>I tried a DSP plugin, "Dee". It crashed Winamp whenever you turn on the
3D thing, I have no idea why. So don't do that.
<li>When you apply fake panning to PSG/YM2413 channels, it is hard to
make the apparent volume stay the same. I am trying to use "equal power
panning laws" but I'm not sure I've got it quite right yet, especially since
it seems nobody agrees on what's the right way to do it.
</ul>
<a name="history"></a>
<h2>History</h2>
<h3>0.35 beta</h3>
<ul>
<li>Fixed multi-line comments (again)
<li>Updated YM2612 engine from Gens32, now supporting SSG-EG
<li>Unicode tag support for Winamp 5.25, while still supporting old Winamps
<li>All GD3 tags are now internally trimmed of leading/trailing whitespace to stop badly tagged files showing up strangely in the ML
<li>Feature death: Winamp has killed plugin control of Now Playing. You can
try <a href=http://forums.winamp.com/showthread.php?threadid=250008>this
plugin</a> but it doesn't work for me.
<li>Better support for out-of-spec GD3 dates
<li>Changed dialogues to use Tahoma font to get its better Unicode support
<li>Rewrote file info displayers to use common code underneath
<li>Fixed bug with file info when file was downloaded from a URL
<li>Fixed bugs displaying long formatted times
<li>Changed seeking method to avoid inter-thread issues - hopefully, that
means no more crashes when seeking or muting channels.
<li>Fixed fake panning to maintain equal power when panned (I think)
<li>Fixed crash reading extended file info on files with no GD3 tag
<li>Added per-chip enabling and preamplification controls
<li>Settings saving is now updated for Winamp's user profile support
<li>Added per-channel muting for YM2612
<li>Added "loop forever" option
<li>Improved HTML information display
<li>Added fake stereo randomisation
<li>Fixed Title Casing for legacy title formatting
<li>Fixed bug with port numbers in URLs in URL handler
</ul>
<h4 id=histlink><a href="#oldhistory" onClick="javascript:showhistory();">Click to show older entries</a></h4>
<div id=oldhistory style="display:none;">
<a name="oldhistory"></a>
<h3>0.34 7/12/05</h3>
<ul>
<li>Added high-pass filter for PCM to Gens sound core (by Blargg)
<li>Pausing after non-looped tracks was broken in 0.33
<li>This also broke skipping with short tracks
<li>Fixed a couple of typos in the readme
<li>Improved HTML information display
</ul>
<h3>0.33 20/11/05</h3>
<ul>
<li>Added support for YM2612 sample banks and VGM 1.50
<li>Fixed some stupid old bugs with unlooped VGMs that nobody ever noticed
<li>Updated zlib to latest version
<li>(Hopefully) removed dependency on MSVCRT*.DLL
<li>Added file sniffer functionality so it will automagically play VGM
files even if you change the extension (although that's not
recommended)
<li>Improved file info box chip usage display
<li>Added tag caching for tag queries, to speed up media library tag
retrieval
<li>Changed to NSIS installer and packed in another demo VGM
<li>Added YM2413 panning support
</ul>
<h3>0.32 30/10/05</h3>
<ul>
<li>Added icons to config dialogue
<li>Fixed issue with Now Playing loading information pages over the HTML
information display
<li>Added file length information into HTML information display
<li>Updated downloader code to use Winamp's built-in downloader instead of
using IE
<li>Added msvcrt71.dll to installer
<li>Enabled support for VGM 1.10
<li>Re-integrated and extended Charles' MAME-style SMS Plus conversion of
sn76489.c to hopefully make it more discoverable and re-usable by
others
<li>Added PSG panning support
<li>Reorganised config interface
<li>Added magical track number extraction for the Media Library by
guessing the filename of the associated playlist file and finding
which number entry it is in there - works well for most SMS Power
releases, at least
<li>Fixed Media Library year problems
<li>Improved time formatting
<li>Added YM2413 panning support
<li>Added panning Gaussian randomisation
<li>Improved emulation of non-Sega variant SN76489 for the Beeb fans
</ul>
<h3>0.31 12/12/04</h3>
<ul>
<li>Added Media Library extended title support and lots of associated
options
<li>And various other stuff too
</ul>
<h3>0.30 28/5/03</h3>
<ul>
<li>Added pause between tracks and looping fadeout options
<li>Updated to EMU2413 0.60: "Fixed HH&amp;CYM generator and all voice datas."
<li>Unupdated back to EMU2413 0.55 - percussion sounds terrible!
<li>Added support for VGM v1.02 (custom PSG noise feedback)
<li>Replaced MAME YM2612 core with Gens 2.10
</ul>
<h3>0.29 31/10/02</h3>
<ul>
<li>Added PSG noise boost option
<li>Added PSG smooth volume curve option
<li>Fixed bug in GD3 tag display
</ul>
<h3>0.28 12/9/02</h3>
<ul>
<li>Configuration now uses a tabbed dialogue
<li>Added WinXP "visual styles" support
<li>Japanese text now shows under WinXP (hopefully)
<li>Seeking bugs fixed
<li>Cancelling the File Info dialogue box for a group of files now works
properly
<li>Improved mixing
<li>Volume levels now match better for different chips
<li>Fixed a typo which caused the YM2162 core not to be closed
<li>Added some documentation to this file
<li>Added a Help button which opens this file
</ul>
<h3>0.27 1/5/02</h3>
<ul>
<li>Fixed a bug with invalid GD3s
<li>Updated to YM2413 0.55, which included a higher quality mode (12%
higher sampling rate plus conversion). Use "High quality YM2413"
checkbox to control it.
<li>Modified PSG core to produce output similar to FM cores, ie. much
quieter
<li>Added Overdrive mode which amplifies the sound to levels similar to a
typical MP3 file. It can cause clipping, though.
</ul>
<h3>0.26 14/4/02</h3>
<ul>
<li>Added MAME YM2151 FM core thanks again to BlackAura
<li>Fixed credits in About box
</ul>
<h3>0.25 8/4/02</h3>
<ul>
<li>Fixed PSG 2-byte noise write behaviour based on chip tests
<li>Added MAME 0.36 YM2612 core thanks to BlackAura
<li>Finally fixed the seek bug
</ul>
<h3>0.24 25/3/02</h3>
<ul>
<li>Improved PSG tone channel oversampling (or rather sub-sample accuracy)
a huge amount - aliasing is gone and it sounds great. It's now always
turned on.
<li>Rewrote PSG noise simulation to be 100% accurate to how the real chip
works
<li>Reverse engineered SMS SN76489 (PSG) feedback network so noise
pattern is bit-accurate
<li>Updated to zlib 1.1.4
</ul>
<h3>0.23 17/3/02</h3>
<ul>
<li>Added PSG oversampling, hoping to reduce aliasing effects but it
doesn't.
<li>Improved channel selection, it now remembers it if you stop and re-
play a track.
<li>Released early as I had broken the self-installer last time
</ul>
<h3>0.22 12/2/02</h3>
<ul>
<li>Total/loop lengths in file info box are now to 1 decimal place,
rather than rounded down to the nearest second
<li>Added some protection for truncated (broken) files
<li>Looked into why VGZ files don't show up on the Open dialogue until
you select them from the dropdown list... it's a Winamp bug, see the
AAQ above.
<li>Worked on the internet download code a bit... note that when you
close the minibrowser, it tends to switch off IE's offline mode :(
</ul>
<h3>0.21 6/1/02</h3>
<ul>
<li>Added HTML display of GD3 information, hopefully allowing Japanese
text to be displayed on all systems
<li>Fixed a memory leak
<li>Loads of other stuff
<li>Never actually got around to releasing this one
</ul>
<h3>0.2 20/11/01</h3>
<ul>
<li>Ported the plugin to C
<ul>
<li>so now the YM2413 is emulated via EMU2413
<li>ported my SN76489 emulator
<li>ported playback engine, including variable-speed playback and
seeking
<li>Re-implemented file downloader using URLMon.dll (makes code simpler)
</ul>
<li>Implemented loop skipping when seeking, so you can seek through a
file looped a lot of times much faster than before
<li>Change title formatting - now you can display Japanese text too (if
supported).
<li>Fixed a bug when stopping/skipping just before the end of the track
<li>Moved settings to plugin.ini in the plugins folder. You can delete
the section from winamp.ini if you like. You'll have to re-set your
preferences if you don't like my defaults.
<li>Changed FM/PSG mixing so the Japanese BIOS music sounds better... if
anyone can send me a recording (from a real SMS with an FM chip) of
the Japanese BIOS music (or any game using both the PSG and FM chip)
I'd be grateful.
<li>Added some stuff to the file info dialogue
<li>Added YM2413 channel muting
<li>Updated to EMU2413 0.51, with modifications
</ul>
<h3>0.12 1/10/01</h3>
<ul>
<li>Fixed typo in About box (0.1 -> 1.0)
<li>Added user-configurable playback rate - now you can choose to play
music at the speed you remember.
<li>Made it so PSG flip-flops don't get stuck at zero frequency (made it
sound strange sometimes)
<li>Changed config dialogue to Verdana font (file info already was)
<li>Added useless icon to config dialogue. If anyone wants to design a
logo I can show it this way :)
<li>Fixed tab order in file info dialogue
<li>Added SMS Power URL button to file info dialogue
<li>Fixed a bug caused by the flip-flop fix
<li>Cleaned up source code a lot
<li>DLL is now compressed as well as WinAligned
<li>Ported EMU2413 to Delphi... but it doesn't work yet
<li>Removed the above flip-flop thing because it broke voices...
On a real SMS, quite often a channel's frequency is set to 0
without turning it off. On my simulated PSG that leaves a permanent
DC offset; on a real SMS that offset decays in a fraction of a
second. The effect of this is to make the wave appear to "move" up
and down; it has a small effect on the sound, as speakers operate
better without a DC offset. Unfortunately the same effect is used
for voices, so when I activate the code to remove the offset,
voices stop working. To see this in effect, try "Out Run 3D -
Magical Sound Shower" or "Micro Machines - Title Screen", among
others.
<li>Added HTTP downloading via WinINet.dll... which is part of IE, but
should be on almost every PC
</ul>
<h3>0.11 4/9/01</h3>
<ul>
<li>Fixed a bug in the PSG tone emulation that caused problems with Micro
Machines.
<li>Relaxed version checking, now it only insists on VGM and GD3 1.xx and
still offers to play other files.
</ul>
<h3>0.1 3/9/01</h3>
<ul>
<li>Added a button to set MIME types in the registry. If a server is set
up to descibe VGM/VGZ files as "Content-Type: audio/vgm" and these
values are set, Netscape will be able to play VGM files from URLs. IE
doesn't need it, it ignores the MIME type when it sees the file
association with Winamp and will open the file properly (after a
prompt).
<li>VGM is verging on going public, so it's reset to 1.00 and the plugin
gets out of alpha
</ul>
<h3>Alpha 13 26/8/01</h3>
<ul>
<li>Fixed a worse bug in the previous bugfix :P
<li>Added track title formatting stuff
<li>Increased play thread priority to stop skipping when the CPU is busy
</ul>
<h3>Alpha 12a 25/8/01</h3>
<ul>
<li>Fixed looping bug
</ul>
<h3>Alpha 12 25/8/01</h3>
<ul>
<li>For some reason the GZip code limited the path to 79 characters,
causing "Not an AYM file" errors on files with long paths. I fixed it.
<li>Switched to VGM instead of AYM. ****DELETE IN_AYM.DLL****
<li>Added configuration dialogue; the tone channel checkboxes have moved
there from the file info box
<li>Added looping support
<li>Updated to VGM 1.12
<li>Added loop configuration to config dialogue, saving the loop count to
winamp.ini
<li>Added a button in the file info dialogue for the config dialogue, so
you can get at it quicker
<li>Setting the loop to a high value allows me to test seeking speed. 400
minutes in 8 seconds is 3000x...
</ul>
<h3>Alpha 11 20/8/01</h3>
<ul>
<li>Synchronous noise tested against a real system. Apart from the
different sound due to the real system's imperfections, it works
properly now.
<li>Updated to use the GD3 tag location properly. Decrease the offset by
0x14 in existing files for it to work. I'm not going to code for it
to handle both, sorry...
<li>Volumes use values measured from a real SMS. I may switch to
logarithmic values, or maybe have an option eventually?
<li>Speed modifying code added. If you want to play back at 120Hz or
13.47Hz, you can. Except you can't, I commented that code out. Thanks to
Bock for pointing out how to do it.
</ul>
<h3>Alpha 10 19/8/01</h3>
<ul>
<li>It now looks for and uses the .ayz file extension. It actually
doesn't matter which extension you give a file, compressed or not.
<li>AYM 1.11, plus you can now choose to try and play versions not in the
supported range (1.08-1.11).
</ul>
<h3>Alpha 9 19/8/01</h3>
<ul>
<li>Switched to AYM instead of DYM
<li>Invalid files were displaying a track length before, they don't now
<li>Added GZip support. There are problems with the .aym.gz extension -
Winamp won't automatically pass it to the plugin, because it sees the
extension as .gz. That has been worked around. Windows won't
associate .aym.gz files with Winamp, because it too sees them just as
.gz files. I don't see any way around this. GZip also ballooned the
DLL size a bit... WinAligning makes it seem even bigger. (Was: ~42KB
-> 64KB after aligning, now it's ~75KB -> 92KB after aligning.)
</ul>
<h3>Alpha 8a 17/8/01</h3>
<ul>
<li>Fixed problem with DirectSound output plugin
<li>Fixed EQ problem
</ul>
<h3>Alpha 8 17/8/01</h3>
<ul>
<li>Fixed an error which cause all sound to be half the correct frequency
(1 octave lower than it should)
<li>That also fixed voices
</ul>
<h3>Alpha 7 16/8/01</h3>
<ul>
<li>DYM 1.10, with GG stereo port writes. It's untested because there is
no test stream yet :)
<li>Improved method of muting channels, although as far as the sound is
concerned it's the same.
<li>Tweaked volume so the (theoretical) maximum is now 98% of the
available volume. It seems this is the "right" thing to do...
<li>Since compatibility hasn't broken since DYM 1.08 (it uses default
values for older versions), the version checking now accepts a range
of values.
</ul>
<h3>Alpha 6 15/8/01</h3>
<ul>
<li>DYM 1.09, with the PSG clock rate in the header. That is all.
</ul>
<h3>Alpha 5 15/8/01</h3>
<ul>
<li>Fixed up the channel disabling, although it's still in the info box
(it'll probably end up somewhere else). Before it took until the next
volume change on that channel to mute, now it's only the output
plugin' s buffer length that stops it being instant. Noise can be
disabled too. Unmuting still needs a volume change though.
<li>DYM 1.08 already...
<li>Added noise emulation according to the MAME/Hiro-shi method. It's
terrible, completely inaccurate.
<li>Dave's Sonic DYM highlighted a problem - out of laziness, I was not
buffering the file myself, hoping that Windows would do enough. So,
every byte read was actually using quite a lot of CPU. I've now got a
32KB buffer - voices work now (almost... I'm not sure what the
problem is now, it could be an issue with DYM itself), and seeking is
incredibly fast! It took 6 seconds to seek 1 minute into the GG
Shinobi DYM before, now it's instant! Seeking nearly 3 minutes into
the Sonic DYM takes a fraction of a second. And now, CPU use is way
down. It depends on the DYM file, but it's typically around 4%, a
quarter what alpha 4 used :)
<li>I switched to my determined PSG clock speed, but it seems to cause
some problems (with voice) if it's not what the DYM creator used. DYM
1.09 addition?
<li>WinAligned DLL... it's 64KB instead of 45, but it now executes from
the disk cache on Win98 and higher.
</ul>
<h3>Alpha 4 13/8/01</h3>
<ul>
<li>Added proper file info box, without invoking Delphi's RTTI filesize
overhead. It's a lot more hassle :( but it's kept the plugin at 44KB.
<li>Rewrote tone generators to act EXACTLY like the hardware (counters
and flip-flops). The last version used another method which I thought
up based on maths and stuff like that, which sounded OK until the
sound started using vibrato, in which case it sounded terrible. Now
it sounds perfect (except for emulation of the "fading"
flip-flops...). As an added bonus it seems to be a bit faster too,
the decoding thread uses about 16.2% CPU for me now.
<li>Added VERY quick and dirty noise emulation. It's just volume*random(),
and sounds crappy. It's better than nothing though. It also accounts
for about 25% of the CPU use...
<li>Added DYM version checking, because some people were trying to play
old DYM files and crashing Winamp... :)
</ul>
<h3>Alphas 1 to 3</h3>
I didn't record what I did then...
<p>
<s>...but I ought to thank Jason for help translating the C.
<pre> while (! *((int *)b) )</pre>
is quite confusing, I think
<pre> while integer(b^)=0 do</pre>
is much more readable :) (translation: while what pointer b points to,
typecast as an integer, is zero, do...)</s>
<p>
Forget that, Jason's an asshole and I understand C now.
</div>
<p>
<hr>
Documentation by Maxim
<p>
<a href=http://www.smspower.org>http://www.smspower.org</a>
</body></html>