--------------------------------------------------------------------------
  Copyright (C) 2012-2024
   Alekmaul

  This software is provided 'as-is', without any express or implied
  warranty.  In no event will the authors be held liable for any
  damages arising from the use of this software.

  Permission is granted to anyone to use this software for any
  purpose, including commercial applications, and to alter it and
  redistribute it freely, subject to the following restrictions:

  1. The origin of this software must not be misrepresented; you
     must not claim that you wrote the original software. If you use
     this software in a product, an acknowledgment in the product
     documentation would be appreciated but is not required.
  2. Altered source versions must be plainly marked as such, and
     must not be misrepresented as being the original software.
  3. This notice may not be removed or altered from any source
     distribution.
--------------------------------------------------------------------------
CHANGE LOG
--------------------------------------------------------------------------
V4.3.0 (June,10,2024)
- See github changelog of the release

V4.2.1 (March,04,2024)
- See github changelog of the release

V4.2.0 (March,04,2024)
- See github changelog of the release

V4.1.0 (August,20,2023)
- See github changelog of the release

V4.0.2 (February,22,2023)
- Various Fix on documentation
- Various lining things up
- Fix 16 bit increment for text instead of 8 bits for text
- Fix typo in documentation and comments
- Add consoleMesenBreakpoint to allow breakpoints with Mesen emulator (thanks )

V4.0.1 (November,20,2022)
- Fix example with text (background initialization was incorrect)
- Add setScreenOff function
- Fix lz palette entry in decompression routine
- Add effect sound example
- Fix PVSneslib version file

V4.0.0 (October,30,2022)
- Fix getPalette which has a bad entry for palette values
- Add dynamic sprite management (from 8x8 to 32x32 sprites)
- Add objInitGravity function to change default value for gravity, fiction,y max velocity for object (useful for some  games ?)
- Add objCollidMap1D function to manage collisison with no gravity (useful for zelda like games)
- Change default console text display (*BREAKING CHANGE*)
- Add consoleSetTextVramBGAdr, consoleSetTextVramAdr, consoleSetTextOffset for text management
- Add oamDynamicMetaDraw for meta sprite drawing
- Add setModeHdmaReset to remove HDMA effect
- Add setModeHdmaColor for HDMA color effect (color gradient)
- Add setModeHdmaWaves, setModeHdmaWavesMove for HDMA waves effect

V3.5.0 (29, May, 2022)
- Add 32 bit supports for variables
- Clean up a few weird sounding sentences in README (thanks  mattbruv)
- Use +18 tile palette # from from stack (thanks cyraid)
- Improvements to have linux version (thanks RetroAntho)
- Remove template example, useless

V3.4.0 (19, June, 2021)
- Add va_list to consoleNocashMessage function
- Rename RGB8 to RGB24 to have the same behavior than RGB5
- Add new function consoleRegionIsOk to test compatibility between console (PAL/NTSC) and cartridge (Country header entry)
- Add map engine in maps.asm
- Add object engine in objects.asm
- Fix snes.h with examples and links

V3.3.0 (28, May, 2021)
- Fix some instructions in VBlank function
- Add WaitNVBlank function
- Remove SetSoundBank in example where we have more than one bank
- Fix Mosaic In / Out effect in lib and example
- Fix bug in consoleDrawText and functions for text purpose regarding va_list arguments
- Add getPaletteColor and getPalette functions

V3.2.0 (24, May, 2021)
- Remove doc entry for dmaCopyCGram
- Fix AnimatedSprite example with constant variables
- Add new sprite size constant for sprite initialization
- Update examples regarding new sprite size constants
- Fix bit shifting for sprite size
- Remove all includes in libc_c.c to have a more efficient way to manage variables
- Remove some C function of video.c to convert them in assembly language
- Remove oamSet1 from sprite.c, I think it is a useless function
- Remove all c functions from sprite.c to convert them in assembly language
- Remove all c functions from dma.c to convert them in assembly language
- Remove all c functions from background.c to convert them in assembly language
- Remove all c functions from sound.c to convert them in assembly language
- Remove all c functions from video.c to convert them in assembly language
- Add new example breakout from original snes-sdk to help people using PVSneslib
- Remove all c functions from console.c to convert them in assembly language

