﻿NSFPlay/NSFPlug
===============

Das ist ein NSFplayer für Windows inklusive ein Winamp 1.x/2.x/5.x plugin. Die Originale version geschrieben von Brezza ist noch verfügbar auf pokipoki.org.

Um in_yansf.dll (mit der in_yansf.ini) als Winamp plugin zubenutzen, kopiere dies einfach in den Winamp Plugin ordner.

Komplette Source Code verfügbar auf:
- http://code.google.com/p/nsfplay/
- http://rainwarrior.ca/projects/nsfplay/

Wenn du/sie irgendwelche fragen hast, sende sie bitte an die folgende Email adresse:

Brad Smith
nsfplay AT rainwarrior.ca
http://rainwarrior.ca

NSFPlay tastatur abkürzungen
=========================

  Z > Vorheriger Song
  X > Play
  C > Pause
  V > Stopp
  B > Nächster Song


Commando Linien
======================

  NSFPlay [filename]
    > Öffne und beginne NSF song abzuspielen

  NFSPlay [nsf_filename] [wav_filename] [track] [milliseconds]
    > Erstelle WAV datei durch Commando Linien (schneidet einbisschen ab wenn das ende erreicht wurde, oder Loop erkennung).

Configuration files
===================

Die Standart konfigurations datei ist in_yansf.ini. It is found in the plugins folder.

