diff --git a/luadoc/Animation.doclua b/luadoc/Animation.doclua
new file mode 100644
index 000000000..df0c783ca
--- /dev/null
+++ b/luadoc/Animation.doclua
@@ -0,0 +1,88 @@
+-------------------------------------------------------------------------------
+-- @module Animation
+
+
+-------------------------------------------------------------------------------
+-- Gets or sets a value of the SMBX Memory by the offset of the SMBX effect struct.
+-- If you write the third parameter, then you will set the value.
+-- Example of setting a field with mem:
+--
+-- myAnimation:mem(0x3C, FIELD_WORD, 4)
+--
+-- Example of getting the value of a field with mem:
+--
+-- local animationTimer = myAnimation:mem(0x3C, FIELD_WORD)
+--
+-- @function [parent=#Animation] mem
+-- @param self
+-- @param #number address The Memory offset of the struct to fetch or set.
+-- @param #number fieldtype The field type of the value.
+-- @param value If this value is passed, then the value of this memory offset will be set.
+-- @return The value of the struct offset
+
+-------------------------------------------------------------------------------
+-- Returns the amount of running Effects in the level.
+-- @function [parent=#Animation] count
+-- @return #number The number of running Effects in the level.
+
+-------------------------------------------------------------------------------
+-- Returns running Effects of the level.
+-- @function [parent=#Animation] get
+-- @param ids [Optional] The ids to be filtered. Can be a single number or a table with numbers of ids to be filtered out.
+-- @return #list<#Animation> Returns a table with all Effects in the level.
+
+-------------------------------------------------------------------------------
+-- Spawns/Runs a new Effect.
+-- @function [parent=#Animation] spawn
+-- @param #number effectID The id of the new Effect, which should be spawned.
+-- @param #number x The x position of the new Effect.
+-- @param #number y The y position of the new Effect.
+-- @param #number animationFrame The selected animation frame of new effect.
This Animation frame (as parameter) is not the same as Animation.animationFrame!
+-- @return #Animation The spawned Effect-Object. This can be used to modify additional behaviour.
+
+-------------------------------------------------------------------------------
+-- The id of the Effect.
+-- @field [parent=#Animation] #number id
+
+-------------------------------------------------------------------------------
+-- The x coordinate of the Animation.
+-- @field [parent=#Animation] #number x
+
+-------------------------------------------------------------------------------
+-- The y coordinate of the Animation.
+-- @field [parent=#Animation] #number y
+
+-------------------------------------------------------------------------------
+-- The x-speed of the Animation.
+-- @field [parent=#Animation] #number speedX
+
+-------------------------------------------------------------------------------
+-- The y-speed of the Animation.
+-- @field [parent=#Animation] #number speedY
+
+-------------------------------------------------------------------------------
+-- The width of the Animation.
+-- @field [parent=#Animation] #number width
+
+-------------------------------------------------------------------------------
+-- The height of the Animation.
+-- @field [parent=#Animation] #number height
+
+-------------------------------------------------------------------------------
+-- The timer of the Animation. This value might be ignored, depending on the type of effect.
+-- @field [parent=#Animation] #number timer
+
+-------------------------------------------------------------------------------
+-- The current animation frame. This might be used also as a timer.
+-- @field [parent=#Animation] #number animationFrame
+
+-------------------------------------------------------------------------------
+-- The included npc id of the effect. This value is used for effects like yoshis egg.
+-- @field [parent=#Animation] #number npcID
+
+-------------------------------------------------------------------------------
+-- A boolean flag if only the mask should be drawn. This value is used for the cheat 'shadowmario'.
+-- @field [parent=#Animation] #boolean drawOnlyMask
+
+
+return nil
diff --git a/luadoc/BGO.doclua b/luadoc/BGO.doclua
new file mode 100644
index 000000000..3d648c730
--- /dev/null
+++ b/luadoc/BGO.doclua
@@ -0,0 +1,74 @@
+-------------------------------------------------------------------------------
+-- @module BGO
+
+-------------------------------------------------------------------------------
+-- Gets or sets a value of the SMBX Memory by the offset of the SMBX BGO struct.
+-- If you write the third parameter, then you will set the value.
+-- Example of setting a field with mem:
+--
+-- myBGO:mem(0x04, FIELD_WORD, -1)
+--
+-- Example of getting the value of a field with mem:
+--
+-- local bgoIsHidden = myBGO:mem(0x04, FIELD_WORD)
+--
+-- @function [parent=#BGO] mem
+-- @param self
+-- @param #number address The Memory offset of the struct to fetch or set.
+-- @param #number fieldtype The field type of the value.
+-- @param value If this value is passed, then the value of this memory offset will be set.
+-- @return The value of the struct offset
+
+-------------------------------------------------------------------------------
+-- Returns the amount of BGO in the level.
+-- @function [parent=#BGO] count
+-- @return #number The number of BGOs in the level.
+
+-------------------------------------------------------------------------------
+-- Returns BGO of the level.
+-- @function [parent=#BGO] get
+-- @param ids [Optional] The ids to be filtered. Can be a single number or a table with numbers of ids to be filtered out.
+-- @return #list<#BGO> Returns a table with all BGOs in the level.
+
+-------------------------------------------------------------------------------
+-- The id of the BGO.
+-- @field [parent=#BGO] #number id
+
+-------------------------------------------------------------------------------
+-- Boolean flag if the BGO is invisible.
+-- @field [parent=#BGO] #number isHidden
+
+-------------------------------------------------------------------------------
+-- The x coordinate of the BGO.
+-- @field [parent=#BGO] #number x
+
+-------------------------------------------------------------------------------
+-- The y coordinate of the BGO.
+-- @field [parent=#BGO] #number y
+
+-------------------------------------------------------------------------------
+-- The x-speed of the BGO.
+-- @field [parent=#BGO] #number speedX
+
+-------------------------------------------------------------------------------
+-- The y-speed of the BGO.
+-- @field [parent=#BGO] #number speedY
+
+-------------------------------------------------------------------------------
+-- The width of the BGO.
+-- @field [parent=#BGO] #number width
+
+-------------------------------------------------------------------------------
+-- The height of the BGO.
+-- @field [parent=#BGO] #number height
+
+-------------------------------------------------------------------------------
+-- The layer object of the BGO.
+-- @field [parent=#BGO] #Layer layer
+
+-------------------------------------------------------------------------------
+-- The layer name of the BGO.
+-- @field [parent=#BGO] #string layerName
+
+
+return nil
diff --git a/luadoc/Block.doclua b/luadoc/Block.doclua
new file mode 100644
index 000000000..f5f2cbabb
--- /dev/null
+++ b/luadoc/Block.doclua
@@ -0,0 +1,77 @@
+-------------------------------------------------------------------------------
+-- @module Block
+
+-------------------------------------------------------------------------------
+-- Gets or sets a value of the SMBX Memory by the offset of the SMBX Block struct.
+-- If you write the third parameter, then you will set the value.
+-- Example of setting a field with mem:
+--
+-- myBlock:mem(0x1C, FIELD_WORD, -1)
+--
+-- Example of getting the value of a field with mem:
+--
+-- local bgoIsHidden = myBlock:mem(0x1C, FIELD_WORD)
+--
+-- @function [parent=#Block] mem
+-- @param self
+-- @param #number address The Memory offset of the struct to fetch or set.
+-- @param #number fieldtype The field type of the value.
+-- @param value If this value is passed, then the value of this memory offset will be set.
+-- @return The value of the struct offset
+
+-------------------------------------------------------------------------------
+-- Returns the amount of blocks in the level.
+-- @function [parent=#Block] count
+-- @return #number The number of blocks in the level.
+
+-------------------------------------------------------------------------------
+-- Returns blocks of the level.
+-- @function [parent=#Block] get
+-- @param ids [Optional] The ids to be filtered. Can be a single number or a table with numbers of ids to be filtered out.
+-- @return #list<#Block> Returns a table with all blocks in the level.
+
+-------------------------------------------------------------------------------
+-- Makes a collision check and returns the side of the collision.
+-- @function [parent=#Block] collidesWith
+-- @param self
+-- @param #Player player The player where the collison check should be done.
+-- @return #number The side of the collision.
0 = no collision
1 = Player on top of block
2 = Player touching right side
3 = Player touching bottom
4 = Player touching left side
+
+-------------------------------------------------------------------------------
+-- The x coordinate of the block.
+-- @field [parent=#Block] #number x
+
+-------------------------------------------------------------------------------
+-- The y coordinate of the block.
+-- @field [parent=#Block] #number y
+
+-------------------------------------------------------------------------------
+-- The x-speed of the block.
+-- @field [parent=#Block] #number speedX
+
+-------------------------------------------------------------------------------
+-- The y-speed of the block.
+-- @field [parent=#Block] #number speedY
+
+-------------------------------------------------------------------------------
+-- The id of the block.
+-- @field [parent=#Block] #number id
+
+-------------------------------------------------------------------------------
+-- Boolean flag if the block is invisible.
+-- @field [parent=#Block] #number invisible
+
+-------------------------------------------------------------------------------
+-- Boolean flag if the block is slippery.
+-- @field [parent=#Block] #number slippery
+
+-------------------------------------------------------------------------------
+-- [READONLY] The layer name of the npc.
+-- @field [parent=#Block] #VBStr layerName
+
+-------------------------------------------------------------------------------
+-- [READONLY] The layer object of the npc.
+-- @field [parent=#Block] #Layer layerObj
+
+
+return nil
diff --git a/luadoc/Data.doclua b/luadoc/Data.doclua
new file mode 100644
index 000000000..1288f889f
--- /dev/null
+++ b/luadoc/Data.doclua
@@ -0,0 +1,70 @@
+-------------------------------------------------------------------------------
+-- @module Data
+
+
+-------------------------------------------------------------------------------
+-- This data will be saved in the level custom folder and can be only accessed by the current level.
+-- @field [parent=#Data] #number DATA_LEVEL
+
+-------------------------------------------------------------------------------
+-- This data will be saved in the episode folder and can be only accessed by the current world or level.
+-- @field [parent=#Data] #number DATA_WORLD
+
+-------------------------------------------------------------------------------
+-- This data will be saved in the {SMBX-Path}/worlds folder and can be accessed from every world or level.
+-- @field [parent=#Data] #number DATA_GLOBAL
+
+-------------------------------------------------------------------------------
+-- Constructs a new Data class.
+-- @callof #Data
+-- @param self
+-- @param #number dataLocation This value can be Data.DATA_LEVEL, Data.DATA_WORLD or Data.DATA_GLOBAL
+-- @param #string sectionName The sectionName of the data file.
+-- @param #boolean useSaveSlot This boolean flags decides if the data file depends on the save slot.
+-- @return #Data The new Data class.
+
+
+-------------------------------------------------------------------------------
+-- Will set a value in the dataset.
+-- @function [parent=#Data] set
+-- @param self
+-- @param #string key The key for the value
+-- @param #string value The value which should be set
+
+-------------------------------------------------------------------------------
+-- Will return one or all values.
+-- If no argument is passed then a table with [key] = value is returned:
+--
+-- local allData = myData:get()
+-- local aValue = allData["aKey"]
+--
+-- or if you pass an argument:
+--
+-- local aValue = myData:get("aKey")
+--
+-- @function [parent=#Data] get
+-- @param self
+-- @param #string key The key for the value
+-- @return #string The value of the key.
+-- @return #map<#string, #string> A table with [key] = value
+
+-------------------------------------------------------------------------------
+-- Saves the data.
+-- @function [parent=#Data] save
+-- @param self
+-- @param #string sectionName [OPTIONAL] A new section name.
+
+-------------------------------------------------------------------------------
+-- The save location of the data.
+-- @field [parent=#Data] #number dataType Can be Data.DATA_LEVEL, Data.DATA_WORLD or Data.DATA_GLOBAL
+
+-------------------------------------------------------------------------------
+-- The section name of the data.
+-- @field [parent=#Data] #string sectionName
+
+-------------------------------------------------------------------------------
+-- If the save slot number should be used when saving.
+-- @field [parent=#Data] #boolean useSaveSlot
+
+
+return nil
diff --git a/luadoc/Graphics.doclua b/luadoc/Graphics.doclua
new file mode 100644
index 000000000..22dd81324
--- /dev/null
+++ b/luadoc/Graphics.doclua
@@ -0,0 +1,29 @@
+-------------------------------------------------------------------------------
+-- @module Graphics
+
+-------------------------------------------------------------------------------
+-- Toggels the hud on/off
+-- @function [parent=#Graphics] activate
+-- @param #boolean showHud If true, then the hud will be shown.
+
+-------------------------------------------------------------------------------
+-- Loads a image in the resource memory at resourceNumber. You can also set the transparent Color.
+-- @function [parent=#Graphics] loadImage
+-- @param #string filename The filename of the image file relative to the custom folder. Can be also a absolute path.
+-- @param #number resourceNumber The ID for the resource number. Can be selected freely.
+-- @param #number transparentColor The color-code, which should be transparent.
+
+-------------------------------------------------------------------------------
+-- Places a sprite from the resource memory and places it at xPos, yPos
+-- @function [parent=#Graphics] placeSprite
+-- @param #number type If true, then the hud will be shown.
1 = Static / HUD sprite
2 = "In level" sprite
3 = Collectible item
4 = Progress bar
5 = Phanto
+-- @param #number imgResource The resource number where the image is loaded.
+-- @param #number xPos The x position the image should be placed on. (relative/absolute position depends on type)
+-- @param #number yPos The y position the image should be placed on. (relative/absolute position depends on type)
+-- @param #string extra [Optional] Extra value, depends on the given type.
On type 4 this value is used for the event when it is collected by the player.
+-- @param #number time [Optional] The lifetime of the placed sprite. If not set then the sprite is placed forever.
+
+
+
+
+return nil
diff --git a/luadoc/Layer.doclua b/luadoc/Layer.doclua
new file mode 100644
index 000000000..156ab5704
--- /dev/null
+++ b/luadoc/Layer.doclua
@@ -0,0 +1,69 @@
+-------------------------------------------------------------------------------
+-- @module Layer
+
+-------------------------------------------------------------------------------
+-- Returns all Layers or one Layer of the level.
+-- For example:
+--
+-- local myLayer = Layer.get("myLayer")
+--
+-- or if you want all layers:
+--
+-- local tableOfLayers = Layer.get()
+--
+-- However, if you only want the amout of layers then you can use:
+--
+-- local amountOfLayers = #Layer.get()
+--
+--
+-- @function [parent=#Layer] get
+-- @param #string layerName [Optional] The name of the layer.
+-- @return #Layer Returns the first match of layerName.
+-- @return #list<#Layer> Returns all layers. Only if layerName is not passed.
+
+-------------------------------------------------------------------------------
+-- Returns all layers containg the text layerName.
+-- @function [parent=#Layer] find
+-- @param #string layerName The string which the layers should contain
+-- @return #list<#Layer> Returns all layers where layerName is contained in the layer.
+
+-------------------------------------------------------------------------------
+-- Stops the layer's movement
+-- @function [parent=#Layer] stop
+-- @param self
+
+-------------------------------------------------------------------------------
+-- Shows the layer.
+-- @function [parent=#Layer] show
+-- @param self
+-- @param #boolean noSmoke If true, then no smoke will be displayed.
+
+-------------------------------------------------------------------------------
+-- Hides the layer.
+-- @function [parent=#Layer] hide
+-- @param self
+-- @param #boolean noSmoke If true, then no smoke will be displayed.
+
+-------------------------------------------------------------------------------
+-- Toggles (Showing/Hiding) the layer.
+-- @function [parent=#Layer] toggle
+-- @param self
+-- @param #boolean noSmoke If true, then no smoke will be displayed.
+
+-------------------------------------------------------------------------------
+-- [READONLY] A boolean flag if the layer is hidden or not. This can be controlled by the show, hide, toggle function.
+-- @field [parent=#Layer] #boolean isHidden
+
+-------------------------------------------------------------------------------
+-- [READONLY] The layer name.
+-- @field [parent=#Layer] VBStr#VBStr layerName
+
+-------------------------------------------------------------------------------
+-- The x-speed of the layer.
+-- @field [parent=#Layer] #number speedX
+
+-------------------------------------------------------------------------------
+-- The y-speed of the layer.
+-- @field [parent=#Layer] #number speedY
+
+return nil
diff --git a/luadoc/Level.doclua b/luadoc/Level.doclua
new file mode 100644
index 000000000..a8f18eca8
--- /dev/null
+++ b/luadoc/Level.doclua
@@ -0,0 +1,29 @@
+-------------------------------------------------------------------------------
+-- @module Level
+
+-------------------------------------------------------------------------------
+-- Exit the level.
+-- @function [parent=#Level] exitLevel
+
+-------------------------------------------------------------------------------
+-- Returns the filename of the level.
+-- @function [parent=#Level] filename
+-- @return #string The filename of the current level.
+
+-------------------------------------------------------------------------------
+-- Returns the Title/Name of the level.
+-- @function [parent=#Level] name
+-- @return #string The name/title of the current level.
+
+-------------------------------------------------------------------------------
+-- The current state of hitting the goal. If currently not winning then this value is 0.
+-- If no argument is passed, then the value will be retured.
+-- If the value is set the the winState will be modified.
+-- @function [parent=#Level] winState
+-- @param #number value If this value is set, then the winState will be modified.
+-- @return #number The current win state.
+
+
+
+
+return nil
diff --git a/luadoc/Misc.doclua b/luadoc/Misc.doclua
new file mode 100644
index 000000000..b79bc5b2a
--- /dev/null
+++ b/luadoc/Misc.doclua
@@ -0,0 +1,41 @@
+-------------------------------------------------------------------------------
+-- This namespace contains misc. functions for SMBX.
+-- @module Misc
+
+-------------------------------------------------------------------------------
+-- Converts every npc on screen to coins.
+-- (Like you would hit the exit.)
+-- @function [parent=#Misc] npcToCoins
+
+
+-------------------------------------------------------------------------------
+-- Starts the "POW"-Effect
+-- (like if the POW-Block hits the floor)
+-- @function [parent=#Misc] doPOW
+
+-------------------------------------------------------------------------------
+-- Gets or sets the cheat buffer text.
+-- If you don't pass an parameter to cheatBuffer, then the cheat buffer will be returned.
+-- @function [parent=#Misc] cheatBuffer
+-- @param #string cheatBufferText Sets the current cheat buffer text.
+-- @return #string A copy of the cheat string buffer.
+
+-------------------------------------------------------------------------------
+-- Returns a list of files in the given path.
+-- The paths starts from the SMBX-Directory.
+-- If path is an empty string, then the files in the SMBX-Directory are returned.
+-- @function [parent=#Misc] listFiles
+-- @param #string path The relative or absolute path to the files to be listed. If this argument is an empty string then the SMBX root directory is listed and returned.
+-- @return #table The files in the directory. (Does not contain the full path)
+
+-------------------------------------------------------------------------------
+-- Returns a list of files in the given path.
+-- The paths starts from the custom folder of the level (when in a level) or the current episode folder (when in the overworld).
+-- If path is an empty string, then the files in the custom folder (or episode folder when in overworld) are returned.
+-- If you want to access the episode folder from the level code you can use Misc.listLocalFiles("..").
+-- @function [parent=#Misc] listLocalFiles
+-- @param #string path The relative or absolute path to the files to be listed.
+-- @return #table The files in the directory. (Does not contain the full path)
+
+
+return nil
diff --git a/luadoc/NPC.doclua b/luadoc/NPC.doclua
new file mode 100644
index 000000000..273a3168c
--- /dev/null
+++ b/luadoc/NPC.doclua
@@ -0,0 +1,112 @@
+-------------------------------------------------------------------------------
+-- @module NPC
+
+-------------------------------------------------------------------------------
+-- Gets or sets a value of the SMBX Memory by the offset of the SMBX NPC struct.
+-- If you write the third parameter, then you will set the value.
+-- Example of setting a field with mem:
+--
+-- myNPC:mem(0xE2, FIELD_WORD, 77)
+--
+-- Example of getting the value of a field with mem:
+--
+-- local npcID = myNPC:mem(0xE2, FIELD_WORD)
+--
+-- @function [parent=#NPC] mem
+-- @param self
+-- @param #number address The Memory offset of the struct to fetch or set.
+-- @param #number fieldtype The field type of the value.
+-- @param value If this value is passed, then the value of this memory offset will be set.
+-- @return The value of the struct offset
+
+-------------------------------------------------------------------------------
+-- Returns the amount of NPCs in the level.
+-- @function [parent=#NPC] count
+-- @return #number The number of NPCs in the level.
+
+-------------------------------------------------------------------------------
+-- Returns NPCs of the level.
+-- @function [parent=#NPC] get
+-- @param ids [Optional, use -1 to skip this filter] The ids to be filtered. Can be a single number or a table with numbers of ids to be filtered out.
+-- @param sections [Optional, use -1 to skip this filter] The sections to be filtered. Can be a single number or a table with numbers of ids to be filtered out.
+-- @return #list<#NPC> Returns a table with all NPCs in the level.
+
+-------------------------------------------------------------------------------
+-- Spawns a new NPC.
+-- @function [parent=#NPC] spawn
+-- @param #number npcID The id of the NPC, which should be spawned.
+-- @param #number x The x position of the spawned NPC.
+-- @param #number y The y position of the spawned NPC.
+-- @param #number sectionNumber The section number (0-20) where the NPC belongs to. (Check coordinates).
Note that sectionNumber is from 0-20 (-> Section 1 would be Section 0)
+-- @param #boolean respawn [OPTIONAL] If the npc should keep respawning.
+-- @param #boolean centered [OPTIONAL] If the x, y coordinates represenets the center position of the NPC.
+-- @return #NPC The spawned NPC-Object. This can be used to modify additional behaviour.
+
+-------------------------------------------------------------------------------
+-- @function [parent=#NPC] kill
+-- @param self
+-- @param #number killAnimation [OPTIONAL] If the kill animation should be specific. (For example spin-jump kill)
Default value is 1.
+
+-------------------------------------------------------------------------------
+-- The id of the NPC.
+-- @field [parent=#NPC] #number id
+
+-------------------------------------------------------------------------------
+-- The x coordinate of the NPC.
+-- @field [parent=#NPC] #number x
+
+-------------------------------------------------------------------------------
+-- The y coordinate of the NPC.
+-- @field [parent=#NPC] #number y
+
+-------------------------------------------------------------------------------
+-- The x-speed of the NPC.
+-- @field [parent=#NPC] #number speedX
+
+-------------------------------------------------------------------------------
+-- The y-speed of the NPC.
+-- @field [parent=#NPC] #number speedY
+
+-------------------------------------------------------------------------------
+-- The direction of the NPC.
+-- Setting the direction of a npc, resets the momentum of the npc.
+-- You can modify the speedX value if you want to set your own momentum.
+-- @field [parent=#NPC] #number direction
+
+-------------------------------------------------------------------------------
+-- The message of the npc.
+-- @field [parent=#NPC] VBStr#VBStr msg
+
+-------------------------------------------------------------------------------
+-- [READONLY] The attached layer.
+-- @field [parent=#NPC] VBStr#VBStr attachedLayerName
+
+-------------------------------------------------------------------------------
+-- [READONLY] The event name of the activate-event.
+-- @field [parent=#NPC] VBStr#VBStr activateEventName
+
+-------------------------------------------------------------------------------
+-- [READONLY] The event name of the death-event.
+-- @field [parent=#NPC] VBStr#VBStr deathEventName
+
+-------------------------------------------------------------------------------
+-- [READONLY] The event name of the "No more objects in layer"-event.
+-- @field [parent=#NPC] VBStr#VBStr noMoreObjInLayer
+
+-------------------------------------------------------------------------------
+-- [READONLY] The event name of the talk-event.
+-- @field [parent=#NPC] VBStr#VBStr talkEventName
+
+-------------------------------------------------------------------------------
+-- [READONLY] The layer name of the npc.
+-- @field [parent=#NPC] VBStr#VBStr layerName
+
+-------------------------------------------------------------------------------
+-- [READONLY] The layer object of the npc.
+-- @field [parent=#NPC] Layer#Layer layerObj
+
+-------------------------------------------------------------------------------
+-- [READONLY] The attached layer object.
+-- @field [parent=#NPC] Layer#Layer attachedLayerObj
+
+return nil
diff --git a/luadoc/Player.doclua b/luadoc/Player.doclua
new file mode 100644
index 000000000..72e4b443a
--- /dev/null
+++ b/luadoc/Player.doclua
@@ -0,0 +1,82 @@
+-------------------------------------------------------------------------------
+-- @module Player
+
+-------------------------------------------------------------------------------
+-- Gets or sets a value of the SMBX Memory by the offset of the SMBX Player struct.
+-- If you write the third parameter, then you will set the value.
+-- Example of setting a field with mem:
+--
+-- myNPC:mem(0x16, FIELD_WORD, 3)
+--
+-- Example of getting the value of a field with mem:
+--
+-- local heartsOfPlayer = myNPC:mem(0x16, FIELD_WORD)
+--
+-- @function [parent=#Player] mem
+-- @param self
+-- @param #number address The Memory offset of the struct to fetch or set.
+-- @param #number fieldtype The field type of the value.
+-- @param value If this value is passed, then the value of this memory offset will be set.
+-- @return The value of the struct offset
+
+
+-------------------------------------------------------------------------------
+-- Kills the player.
+-- @function [parent=#Player] kill
+-- @param self
+
+-------------------------------------------------------------------------------
+-- Harms the player.
+-- If this is the player's last hp (either small or only one heart) then the player will be killed.
+-- @function [parent=#Player] harm
+-- @param self
+
+-------------------------------------------------------------------------------
+-- The x coordinate of the Player.
+-- @field [parent=#Player] #number x
+
+-------------------------------------------------------------------------------
+-- The y coordinate of the Player.
+-- @field [parent=#Player] #number y
+
+-------------------------------------------------------------------------------
+-- The x-speed of the Player.
+-- @field [parent=#Player] #number speedX
+
+-------------------------------------------------------------------------------
+-- The y-speed of the Player.
+-- @field [parent=#Player] #number speedY
+
+-------------------------------------------------------------------------------
+-- Returns the distances from the player's coordinates to the screen boundaries of player camera.
+-- Note that this means width is 'right' + 'left', and not 'right' - 'left', etc.
+-- @field [parent=#Player] RECT#RECT screen
+
+-------------------------------------------------------------------------------
+-- The current section number of the player.
+-- @field [parent=#Player] #number section
+
+-------------------------------------------------------------------------------
+-- The current section object of the player.
+-- @field [parent=#Player] Section#Section sectionObj
+
+-------------------------------------------------------------------------------
+-- The current powerup state the player is in.
+-- @field [parent=#Player] #number powerup
+
+
+-------------------------------------------------------------------------------
+-- The npc-id in the powerup box of the player.
+-- @field [parent=#Player] #number reservePowerup
+
+-------------------------------------------------------------------------------
+-- The npc which the player is holding.
+-- If the player holds nothing then nil is returned.
+-- @field [parent=#Player] NPC#NPC holdingNPC
+
+-------------------------------------------------------------------------------
+-- Checks if the player is acutally valid.
+-- With this method you can check if a second player is in the level.
+-- @field [parent=#Player] #boolean isValid
+
+return nil
diff --git a/luadoc/RECT.doclua b/luadoc/RECT.doclua
new file mode 100644
index 000000000..d956e35d7
--- /dev/null
+++ b/luadoc/RECT.doclua
@@ -0,0 +1,18 @@
+-------------------------------------------------------------------------------
+-- @module RECT
+
+-------------------------------------------------------------------------------
+-- @field [parent=#RECT] #number bottom
+
+-------------------------------------------------------------------------------
+-- @field [parent=#RECT] #number left
+
+-------------------------------------------------------------------------------
+-- @field [parent=#RECT] #number right
+
+-------------------------------------------------------------------------------
+-- @field [parent=#RECT] #number top
+
+
+
+return nil
diff --git a/luadoc/Text.doclua b/luadoc/Text.doclua
new file mode 100644
index 000000000..c608da393
--- /dev/null
+++ b/luadoc/Text.doclua
@@ -0,0 +1,29 @@
+-------------------------------------------------------------------------------
+-- This namespace provides functions for displaying Text and messages.
+-- @module Text
+
+-------------------------------------------------------------------------------
+-- Writes debugText in a message box and shows it to the user.
+-- @function [parent=#Text] windowDebug
+-- @param #string debugText The text which should be displayed on the MessageBox.
+
+-------------------------------------------------------------------------------
+-- Prints text at x, y with font-type type
+-- @function [parent=#Text] print
+-- @param #string text The text which should be drawn.
+-- @param #number type The text-style which should be draw.
+-- @param #number x The x coordinate
+-- @param #number y The y cooridnate
+
+-------------------------------------------------------------------------------
+-- Displays a SMBX Message Box.
+-- @function [parent=#Text] showMessageBox
+-- @param #string text The text which should be displayed in the message box.
+
+
+
+
+
+
+
+return nil
diff --git a/luadoc/VBStr.doclua b/luadoc/VBStr.doclua
new file mode 100644
index 000000000..9b9966838
--- /dev/null
+++ b/luadoc/VBStr.doclua
@@ -0,0 +1,19 @@
+-------------------------------------------------------------------------------
+-- This class contains a reference to a SMBX String.
+-- The name "VB" comes from the orignal Development Enviroment "Visual Basic 6".
+-- @module VBStr
+
+-------------------------------------------------------------------------------
+-- @field [parent=#VBStr] #string str The stored string.
+
+-------------------------------------------------------------------------------
+-- @field [parent=#VBStr] #number length The length of the string
+
+-------------------------------------------------------------------------------
+-- @function [parent=#VBStr] clear
+-- @param self
+
+
+
+
+return nil
diff --git a/luadoc/Warp.doclua b/luadoc/Warp.doclua
new file mode 100644
index 000000000..efede70c1
--- /dev/null
+++ b/luadoc/Warp.doclua
@@ -0,0 +1,52 @@
+-------------------------------------------------------------------------------
+-- @module Warp
+
+-------------------------------------------------------------------------------
+-- Gets or sets a value of the SMBX Memory by the offset of the SMBX Warp struct.
+-- If you write the third parameter, then you will set the value.
+-- Example of setting a field with mem:
+--
+-- myWarp:mem(0x7C, FIELD_WORD, 3)
+--
+-- Example of getting the value of a field with mem:
+--
+-- local warpNumber = myWarp:mem(0x7C, FIELD_WORD)
+--
+-- @function [parent=#Player] mem
+-- @param self
+-- @param #number address The Memory offset of the struct to fetch or set.
+-- @param #number fieldtype The field type of the value.
+-- @param value If this value is passed, then the value of this memory offset will be set.
+-- @return The value of the struct offset
+
+-------------------------------------------------------------------------------
+-- Returns the amount of Warps in the level.
+-- @function [parent=#Warp] count
+-- @return #number The number of running Effects in the level.
+
+-------------------------------------------------------------------------------
+-- Returns all Warps of the level.
+-- @function [parent=#Warp] get
+-- @return #list<#Warp> Returns a table with all Effects in the level.
+
+-------------------------------------------------------------------------------
+-- The x cooridate of the entrance.
+-- @field [parent=#Warp] #number entranceX
+
+-------------------------------------------------------------------------------
+-- The y cooridate of the entrance.
+-- @field [parent=#Warp] #number entranceY
+
+-------------------------------------------------------------------------------
+-- The x cooridate of the exit.
+-- @field [parent=#Warp] #number exitX
+
+-------------------------------------------------------------------------------
+-- The y cooridate of the exit.
+-- @field [parent=#Warp] #number exitY
+
+-------------------------------------------------------------------------------
+-- The level filename of the warp.
+-- @field [parent=#Warp] #string levelFilename
+
+return nil
diff --git a/luadoc/World.doclua b/luadoc/World.doclua
new file mode 100644
index 000000000..387d1a6d7
--- /dev/null
+++ b/luadoc/World.doclua
@@ -0,0 +1,84 @@
+-------------------------------------------------------------------------------
+-- @module World
+
+-------------------------------------------------------------------------------
+-- Gets or sets a value of the SMBX Memory by the offset of the SMBX world struct.
+-- If you write the third parameter, then you will set the value.
+-- Example of setting a field with mem:
+--
+-- world:mem(0x64, FIELD_DOUBLE, 10)
+--
+-- Example of getting the value of a field with mem:
+--
+-- local playerPosX = world:mem(0x64, FIELD_DOUBLE)
+--
+-- @function [parent=#global] mem
+-- @param self
+-- @param #number address The Memory offset of the struct to fetch or set.
+-- @param #number fieldtype The field type of the value.
+-- @param value If this value is passed, then the value of this memory address will be set.
+-- @return The value of the struct offset
+
+
+-------------------------------------------------------------------------------
+-- The x coordinate of the player on the world map.
+-- @field [parent=#World] #number playerX
+
+-------------------------------------------------------------------------------
+-- The y coordinate of the player on the world map.
+-- @field [parent=#World] #number playerY
+
+-------------------------------------------------------------------------------
+-- Gets/Sets the current walking direction.
+-- Following walking direction values:
+-- 0 - Idle
+-- 1 - Walking Up
+-- 2 - Walking Left
+-- 3 - Walking Down
+-- 4 - Walking Right
+-- @field [parent=#World] #number playerWalkingDirection
+
+-------------------------------------------------------------------------------
+-- Gets/Sets the current walking timer.
+-- This value will increment from 0 to 32 by 2 each frame.
+-- It is an indicator if the player reached the tile.
+-- If the value is 32 then the player reached the tile.
+-- @field [parent=#World] #number playerWalkingTimer
+
+-------------------------------------------------------------------------------
+-- Gets/Sets the current walking frame.
+-- Following frame values:
+-- 0 or 1 - Walking Frames Down
+-- 2 or 3 - Walking Frames Right
+-- 4 or 5 - Walking Frames Left
+-- 6 or 7 - Walking Frames Up
+-- @field [parent=#World] #number playerWalkingFrame
+
+-------------------------------------------------------------------------------
+-- Gets/Sets the current walking frame timer.
+-- This value will increment from 0 to 8 by 1 each frame.
+-- If the value is 8 then the playerWalkingFrame is swapped.
+-- For example: If walking down and the value is 0 then the value will be chaged to 1.
+-- @field [parent=#World] #number playerWalkingFrameTimer
+
+-------------------------------------------------------------------------------
+-- If the player is currently walking/moving the this field is set to true. Otherwise the field is set to false
+-- @field [parent=#World] #boolean playerIsCurrentWalking
+
+-------------------------------------------------------------------------------
+-- If the player stands under a level the level title will be returned. Otherwise nil is returned.
+-- @field [parent=#World] VBStr#VBStr levelTitle
+
+-------------------------------------------------------------------------------
+-- Similar to world.playerWalkingDirection but does return the direction values even if the player is not walking.
+-- Following walking direction values:
+-- 1 - Looking Up
+-- 2 - Looking Left
+-- 3 - Looking Down
+-- 4 - Looking Right
+-- @field [parent=#World] #number playerCurrentDirection
+
+
+
+
+return nil
diff --git a/luadoc/global.doclua b/luadoc/global.doclua
new file mode 100644
index 000000000..832a0423c
--- /dev/null
+++ b/luadoc/global.doclua
@@ -0,0 +1,168 @@
+-------------------------------------------------------------------------------
+-- @module global
+
+
+-- Values:
+
+
+
+-- TODO Hardcoded funcs/fields
+-- -- Fields
+
+-------------------------------------------------------------------------------
+--
+
+-- -- Functions
+
+-------------------------------------------------------------------------------
+-- Creates a new RECT-struct. This class can hold integer values for left, right, bottom and top.
+-- @function [parent=#global] newRECT
+-- @return RECT#RECT A new RECT-Struct
+
+-------------------------------------------------------------------------------
+--Creates a new RECT-struct. This class can hold double values for left, right, bottom and top.
+-- @function [parent=#global] newRECTd
+-- @return RECT#RECT A new RECTd-Struct
+
+
+
+-- Hardcoded namespaces
+
+-------------------------------------------------------------------------------
+-- This namespace contains text functions for SMBX.
+-- @field[parent = #global] Text#Text Text
+
+-------------------------------------------------------------------------------
+-- This namespace contains level functions for SMBX. [Level only]
+-- @field[parent = #global] Level#Level Level
+
+-------------------------------------------------------------------------------
+-- This namespace contains misc. functions for SMBX.
+-- @field[parent = #global] Misc#Misc Misc
+
+-------------------------------------------------------------------------------
+-- This namespace contains graphics functions for SMBX.
+-- @field[parent = #global] Graphics#Graphics Graphics
+
+-- Hardcoded classes
+-- -- SMBX Classes
+
+-------------------------------------------------------------------------------
+-- This is the class for interacting with the SMBX Block.
+-- @field[parent = #global] Block#Block Block
+
+-------------------------------------------------------------------------------
+-- This is the class for interacting with the SMBX BGO.
+-- @field[parent = #global] BGO#BGO BGO
+
+-------------------------------------------------------------------------------
+-- This is the class for interacting with the SMBX NPC.
+-- @field[parent = #global] NPC#NPC NPC
+
+-------------------------------------------------------------------------------
+-- This is the class for interacting with the SMBX Effects.
+-- @field[parent = #global] Animation#Animation Animation
+
+-------------------------------------------------------------------------------
+-- This is the class for interacting with the SMBX Layer.
+-- @field[parent = #global] Layer#Layer Layer
+
+-------------------------------------------------------------------------------
+-- This is the class for interacting with the SMBX Warp.
+-- @field[parent = #global] Warp#Warp Warp
+
+-------------------------------------------------------------------------------
+-- This is a pre-defined field for the player.
+-- @field [parent=#global] Player#Player player
+
+-------------------------------------------------------------------------------
+-- This is a pre-defined field for the overworld.
+-- @field [parent=#global] World#World world
+
+
+
+-------------------------------------------------------------------------------
+-- This is a pre-defined field for the second player.
+-- Please note that this field is not set in single player.
+
+
+-- -- Misc Classes
+
+-------------------------------------------------------------------------------
+-- With this class you can share Data between levels, worlds and even episodes.
+-- @field [parent=#global] Data#Data Data
+
+
+
+
+
+-- Hardcoded funcs
+
+-------------------------------------------------------------------------------
+-- Gets or sets a value of the SMBX Memory.
+-- If you write the third parameter, then you will set the value.
+-- Example of setting a field with mem:
+--
+-- mem(0x00B2C5AC, FIELD_WORD, 10)
+--
+-- Example of getting the value of a field with mem:
+--
+-- local lifes = mem(0x00B2C5AC, FIELD_WORD)
+--
+-- @function [parent=#global] mem
+-- @param #number address The Address of the value to fetch or set.
+-- @param #number fieldtype The field type of the value.
+-- @param value If this value is passed, then the value of this memory address will be set.
+-- @return The value of the address
+
+
+
+
+
+
+-- Softcoded funcs/fields
+
+-------------------------------------------------------------------------------
+-- Register an event. ONLY FOR API MODULES
+-- @function [parent=#global] registerEvent
+-- @param #table apiTable The api table itself, where the event will be executed.
+-- @param #string event The event to be hooked to.
+-- @param #string eventHandler The function name which should be called. Default value is the event name.
+-- @param #boolean beforeMainCall True, if the event should be called before the main calls. Default value is true.
+
+-------------------------------------------------------------------------------
+-- Unregister an event. ONLY FOR API MODULES
+-- @function [parent=#global] unregisterEvent
+-- @param #table apiTable The api table itself, where the event is executed.
+-- @param #string event The eventname of the hooked function.
+-- @param #string eventHandler The function name which is called. Default value is the event name.
+
+-------------------------------------------------------------------------------
+-- Loads the given API.
+--
+-- Following paths will be checked for an API:
+--