V3.1.0 (13, December, 2020)
- Remove PVSNESLIB variables in each makefile and add a system variable (PVSNESLIB_HOME)
- Fix 816-tcc rodata variable names for multiple files projects
- Remove all pads C functions for ASM version
- Add mills32 (https://github.com/mills32) mode7 3D effect example
- CleanUp mode 7 library function
- Change wla-dx for last version for wla-dx github repository
- Add source folder management in snes_rules (the name is src, 2 levels, see hello_world example)
- Remove stripcom.exe and optimore-816.exe, they are useless
- Update snes_rules with lots of information to clean Makefiles (thanks RetroAntho for that)
- Update constify to update static variable name (tccs)
- Fix 816-tcc temp filename on linux system (/ in the name, thanks Redbug for the info)
- Add wla-spc700 for futur use

V3.0.0 (21, November, 2020)
- Add score management with 32 bits scoring system
- Remove superscope support, useless and buggy
- Add Multiplayer 5 support (with example)
- Remove C to ASM version for vblank function (with multiplayer 5 support)
- Fix lib and examples headers to avoid recompiling it when the rom has SRAM (see examples for new headers)
- Free some space in ROM but moving each function of the lib in a different SUPERFREE section
- Remove interrupt.c file, useless, a define is enough for that ;)
- Remove oamSetXYEx in sprite.c, useless oamSetXY does the job now

V2.3.2 (10, Februray, 2018)
- Fix some rare problem in SNESMod source with bank 0 (thanks fixing it kungfufurby !)
- Add setScreenOn to display screen (removed from setMode)
- Fix issue with hide/show sprite in oamSetEx

V2.3.1 (04, June, 2017)
- Change rand function to assembly one

V2.3.0 (05, May, 2017)
- Update to last version

V2.2.0 (xx, yyyy, 2014)
- Add dmaCopySpr32Vram to copy 32pix size sprite gaphics to vram (fasssst :D)
- Add dmaCopySpr16Vram to copy 16pix size sprite gaphics to vram (fasssst :D)
- Add pixel mode management for SNES mode 0

V2.1.0 (xx, January, 2014)
- Removed: Neoflash intro screen
- Added: SRAM management (16kbits)  (WARNING ! header not compatible with previous version !!!)

V2.0.0 (19, August, 2013) * NEOFLASH EDITION *
- Changed padsCurrent to define definition to speedup code
- Fix bug in input buttons (X / Y flipped)
- Add consoleDrawTextMapCenter to draw text with x centered axis
- Add spcSetSoundTableEntry and spcSetSoundDataEntry to manage sound values/table
- Add palettesize to oamInitGfxSet (WARNING ! not compatible with previous version !!!)
- Add oamGetX and oamGetY to get the sprite coordinates
- Add REG_VMDATALH define to access 16 bits data of VRAM
- Fix some variable size in lots of functions
- Add setBrightness(0); to initTileSet function to avoir problem when init occurs during VBLank
- Update change setMode function, remove "switch/case" for "if" statement
- Add snesmod text explanation file
- Fix size bug of id in oamSetEx
- Add dmaClearVram function to init vram to #0
- Fix some rare problem in spc700 snesmod source when loading samples (thanks fixing it kungfufurby !)
- Fix internal print buffer from char to unsigned char
- Fix bug for sprite address, used 14 shifted instead of 13 shifted
- Add no$sns debug message function consoleNocashMessage
- Add oamSetVisible to only hide / see a sprite
- Update scanPads is now in ASM and automatically done in VBL function
- Fix bug in fading and mosaic functions (registers x and y not saved)
- Fix all asm files, add specific size for instruction to avoid wla adding brk instructions


V1.0.1 (09, June, 2012)
- fix bug in spcLoad, call spcFLush instead of xspcFlush

V1.0.0 (06, June, 2012)
- add padsUp function to know if key just released
- add bool typedef definition with true & false values
- add NULL definition
- add setPalette function
- add bgInitTileSetData function
- add test for bgInitMapSet & bgInitTileSetData to change or not bg tile/map address
- add oamInitGfxAttr to init only sprites size & address
- add a flag (snes_50hz) to know if we are on a PAL snes (1=yes)
- add sound management through shiru "christmass craze" example (thanks to him for tools)
- add windows regions management
- change some functions to asm version (dma, vbl ...)
- change spc700 data to asm section, avoid burning too much ram
- fix bug in bgSetMapPtr, word access instead of byte, and register mapping not good (use if statement now)
- remove verbose mode for wlalink and wla-65816, not really useful
- remove all signed variables for optimization purpose
- split pvsneslib.asm into multiple files to be more easy to understand
- add music and sfx via snesmod adaptation from mukunda (thanks also kung fu furby for help)

V0.3.0 (01, May, 2012)
- add paletteSize to bgInitTileSet to avoid pb with palette bigger than 16 colors for 16 colormode
- fix bug for REG_BG34NBA address
- add setMode7 to initialize graphic mode 7
- add bgInitMapTileSet7 to initialize graphics & map for graphic mode 7
- add dmaCopyVram7 to copy to VRAM with specfici value for VMAIN register
- add mode7 example
- add hdma gradient example
- add WaitVBLFlag macro to wait VBLM before writing to VRAM
- add likemario example to show how to handle collision map
- consoleVblank draw text only if not currently writing a new one (two states flag)

V0.2.1 (14, April, 2012)
- change display text management to use a buffer map instead of direct vram access
- Add rand function

V0.2.0 (14, April, 2012)
-Add Mode3 link in snes.h documentation
-Change name to pvsneslib