Globale Optionen:
  RATE: Frequenz
  NCH: 1-2 nummern von kanälen
  BPS: 16 bits per sample (verändere dies nicht)
  MASK: bitfeld für kanäle (1 bit schaltet ein kanal aus)
  PLAY_TIME: (ms) Standart spielzeit
  FADE_TIME: (ms) Ausblendzeit
  STOP_SEC: (s) sekunden der stille bevor Autostopp eingeschaltet wird
  LOOP_NUM: (#) Anzahl der Loops bevor der song endet
  AUTO_STOP: 1=Automatisches stopp nach stille
  DETECT_TIME: (ms) Loop erkennung vergleichungs buffer
  DETECT_INT: (ms) jitter erlaubt zeit vergleich in Loop erkennung
  LPF: 0-400 Tiefpass Filter stärke (0=off, 112=default, 400=full)
  HPF: 0-256 Hochpass Filter stärke (256=off, 164=default, 0=full)
  TITLE_FORMAT: Titel display format (see below), default: %L (%n/%e) %T - %A
  DETECT_ALT: 1=Benutze alternative Loop erkennungs algorhytmus
  VSYNC_ADJUST: 1=Ignoriere NSF frame länge einstellung
  MULT_SPEED: clock multiplizierer (256 = no multiplier)
  COMP_LIMIT: 0-100 Begrenzungs limit
  COMP_THRESHOLD: 0-100 Begrenzungs schwelle
  COMP_VELOCITY: 0-100 Begrenzungs velocity
  NTSC_BASECYCLES: NTSC master clock geschwindigkeit
  PAL_BASECYCLES: PAL master clock geschwindigkeit
  DENDY_BASECYCLES: DENDY master clock geschwindigkeit
  REGION: 0=auto, 1/2=Bevorzuge NTSC/PAL, 3/4/5=Erzwinge NTSC/PAL/DENDY
  VRC7_PATCH: 0-7 patch einstellung für VRC7 (see below)
  MASTER_VOLUME: 0-255 master lautstärke
  NSFE_PLAYLIST: 1=Benutze NSFe Playlist daten wenn gefunden
  WRITE_TAGINFO: ?
  READ_TAGINFO: ?
  UPDATE_PLAYLIST: ?
  MASK_INIT: 1=Aktiviere kanäle auf Play
  INFO_DELAY: (ms) Verzögerung für Keyboard
  INFO_FREQ: (Hz) Keyboard Hz Frequenz update
  GRAPHIC_MODE: 1=Zeige grafische Wellenformen für N163/FDS
  FREQ_MODE: 1=Zeige Hz in Keyboard, 0=Zeige hexadecimal pitch register
  LAST_PRESET: Name des letzten sound presents das benutzt wurde.
  INI_FILE: ?
  LOG_CPU: Schreibe CPU sachen in Datei (0=aus, 1=nur sound, 2=alles was geschrieben wird, 3=alle r/w)
  LOG_CPU_FILE: Dateiname für CPU log

TITLE_FORMAT text replacement:
  %F/%f > filename
  %P/%p > path
  %T/%t > NSF title
  %A/%a > NSF artist
  %C/%c > NSF copyright
  %L/%l > NSFe song title
  %N > song number, 2-digit hex with leading zero
  %n > song number, 3-digit decimal with leading zeroes
  %S > NSF starting song, 2-digit hex with leading zero
  %s > NSF starting song, 3-digit decimal with leading zeroes
  %E > NSF song count, 2-digit hex with leading zero
  %e > NSF song count, 3-digit decimal with leading zeroes

Device options:
  Devices (XXX) are: APU1, APU2, 5B, MMC5, N163, VRC6, VRC7, FDS
  XXX_VOLUME: 0-255 device volume
  XXX_QUALITY: 0-3 oversampling control
  XXX_FILTER: 0-400 lowpass filter (0=off, 400=full)
  XXX_MUTE: 1/0 mute channel yes/no
  XXX_THRESHOLD: 0-100 compressor threshold (100=off)
  APU1_OPTION0: unmute on reset
  APU1_OPTION1: phase reset
  APU1_OPTION2: nonlinear mixing
  APU1_OPTION3: famiclone swapped duty (1<->2)
  APU2_OPTION0: enable $4011 writes
  APU2_OPTION1: enable periodic noise
  APU2_OPTION2: unmute on reset
  APU2_OPTION3: anti clicking (suppresses $4011 pop without disabling its nonlinear mix)
  APU2_OPTION4: nonlinear mixer
  APU2_OPTION5: randomize noise on reset
  APU2_OPTION6: mute triangle on pitch 0 (prevents high frequency aliasing)
  FDS_OPTION0: (Hz) lowpass filter cutoff frequency (0=off, 2000=default)
  FDS_OPTION1: reset "phase" on $4085 write (works around timing issue in Bio Miracle Bokutte Upa)
  FDS_OPTION2: write protect $8000-DFFF (for some multi-expansion NSFs)
  MMC5_OPTION0: nonlinear mixing
  MMC5_OPTION1: phase reset
  N163_OPTION0: serial multiplexing (more accurate sound for 6+ channels)

Channel options:
  There are 29 channels, as appear vertically in the channel mixer, numbered (XX) from 00 to 28.
  CHANNEL_XX_PAN: 0-255 panning (0=left, 255=right, 128=centre)
  CHANNEL_XX_VOL: 0-128 volume
  CHANNEL_XX_COL: hex string for keyboard view colour (exactly six characters, no leading space)
  5B_ENVELOPE_COL: keyboard colour for 5B envelope
  5B_NOISE_COL: keyboard colour for 5B noise

VRC7 patch sets: (VRC7_PATCH)
  0 - VRC7 set by rainwarrior 8/01/2012 (used by Famitracker 0.4.0)
  1 - VRC7 set by quietust 1/18/2004 (used by Famitracker 0.3.6)
  2 - VRC7 set by Mitsutaka Okazaki 6/24/2001 (used by Famitracker 0.3.5 and prior)
  3 - VRC7 set by Mitsutaka Okazaki 4/10/2004
  4 - VRC7 set by kevtris 11/15/1999 (second set in vrcvii.txt)
  5 - VRC7 set by kevtris 11/14/1999 (first set in vrcvii.txt)
  6 - YM2413 set by Mitsutaka Okazaki 4/10/2004
  7 - YMF281B set by Chabin 4/10/2004


Playlists
=========

NSFPlug unterstützt die Winamp M3U Playlists in der selben form wie NEZplug.
Die Playlist ist eine text datei mit nur einem SoundTrack pro line in der form:

filename::NSF,[song],[title],[time],[loop],[fade],[loopcount]

filename  - relativer weg zur NSF datei
song      - track nummer von der NSF (track 1 ist der erste track)
title     - Title des tracks
time      - h:m:s länge des tracks
loop      - h:m:s loop länge, h:m:s- loop startzeit, - kein loop, 0 kein loop
fade      - h:m:s Ausblendzeit
loopcount - Anzahl wieviele male es sich wiederholen soll, 0 ist standart

Jetzige Version
===============

NSFPlay 2.3 - 19.7.2013
Emulation:
- Alle illegallen 6502 opcodes werden jetzt emuliert.
- Audio emulation wird vom CPU angetrieben, dies verbessert das timing. 
- FDS emulation wurde komplett neu geschrieben für bessere genauigkeit.
- N163 emulation wurde komplett neu geschrieben für bessere genauigkeit.
- APU frame sequence wird gesteuert durch $4017, unterstützt 4 und 5 step modes, sofortiger reset, und IRQ flagge.
- MMC5 frame sequence jetzt unabhängig vom APU frame sequence.
- Zeit erweiterung verlangsamt frame sequence mit der CPU rate.
- Ersetzte PREFER_PAL einstellung mit REGION, jetzt auch mit dendy unterstützung.
- Umstellfunktion für Duty Cycle bei APU1.
- Mehrere bessere einstellung wie DMC anti-click option.
- Nutzlose "Frequenz begrenzer" wurde für APU2 entfernt.
- Eine andere option wurde hinzugefügt die den Ultraschallton der Triangle abstellt.
- Kaputter oversample filter wurde repariert.
- Die geräteinstellung für die soundchips wurden bei genaue messung auf 128 eingestellt.
Sonstiges:
- Besseres kleines programm Icon.
- Dünneres DPCM Adressen Display.
- Jetzt wird # anstatt + für noten verwendet.
- Kosmetische reparaturen im Einstellungs dialog.
- Keyboard Frequenz display korrektur für APU/MMC5/VRC6 (waren um einen punkt daneben).
- Keyboard envelope zeigt jetzt ein L für loop.
- N163 waveform Display verschwindet wenn die Note nicht mehr angezeigt wird.
- Bessere infobox für NSFe.
- Reparatur des ladens von UI DLL, verhindert ein absturz wenn es im gleichen ordner wie FamiTracker ist.
- UI DLL meldet jetzt versions probleme wenn diese nicht übereinstimmrn
- LOG_CPU schreibt dies jetzt als Datei.
- Ein problem wurde behoben wenn NSF songs nicht bei 1 starteten.
- Source Code säuberung: Unrelevanter Z80 Emulations code wurde entfernt.

NSFPlay 2.2 - 31.8.2012
Audio Emulation:
- Unmute on reset now sets $4015 to $0F instead of $1F.
- PAL noise frequency $1 now 8 instead of incorrectly 7.
- New VRC7 patch set, option to select alternative patch sets via VRC7_PATCH.
- 5B polarity inverted, envelope adjusted, volume tweak.
- MMC5 polarity inverted, length counter runs at double speed, highest 8 frequencies are not muted.
- VRC6 $9003 register implemented (controls halt and frequency multiplier)
- VRC6 polarity inverted, phase reset now functions properly.
- FDS now uses NSF header $76/$77 to set up $6000-7FFF memory range.
- FDS $4087 bit 7 now mutes modulator.
- Enable periodic noise option fixed. (Forced perodic noise by accident.)
Other:
- Fixed improper $4015 read implementation (should return length counter status), also DPCM IRQ was not initialized.
- Default focus in keyboard window now the track list (to prevent accidental mouse scroll time expansion).
- Fixed Winamp visualizer timing inaccuracy, changed default keyboard delay/freq.
- Inverted VRC7 volume display in keyboard view.
- NSFe support.
- Added NSFe extension block 'text', contains null terminated string of any length (NSF text).
- Removed broken ENABLE_DCF config option. HPF=256 now correctly disables HPF.
- Rewrote LPF and HPF, should have a more usable range of options now.
- Removed XXX_FR/XXX_FC options, now XXX_FILTER works like LPF for each device.
- Memory R/W access is now exclusive to the first device that accepts it; prevents FDS multi-expansion write conflicts.
- Title string will automatically remove whitespace at its beginning or end.
- Fixed single instance bug, was failing to open new NSF file when chosen from explorer.
- Fixed conflicts between keyboard commands and other dialogs.
- Removed tag menu from info page. Does not appear to apply to NSFs.
- Fixed incorrect PAL pitch when QUALITY=0.

NSFPlay 2.1 - 27.3.2012
Audio Output:
- Fixed race condition in audio buffering; stand alone NSFPlay would occasionally get stuck stuttering.
- Produces stereo output, channel mixer dialog for panning and per-channel volume control.
- Fixed PCM playback speed; CPU execution was counting requested clocks, not clocks executed.
- Fixed accuracy of seek times.
- Loop detection now accounts for all audio registers, not just a subset of 2A03 and N163.
- N163 wavelength is actually 6-bit, not 3. Now allows sample length up to 256.
- Fixed FDS volume/sweep envelope caps. (Direct register writes can make them louder.)
- Fixed FDS modulation bias calculation and wrapping.
- Set default volume for VRC7 and FDS a little lower (to match expected levels).
- MMC5 PCM support (for both read and write mode).
- Added phase reset option to MMC5.
- MMC5 was missing length counter and audio register reads; rewrote to conform with APU.
- Adjusted phases for APU/MMC5 square channels to match NesDev's description.
- APU/DMC/MMC5 rewrite of envelope/length/sweep behaviour to use a frame sequencer instead of independent timers.
Options:
- Option to randomize noise on reset (on by default).
- Options cleanup, removed unused/deprecated options from .ini file.
- Using global LPF by default instead of on each device (saves CPU, same result).
- Keyboard view channel colour is now customizable in .ini file (CHANNEL_XX_COL).
Keyboard view:
- Fixed crash due to keyboard OnTimer being allowed before Reset() is executed by the PlayThread.
- Double buffering keyboard view to remove flicker.
- Different colours for different expansions in keyboard view.
- Fixed sound lag after seek.
- FME-7 now named 5B, N106 now named N163.
- DPCM now named DMC in keyboard view.
- Fixed 5B volume display (E now correctly indicates envelope, volume is now correct value).
- 5B now displays envelope and noise.
- VRC6 saw volume now displays accumulator register.
- Corrected VRC6 saw pitch in keyboard view.
- Fixed trailing lines on N163 waveform display.
- DMC volume display no longer flipped (is now $4011 register value).
- DMC now shows sample frequency rather than byte frequency.
- Triangle and noise were not showing muting due to length counter of 0.
- Noise now has frequency display (either rate of random samples, or tonal frequency for periodic noise).
- Removed feature that extends the life of key dots beyond the frame the channel is active (frequency can change when key is silent, esp. VRC6 squares, which visibly jump to the wrong pitch)
Other:
- Save WAV button on NSFPlay.
- Command line WAV output for batch processing.
- Added extra NSF header information to "misc" text box, initial banks, load/init/play addresses, etc.
- Fixed thread-safety issue for configuration (was accessed liberally from many threads).
- Removed legacy code for windows versions older than XP.
- CPU trace define in nes_cpu.cpp for debugging.

NSFPlay 2.0 - 22.2.2012
- Restructured sln/vcproj files, and rebuilt for VS9.
- All intermediate files go into common Debug/Release directories.
- Renamed wa2nsf project to in_yansf to match name of the plugin.
- Fixed improperly set WAVEFORMATEX header in libemuwa2 (allows execution on windows Vista/7).
- Corrected pitch of noise channel.
- Updated VRC7 default patch set.
- Added PAL support and pal flags indicator (PREFER_PAL=1 to prefer PAL for dual mode).
- Added about box for determining build version.
- Fixed some menu items in English dialogs.
- Fixed some initial config settings.
- Fixed crash when using playlist menu options with no loaded NSF.

NSFPlay - 09.12.2006
- Erstellt von > http://www.pokipoki.org/dsa/index.php?NSFplay

===============
ende des dokuments


Deutsche Übersetzung geschrieben von: 
FamiPunk221

