My Nes Version 7.13.8087.35622
Built at 21 February 2022 19:47
-------------

- Improved Audio Downsampler. 
- Improved Audio generally.
- Improved performance by converting audio samples from integers into bytes.
- Audio now is output in unsigned 8 bit instead of signed 16 bit, it is correct for nes.
- Improved SlimDX DirectSound renderer, it sounds now better and stable.

### Notes:

- It may sound error sometimes with some games, but it is correct. Since nes sound output is about 179 MHz and
  Audio Channels might sound up to 444000 Hz, so downsampling from 444000 Hz into 44100 Hz will result a loss of resolution.
  Applying fixes like taking averages of samples proved to be wrong, so in My Nes, the downsampler now just do downsampling
  without any fix. This is correct but might sound error, this is normal due to the loss of resolution.
- Nes when outputing audio samples and mixed together, they are range from 0 into 1 in amplitude. If we try to convert
  that to 8 bit samples or signed 16 bits will result errors and corruption in sound. The correct convert is from 0-1 apm into 
  0-127 value or 0 - 0x7F. My Nes now output sound in 8bits with range of 0 - 127, applying a simple fix as well that makes sure
  no sample is 0 (DB Fix, see <https://github.com/alaahadid/Docs/blob/main/Audio%20And%20DB.txt>) to make the sound 100 % correct.
- Performance is improved by using 8 bit audio samples instead of 16 bit samples, also renderer now control speed correctly to
  make sure audio samples are played correctly in time. This affect performance and accuracy of fps.

--------------------------------------
My Nes Version 7.12.8069.42227
Built at 3 February 2022 23:27
-------------

- Added Stereo Nes mode
- Added ability to adjust pan level of audio channels for Stereo nes.
- Updated audio recorder to record stereo with stereo nes mode (if enabled)

Notes:
- Stereo nes is hack of nes that allows audio channels to outputed in stereo with pan adjusted. To enable stereo nes, go to Audio>Stereo Nes.
  Stereo must be enabled first (Audio>Stereo)
- Channels pan level can be adjusted using Audio Channel Pan Config window (Audio>Stereo Nes Settings). It is applied directly into settings, 
  these settings are saved in renderersettings.ini file in documents folder (C:\Users\<user>\OneDrive\Documents\MyNes).

--------------------------------------
My Nes Version 7.11.8066.5101
Built at 31 January 2022 02:50
-------------

- Added ability to render (and record) audio in Stereo (2 channels)
- Added settings to switch audio channels (Stereo-Mono)
- Added Reset All Settings button in Input settings window, allows to reset all input settings into defaults.
- Updated SDL2 to the latest version 2.0.20.0
- Updated video default settings 
- Changed default player 1 keyboard control mapping.
- Fixed bug when run My Nes in "Trace" mode.

Notes:
- To apply new player 1 keyboard control mapping, press Reset All Settings button in the Input settings window (Input>Player 1 Input), 
  or please go to 'Documents>MyNes' and delete file 'controls.mnc'. This will reset all control (Input) settings as well.
- Running "MyNesTrace.bat" will open My Nes in trace mode, then My Nes starts to record all internal events into a text file 
  then stores it in "Logs" folder.
  This will be useful in case there is a bug in My Nes, simply send the log file(s) into My Nes website or contact email.

--------------------------------------

My Nes Version 7.10.8036.39502
Built at 1 January 2022 21:56
-------------

- Updated copyright inforamtion
- Updated target .netframework version into 4.8 

--------------------------------------

My Nes Version 7.10.7962.1462
Built at 19 October 2021 00:48
-------------

- Added: NTSC composite video color decoder. 

--------------------------------------
My Nes Version 7.10.7953.31793
Built at 10 October 2021 17:39
-------------

- Added: new audio downsampler for more even better audio.

--------------------------------------

My Nes Version 7.10.7945.40903
Built at 2 October 2021 22:43
-------------

- Add: multilingual interface support.
- Added: Arabic and Chinese Simplified interface languages.
- Fixed: colors decoding error, saturation and light were adjusted a little bit. Now all set to 0 (default colors).
- Improved: audio mixer now faster.

--------------------------------------

My Nes Version 7.9.7931.3259
Built at Saturday 18 September 2021 01:48
-------------

- Fixed: My Nes mixer look-up table.
- Fixed: sound output for external sound channels.
- Improved: MY Nes mixer. Now it sounds better.

--------------------------------------

My Nes Version 7.9.7810.42663
Built at Thursday 20 May 2021 23:42
-------------

- Fixed: black image when taking snapshot/saving state snap.
- Improved: MY Nes generally.

--------------------------------------

My Nes Version 7.9.7810.26880
Core Version 7.9.7810.26879
Built at Monday 20 May 2021 14:56
-------------

- Fixed: color decoding, now color are outputed as it should in real nes (colors hue are now adjusted with 15 degree). 
- Improved: performance by optimizing color decoding and audio rendering.
- Removed: brightness adjust from SDL renderer settings.
- Removed: ability to switch audio filters on/off.

--------------------------------------
My Nes Version 7.9.7795.37773
Core Version 7.9.7795.37318
Built at Monday 5 May 2021 20:59
-------------

- Fixed: color decoding sequences.
- Fixed: issue when color sequence value is above 13 the color level should be set to 0.

Notes:
- Only SDL2 Video renderer can adjust brightness. To adjust brightness, go to Main Menu > Video > SDL2 Settings
- Only SDL2 Video renderer can upscale resolution.

--------------------------------------

My Nes Version 7.9.7795.21597
Core Version 7.9.7795.20732
Built at Monday 5 May 2021 11:59
-------------

- Added: Option to enable/disable resolution upscale.
- Improved: Brightness adjustment in SDL2 video render when res upscale is enabled.

Notes:
- Only SDL2 Video renderer can adjust brightness. To adjust brightness, go to Main Menu > Video > SDL2 Settings
- Only SDL2 Video renderer can upscale resolution.


--------------------------------------

My Nes Version 7.9.7795.6011
Core Version 7.9.7794.5330
Built at Monday 5 May 2021 03:20
-------------

- Added: ability to change video Brightness with SDL2 video renderer. (To adjust brightness, go to Main Menu > Video > SDL2 Settings).
- Fixed: Ability to decode nes colors without the need of using palette, includes gray scale and emphasize. Now it is correct.

Notes:
Only SDL2 Video renderer can adjust brightness.

To adjust brightness, go to Main Menu > Video > SDL2 Settings

My Nes now decode color directly from nes emulation (register $2001 and palette bank) without the need of using a palette.
This done in run-time, no need for generating a palette nor the usage of palette index buffer. It has been tested and has no impact on performance.

Expect real NES COLORS like it should be in real TV !!

This should be 100% correct, Nes uses configurations to generate colors, that's mean there is no Need for a palette. 

The colors outputed from emulation core is 100% correct, but when they are displayed in My Nes, they are dark colors (dark red, dark blue ..etc) 
My Nes needs to implement color adjusments (Saturation for example) in order to display these color better.

If using My Nes with palette, please download version 7.9.7791.3517 <https://github.com/alaahadid/My-Nes/releases/tag/v7.9.7791.3517> 
since there is no change for the exception of palette removing and new color decoding.


--------------------------------------

My Nes Version 7.9.7793.23986
Core Version 7.9.7793.23986
Built at Monday 3 May 2021 13:19
-------------

- Added: Ability to decode real nes color without the need of using palette, includes gray scale and emphasize.
- Removed: palette generator and usage of palette from My Nes.

Notes:
My Nes now decode color directly from nes emulation (register $2001 and palette bank) without the need of using a palette.
This done in run-time, no need for generating a palette nor the usage of palette index buffer. It has been tested and has no impact on performance.

Expect real NES COLORS like it should be in real TV !!

This should be 100% correct, Nes uses configurations to generate colors, that's mean there is no Need for a palette. 
I have no idea why but some games shows green background instead of blue (SMB 3),
Other games like TMNT 2 shows green floor instead of blue.
Other games work 100% correct, also games that uses gray scale such as The Jungle Book and Felix The Cat.

--------------------------------------

My Nes Version 7.9.7791.3517
Core Version 7.9.7791.2222
Built at Saturday 1 May 2021 01:57
-------------

- Added: Ability to change video resolution (main menu>video>Resolution), My Nes now able to scale emulation output video up to 1920 x 1080 Full HD !!

Note: 
- Resolution is rendered by applying upscaling-algorithm into nes video output, see <https://github.com/alaahadid/Resolution-Blocks-Upscaler> for more.
- Resolution rendering is done in real time, directly after producing video output of quality 256 x 240. The result is next to real tv video rendering.
- Resolution is different from Stretch Multiply, which only sets screen/window size depending on rendering resolution.
- Not implemented for PALB/DENDY, but still, My Nes will change windows size for these tv formats but render video in selected resolution.
- Only SDL2 Video Renderer can handle resolution scale, SlimDX only render nes basic res 256 x 240.

--------------------------------------

My Nes Version 7.9.7790.509
Core Version 7.9.7790.508
Built at Friday 30 April 2021 00:16
-------------

- Added: Emulation video outputs now in resolution 640 x 480, directly into renderer.
- Fixed: TV Standard 4:3 resolutions, now it set correctly to 640 x 480 / 720 x 576.
- Removed: Hide lines for videos, it is not necessary, beside some games/programs requires it disabled.

--------------------------------------

My Nes Version 7.8.7787.28273
Core Version 7.8.7787.28273
Built at Tuesday 27 April 2021 15:42
-------------

- Added: TV Standard 4:3 for rendering video.

Note: My Nes uses Analog Tv Standards for NTSC and PAL as descriped here: <https://gist.github.com/jonlabelle/7834592>

--------------------------------------
My Nes Version 7.8.7748.43133
Core Version 7.7.7748.43132
Built at Friday 19 Mars 2020 23:57
-------------

- Fixed: PAL region clock timing (ppu related to cpu, was always act like NTSC)
- Fixed: My Nes now able to locate game region (system) using data from database.
- Fixed: Palette generator edit page in the palette settings, it was set to NTSC/DENDY which should be PALB/DENDY.
- Fixed: APU sound clock ratio, it was use fixed cpu clock value now the emu calculates the sound clock (playback) ratio accurately. Sound playback should be better. 
- Update: SDL2 libraries now updated to the latest version. SDL2 renderers now running the latest version of SDL2 as the time of this version release of My Nes.

--------------------------------------

My Nes Version 7.8.7668.1577
Core Version 7.7.7668.1577
Built at Tuesday 29 December 2020 00:52
-------------

- Fixed:opening the audio frequency menu keep resetting audio and crashes my nes.
- Improved: updated copyright information and links.


--------------------------------------


My Nes Version 7.8.7520.40396
Core Version 7.7.7520.40395
Built at Monday, 03 August, 2020 10:26 PM
-------------

- Added: ability to open database file in launcher
- Added: ability to change audio device (SDL2 audio renderer only)
- Improved: launcher now can open open database file if it is located in My Nes folder in documents.
- Improved: SDL2 libraries updated to the latest version.
- Improved: SDL2 video and audio renderers.
- Fixed: Mapper 5 crashes in "Shin 4 Nin Uchi Mahjong - Yakuman Tengoku" game, bug in MMC5 PCM external sound channel.
- Fixed: Load and save palette generator values in palette settings.
- Removed: some SDL2 video renderer settings.
- Removed: audio buffer change settings (can still be changed in settings file in documents).

Notes:
------
- Now My Nes look for database file (which generated and used by My Nes built in Laucnher) in My Nes documents folder.
  If that file doesn't exist, My Nes will look in My Nes folder. If it doesn't exist as well, My Nes will ask you if
  you like to generate new database file.
  Also, My Nes Launcher now able to open database file using "OPEN" button.
- SDL2 audio select the first audio device by default, if you switch to SDL2 audio renderer and there is no sound, please
  try to switch Audio device/driver in SDL2 Settings (you can open these setting from main menu: Audio>SDL2 Settings).


--------------------------------------


My Nes Version 7.7.7273.40370
Core Version 7.7.7273.40369
Built at 30.11.2019 22:25
-------------

- Fixed: palette emphasis and grayscale emulation. 

Notes:
------
- My Nes already emulates emphasis and grayscale, the problem with My Nes versions 7.xx.xx that the code line that apply the palette at output was wrong (which is fixed in this version).
  Now My Nes emulates emphasis and grayscale accuratly, you can check that with some tests like full_palette by blarrg or wall.nes here: http://nesdev.com/wall.zip
  Please refer to <https://wiki.nesdev.com/w/index.php/PPU_palettes> and/or <https://wiki.nesdev.com/w/index.php/Colour-emphasis_games> for more details.


--------------------------------------


My Nes Version 7.7.7263.2864
Core Version 7.7.7263.2862
Built at 20.11.2019 01:35
-------------
- Added: ability to toggle fullscreen by double-mouse clicking on the emu screen.
- Added: ability to configure emulation shortcuts (via input settings, go to Input>Emulation Shortcuts).
- Added: ability to change buffer size for sound playback (SlimDX Audio renderer only).
- Fixed: ppu cycle timing, now it is 100% accurate (matches the rendering timing as described in wiki).
- Fixed: ppu sprites render in the first 4 pixels as mirrors of last 4 pixels.
- Fixed: game genie code edit function make My Nes crashes when the code file for a game is not presented.
- Fixed: connect 4 players make My Nes crashes.

Notes (Important):
------
- For best experience, please delete settings files (not folders) in My Nes settings folder before using this new version.
  THIS WILL RESET MY NES TO DEFAULT SETTINGS.
  The setting files can be found in: \Documents\MyNes
  The files are: controls.mnc, emusettings.ini, renderersettings.ini and winsettings.ini.

  This step is OPTIONAL, it will reset My Nes into default without LOSING ANY OTHER DATA, such as state saves, snapshots ...etc

- Sound buffer size affect quality and performance, the lower the buffer size lower the quality and better the performance...
  8 KB size found to be the lowest value possible before glitches can be heared in sound (lower values may do glitches).
  24 KB size found to be the highst value possible before none-resolved latency appears.
  You can set custom buffer size value in the settings: 
  go to \Documents\MyNes, edit renderersettings.ini, change line: Audio_PlaybackBufferSizeInKB=24 while 24 is buffer size 
  then save the file.

- You can use Keyboard, Joystick or Xbox 360 Controller for emulation shortucts.

- Please make sure that audio frequency value (Audio>Frequency) matches the sound output frequency in your pc.
  You can set custom frequency value in the settings: 
  go to \Documents\MyNes, edit renderersettings.ini, change line: Audio_Frequency=48000 while 48000 is audio frequency 
  then save the file. 


--------------------------------------


My Nes Version 7.6.7241.40720
Core Version 7.6.7241.40719
Built at 29.10.2019 22:37
-------------
- Added: ability to switch audio mixer (between My Nes internal mixer and nes mixer that described in wiki). Details can be found in new page of the Getting Started dialog.
- Imporved: FPS limiter, now it is 100% accurate (for all threads).
- Fixed: DMC DMA and OAM DMA. Now all related tests pass (some games fixed such as Teenage Mutant Ninja Turtles sprite glitches).
- Fixed: Sprites priority. (Can be noticed in Super Mario Bros 3 when you take the first maschrum)
- Fixed: ppu timing (no bug, the timing was wrong with a cycle shift, now the timing matches exactly the diagram that provided in nes wiki here: <http://wiki.nesdev.com/w/index.php/File:Ntsc_timing.png>)

Notes:
------
- Please note that the external sound channels of mappers (i.e. mapper 5) are enabled again in this version (it was disabled in the previous version).
- If the sound went off after chosing an audio mixer, simply try to switch mixer again (From main menu: Audio > Use Mixer).
- No changes for MyNesGTK nor MyNesSDL in this version, the Core is updated for this version though so it is up to date. 
  The only thing you may want to do is to switch the audio mixer manually.
  To do so, simply go to 
  Windows: C:\Users\<user>\Documents\MyNes
  Linux:   ./Home/MyNes
  Locate renderersettings.ini file, open it then locate this line (add it if it does not exist):
  
  Audio_UseDefaultMixer=0
  0 means My Nes will use the internal mixer. This one is not as described in the wiki, it suppose to produce higher quality sound...
  
  Audio_UseDefaultMixer=1
  1 means My Nes will use the defaul mixer as described in the wiki here: <http://wiki.nesdev.com/w/index.php/APU_Mixer>
  
  Save changes to apply then run MyNesSDL. Changing mixer will not affect performance, hence both mixers values are loaded into lookup table at game hard reset.
  Note that in Windows, MyNesSDL and MyNes share the same configuration file.


--------------------------------------

My Nes Version 7.5.7202.39220
Core Version 7.5.7202.39201
Built at 20.09.2019 21:47 AM.
-------------
- Added: new audio mixer instead of the default lookup table.
- Fixed: audio sound filters (wrong high-pass equation and alpha calculation).

Notes:
------
- Please note that the external sound channels of mappers (i.e. mapper 5) are disabled in this version.
- All sound filters are 100% accurate now, the filters alpha calculations are 100% accurate as well. Also, the new mixer is 100% accurate, even better than the default lookup table which described in the wiki, which is token from nes hardware circuit.
  The point here that the mixer that built now in My Nes will make sure all channels outputs 100% presented without any loss, even the dmc channel now output 100% mixed with other channels.
  In other words, with My Nes, you will be hearing the best (accurate and clear without loss) sound ever produced by a nes emulator so far. I mean this: My Nes emulates the real nes sound filter plus a perfect mixer which mix channels audio without loss.
- Note: the other sound effects you may hear in sound (i.e. aliasing in some cases) is caused by the sound renderer and sound buffer writing (loop buffers), not by the sound itself. Just saying, it is not 100% perfect as the real hardware, 
  but it is the best possible as an emu.


--------------------------------------
My Nes Version 7.5.7100.2949; Built at 10, Jun, 2019 01:38.
-------------
- Added: enable filters in Audio option.
- Improved: sound playback quality (both renderers) by configuring buffer size and latency (buffer options are removed).

Core Version 7.5.7100.447; Built at 10, Jun, 2019 00:14.
-------------
- Fixed: Square sound channels sequencers (wrong counting through the look-up table). 
- Fixed: sound aliasing by implementing proper low-pass filter for down-sampling.
- Improved: sound quality by adding the proper filters as described in nes wiki.

Notes:
------
- It is recommended to switch into SlimDX renderers, for both video and sound for this version (unless there are quality issues).
- My Nes emulation engine outputs sound at ~1.79 MHz, in real nes (as described here <http://wiki.nesdev.com/w/index.php/APU_Mixer>) there are 3 filters:
. A first-order high-pass filter at 90 Hz
. Another first-order high-pass filter at 440 Hz
. A first-order low-pass filter at 14 kHz
Now My Nes implement all these filters after output in 1.79 MHz. All filters (low-pass and high-pass) are implemented as described in the wiki, in other words, they work using the actual physical equations.
After that, for down-sampling into the playback sound frequency, a low-pass filter is implemented at playback frequency as well.
- So, in My Nes, the audio process works like this:
EMU OUTPUT at ~1.79 MHz => high-pass filter at 90 Hz => high-pass filter at 440 Hz => low-pass filter at 14 kHz => low-pass filter at playback freq (i.e. 44100 Hz for default) => write samples into playback buffer (i.e. play sound).
- If you notice performance issues in this version or simply you don't like the sound quality, you can still disable this filters in the main menu: Audio>Enable Filters. 
When this option is disabled, the filters order will be like this:
EMU OUTPUT at ~1.79 MHz => low-pass filter at playback freq (i.e. 44100 Hz for default) => write samples into playback buffer (i.e. play sound).
This may cause some sound issues like aliasing, corrupted square melodies ...etc 
- Sound buffer size is now fixed for each renderer: 16 KB for SlimDX Direct sound and 5KB for SDL2Sound. These buffer sizes found best for quality and performance.


--------------------------------------
Version 7.5.6945
Built at 06, Jan, 2019 22:00.
-------------
* It is recommended to delete the setting files in My Nes folder in the user Documents folder for better experince.
  To do so, please go to 'C:\Users\<username>\Documents\MyNes' then delete: 'controls.mnc', 'emusettings.ini', 'renderersettings.ini' and 'winsettings.ini'. 
* This version is compatible with game states that made on the previous version.
* Sorry for the latest versions of My Nes, it was quit a mess, i was focusing on the core and totaly forgot about experience. 
  Consider this version as my apology, I tried my best to fix all the issues related to user interface and game play experience.
  I tested this version on both my Computer (mid range pc) and on my potato laptop (some laptop from 2009 lol), i ran My Nes
  for hours, carefully configured palette, sound, video, menus and even emulation speed to bring the best experience and quality possible.
  I know My Nes is the not the best Emu out there, but the way i see it after this version, it is really cool to play retro with
  My Nes now !! just relax, plug xbox 360 controller if you have one, run My Nes and Enjoy !! :D

- Added: load state open menu item, allows to quickly load a rom then load a state from selected state slot directly.
- Added: load state on recent open menu item, same as above, but this work on games open from recent menu.
- Added: Start game in fullscreen menu option, allows My Nes to switch My Nes into fullscreen mode each time a game is loaded.
- Added: SDL2 settings in video menu, allows to configure further options of SDL2 Video Renderer.
- Added: Shutdown emu/exit My Nes on Escape press menu option on preferences, this options allow My Nes to exit fullscreen, shutdown emu or exit My Nes with Escape press.
- Added: Interface languages switch in Preferences, currently only English and Arabic languages is supported. Sorry i cannot add more languages, i don't want to use translater services to add more languages ... i need help in this end :)
- Added: Ability to show supported boards list from Help menu.
- Added: Context menu that appears when right-mouse click anywhere in My Nes window (work on fullscreen too). This allow to access usefull menu items quickly during game play.
- Added: Auto mouse cursor hide.
- Improved: the default palette settings, carefully configured to produce a very good image quality.
- Improved: Sound is carefully configured to produce the highest sound quality possible with My Nes.
- Improved: if a x controller is connected, and start My Nes for the first time, My Nes will configure and switches automatically to that controller. (In other words, plug in your x controller and start playing !!)
- Improved: Getting started dialog, now it support more options and more detailed.
- Improved: Speed control in emulation, now My Nes run smoothly.
- Fixed: bug in SlimDX video renderer, keep aspect ratio was not working.
- Fixed: bug in SlimDX audio renderer, sound became corrupted most of the time.
- Fixed: fullscreen was not working probably (My Nes used to go Maximized window instead of normall fullscreen).
- Fixed: issues with notifications positions on the screen.
- Fixed: when to many notifications came at once, the video renderer was displaying the latest one only. Now it display them all one by one.
- Removed: The GameDB related features.


--------------------------------------


Version 7.4.6753
Built at 28, Jun, 2018 20:44.

- Added: Namco 163 sound channels (mapper 210 external sound channels)
- Fixed: save-load state in Namco 106 mappers (# 19 and 210)
- Fixed: channels cannot be silenced using Audio>Channels menu items from the last update.
- Improved: Audio filters order fixed to match what described in the wiki, it goes now like this: high-pass filter at 442 Hz => high-pass filter at 90 Hz => low-pass filter at 14 KHz.

--------------------------------------


Version 7.3.6725
Built at 31, Mai, 2018 23:08.

- Added: APU io-bus emulation.*
- Added: APU now emulates the real nes clock rates, which clocks on the other cpu's cycle.*
- Improved: Sound quality by adding high-pass filters as original nes hardware, see http://wiki.nesdev.com/w/index.php/APU_Mixer.
- Fixed: SDL2 video renderer eat up memory when FPS is shown.
- Fixed: SDL2 video renderer crashes in some cases.

IMPORTANT: this version is not compatible with state-saves data that are made by previous versions of My Nes.
Please go to \Documents\MyNes\States folder and either back up the data or delete them.

* Notes for whom interested in NES emulation:
- APU and PPU have io-bus. APU has once wich mapped between $4000 and $4019. $4020 is mapped to cart EX. 
  $4018 and $4019 are not used but still applied to the bus.

- For ppu, the bus works like this:
  - When cpu acces ppu io addresses (i.e. $200x, x can be 0-7), it sets the ppu-io-data bus value and ppu-io-address which it is 
    between 0 and 7 and finally sets the
    ppu-io-bus write flag for write access, or clear it for read access.
  - On writes, the ppu first finishes the current ppu cycle, then when done, it checks out the ppu-io-bus status, if there is an 
    access, ppu acknowledge: flags get reset, data updated ...etc.
  - On reads, the ppu immediately updates the ppu-io-data bus then returns it to the cpu, then the ppu finishes the current ppu 
    cycle. After that, it check out
    the bus status (for example, on $2002 reads, it first returns the vbl flag status immediately, finishes the current cycle then 
    finally it clears the vbl flag) and does the prober actions such updating flags.

- For APU, the bus work the same, except that the bus check happens on the end of the apu cycle:
  - When cpu acces apu io addresses (i.e. $40xx, x can be 0-17), it sets the apu-io-data bus value and apu-io-address which it is 
    between 0 and 17 and finally sets the
    apu-io-bus write flag for write access, not set for read access.
  - On writes, the apu first finishes the current apu cycle (on the other cpu's cycle), then when done, it checks out the apu-io-bus
    status, if there is an access, 
    apu acknowledge: flags get reset, data updated ...etc.
  - On reads, the apu immediately updates the apu-io-data bus then returns it to the cpu, then the apu finishes the current apu 
    cycle (on the other cpu cycle). After that, it check out
    the bus status (for example, on $4015 reads, it first returns the irq status immediately, finishes the current apu cycle then 
    finally it clears the irq flag)

- NOTES: the ppu bus get checked immediately after the ppu cycle finishes, this is what causes the vbl latency effects when reading 
         from $2002 and writing on $2000 
         (see vbl-nmi tests for more details).
         For APU, the apu check the bus after the apu cycle finishes, **on the other cpu cycle**. So, when writing to $4017 to reset 
         the sequences, the effect takes 3 to 4
	 cpu cycles to take effect due to this mechanism. Also, the clock-jitter effect (see apu jitter tests) is caused by this as
         well (My Nes now passes these tests by emulating the
	 actual apu cycle rate, there is no cycle numbers add (i.e. add additional cycle to cpu in the odd cycle to pass tests))
    
	Example:
	Let's write something into the $4017 reg, this is what happens:
	
	- if the write occur on apu cycle:
	. cycle1: apu finishes first the cycle then reset the sequence.
	. cycle2: onther cpu clocks, but this time the apu doesn't
	. cycle3: cpu clocks as well as apu, since the sequencers are reset, it all starts from beginning
    
	- if the write doesn't occur on apu cycle:
	. cycle1: nothing happen, it is not an apu clock
	. cycle2: apu clocks and finishes the cycle then reset the sequence.
	. cycle3: onther cpu clocks, but this time the apu doesn't
	. cycle4: cpu clocks as well as apu, since the sequencers are reset, it all starts from beginning

	Same work for vbl flag on ppu.

Also, this is may sound crazy, but the truth i found is, the APU has no sequencer inside it. For enveloper and length units,
it clocks on rates, not in sequences.
- The flag irq check clocks on every 14914 apu cycle (29828 cpus), almost at 60 Hz
- The envelope units clock on every 3728 apu cycle (7456 cpus), almost at 240 Hz. 
  It clocks always EXCEPT WHEN: it is an irq flag check clock (which clocks at 60Hz) and the seq mode is 1.
- The length units clock on every 7456 apu cycle (14912 cpus), almost at 120 Hz. 
  It clocks always EXCEPT WHEN: it is an irq flag check clock (which clocks at 60Hz) and the seq mode is 1.
- This is the difference between mode 0 and 1, in mode 0 there is no skip, in mode 1 the skip happens on irq flag check time,
  and the irq flag check get skipped in this mode instead.

- For length clocks, at 120 Hz, there is some kind of flip-flop. This flip-flop toggled when the clock occur, then it adds 2 apus 
  cycle after the first clock and 1 cycle for the second clock.
  This flip-flop get reset on $4017 writes. Also it works on mode 1, instead of length units clock, it add about 3728 apu cycles 
  plus 2 cycles.

After applying these information into My Nes, all tests passes (except for the apu reset tests). Also some issues in some games 
are fixed, such as Battletoads, it was
hangs on the second stage now it doesn't. Also, My Nes fits exactly the numbers (cycles count, clock rates) as descried in the 
nes wiki, so, these information is accurate, awaits for actual
confirmation and proves in the actual device or on the virtual apu.
For more info how's this theory is applied and how it works, please refer to My Nes source code, there are notes every where about 
this.

--------------------------------------


Version 7.2.6715
Built at 21, Mai, 2018 18:42.

* Improved: Sound quality by adding high-pass filters as original nes hardware, see http://wiki.nesdev.com/w/index.php/APU_Mixer.
* Fixed: SDL2 video renderer eat up memory when FPS is shown.
* Fixed: SDL2 video renderer crashes in some cases.

--------------------------------------


Version 7.2.6677
Built at 13, Apr, 2018 21:44.

* My Nes old GUI is back, along side with the Launcher.
* Fixed issues in the emu core.


--------------------------------------


Version 7.1.6596 
Built at 22, Jan, 2018 22:22.

* Added support for mapper # 163.
* Added multilingual interface support.
* Added ability to render UTF8 texts (in the game browser for non-English game names).
* Added support for Game Genie (ability to enter cheating codes for games).
* Added ability to change the sound buffer size in the audio menu.
* Added some video settings for rendering quality and misc.
* Improved sound configurations, now My Nes sounds better.
* Removed blipbuffer implementation and replaced it with an implementation of the "Band-Limited Sound Synthesis" algorithm.

