Add files via upload
This commit is contained in:
parent
46428eecd2
commit
f078b7babe
17 changed files with 99414 additions and 0 deletions
BIN
neat-mario/DP1.State
Normal file
BIN
neat-mario/DP1.State
Normal file
Binary file not shown.
7348
neat-mario/DP1.state.pool
Normal file
7348
neat-mario/DP1.state.pool
Normal file
File diff suppressed because it is too large
Load diff
7288
neat-mario/backup.0
Normal file
7288
neat-mario/backup.0
Normal file
File diff suppressed because it is too large
Load diff
7348
neat-mario/backup.0.DP1.state.pool
Normal file
7348
neat-mario/backup.0.DP1.state.pool
Normal file
File diff suppressed because it is too large
Load diff
7645
neat-mario/backup.1.DP1.state.pool
Normal file
7645
neat-mario/backup.1.DP1.state.pool
Normal file
File diff suppressed because it is too large
Load diff
7762
neat-mario/backup.2.DP1.state.pool
Normal file
7762
neat-mario/backup.2.DP1.state.pool
Normal file
File diff suppressed because it is too large
Load diff
7938
neat-mario/backup.3.DP1.state.pool
Normal file
7938
neat-mario/backup.3.DP1.state.pool
Normal file
File diff suppressed because it is too large
Load diff
8211
neat-mario/backup.4.DP1.state.pool
Normal file
8211
neat-mario/backup.4.DP1.state.pool
Normal file
File diff suppressed because it is too large
Load diff
8543
neat-mario/backup.5.DP1.state.pool
Normal file
8543
neat-mario/backup.5.DP1.state.pool
Normal file
File diff suppressed because it is too large
Load diff
9011
neat-mario/backup.6.DP1.state.pool
Normal file
9011
neat-mario/backup.6.DP1.state.pool
Normal file
File diff suppressed because it is too large
Load diff
9543
neat-mario/backup.7.DP1.state.pool
Normal file
9543
neat-mario/backup.7.DP1.state.pool
Normal file
File diff suppressed because it is too large
Load diff
10184
neat-mario/backup.8.DP1.state.pool
Normal file
10184
neat-mario/backup.8.DP1.state.pool
Normal file
File diff suppressed because it is too large
Load diff
39
neat-mario/config.lua
Normal file
39
neat-mario/config.lua
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
local _M = {}
|
||||||
|
|
||||||
|
_M.NeatConfig = {
|
||||||
|
Filename = "DP1.state",
|
||||||
|
Population = 300,
|
||||||
|
DeltaDisjoint = 2.0,
|
||||||
|
DeltaWeights = 0.4,
|
||||||
|
DeltaThreshold = 1.0,
|
||||||
|
StaleSpecies = 15,
|
||||||
|
MutateConnectionsChance = 0.25,
|
||||||
|
PerturbChance = 0.90,
|
||||||
|
CrossoverChance = 0.75,
|
||||||
|
LinkMutationChance = 2.0,
|
||||||
|
NodeMutationChance = 0.50,
|
||||||
|
BiasMutationChance = 0.40,
|
||||||
|
StepSize = 0.1,
|
||||||
|
DisableMutationChance = 0.4,
|
||||||
|
EnableMutationChance = 0.2,
|
||||||
|
TimeoutConstant = 20,
|
||||||
|
MaxNodes = 1000000,
|
||||||
|
}
|
||||||
|
|
||||||
|
_M.ButtonNames = {
|
||||||
|
"A",
|
||||||
|
"B",
|
||||||
|
"X",
|
||||||
|
"Y",
|
||||||
|
"Up",
|
||||||
|
"Down",
|
||||||
|
"Left",
|
||||||
|
"Right",
|
||||||
|
}
|
||||||
|
|
||||||
|
_M.BoxRadius = 6
|
||||||
|
_M.InputSize = (_M.BoxRadius*2+1)*(_M.BoxRadius*2+1)
|
||||||
|
|
||||||
|
_M.Running = false
|
||||||
|
|
||||||
|
return _M
|
96
neat-mario/game.lua
Normal file
96
neat-mario/game.lua
Normal file
|
@ -0,0 +1,96 @@
|
||||||
|
--Notes here
|
||||||
|
config = require "config"
|
||||||
|
local _M = {}
|
||||||
|
function _M.getPositions()
|
||||||
|
marioX = memory.read_s16_le(0x94)
|
||||||
|
marioY = memory.read_s16_le(0x96)
|
||||||
|
|
||||||
|
local layer1x = memory.read_s16_le(0x1A);
|
||||||
|
local layer1y = memory.read_s16_le(0x1C);
|
||||||
|
|
||||||
|
screenX = marioX-layer1x
|
||||||
|
screenY = marioY-layer1y
|
||||||
|
end
|
||||||
|
|
||||||
|
function _M.getTile(dx, dy)
|
||||||
|
x = math.floor((marioX+dx+8)/16)
|
||||||
|
y = math.floor((marioY+dy)/16)
|
||||||
|
|
||||||
|
return memory.readbyte(0x1C800 + math.floor(x/0x10)*0x1B0 + y*0x10 + x%0x10)
|
||||||
|
end
|
||||||
|
|
||||||
|
function _M.getSprites()
|
||||||
|
local sprites = {}
|
||||||
|
for slot=0,11 do
|
||||||
|
local status = memory.readbyte(0x14C8+slot)
|
||||||
|
if status ~= 0 then
|
||||||
|
spritex = memory.readbyte(0xE4+slot) + memory.readbyte(0x14E0+slot)*256
|
||||||
|
spritey = memory.readbyte(0xD8+slot) + memory.readbyte(0x14D4+slot)*256
|
||||||
|
sprites[#sprites+1] = {["x"]=spritex, ["y"]=spritey}
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return sprites
|
||||||
|
end
|
||||||
|
|
||||||
|
function _M.getExtendedSprites()
|
||||||
|
local extended = {}
|
||||||
|
for slot=0,11 do
|
||||||
|
local number = memory.readbyte(0x170B+slot)
|
||||||
|
if number ~= 0 then
|
||||||
|
spritex = memory.readbyte(0x171F+slot) + memory.readbyte(0x1733+slot)*256
|
||||||
|
spritey = memory.readbyte(0x1715+slot) + memory.readbyte(0x1729+slot)*256
|
||||||
|
extended[#extended+1] = {["x"]=spritex, ["y"]=spritey}
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return extended
|
||||||
|
end
|
||||||
|
|
||||||
|
function _M.getInputs()
|
||||||
|
_M.getPositions()
|
||||||
|
|
||||||
|
sprites = _M.getSprites()
|
||||||
|
extended = _M.getExtendedSprites()
|
||||||
|
|
||||||
|
local inputs = {}
|
||||||
|
|
||||||
|
for dy=-config.BoxRadius*16,config.BoxRadius*16,16 do
|
||||||
|
for dx=-config.BoxRadius*16,config.BoxRadius*16,16 do
|
||||||
|
inputs[#inputs+1] = 0
|
||||||
|
|
||||||
|
tile = _M.getTile(dx, dy)
|
||||||
|
if tile == 1 and marioY+dy < 0x1B0 then
|
||||||
|
inputs[#inputs] = 1
|
||||||
|
end
|
||||||
|
|
||||||
|
for i = 1,#sprites do
|
||||||
|
distx = math.abs(sprites[i]["x"] - (marioX+dx))
|
||||||
|
disty = math.abs(sprites[i]["y"] - (marioY+dy))
|
||||||
|
if distx <= 8 and disty <= 8 then
|
||||||
|
inputs[#inputs] = -1
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
for i = 1,#extended do
|
||||||
|
distx = math.abs(extended[i]["x"] - (marioX+dx))
|
||||||
|
disty = math.abs(extended[i]["y"] - (marioY+dy))
|
||||||
|
if distx < 8 and disty < 8 then
|
||||||
|
inputs[#inputs] = -1
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return inputs
|
||||||
|
end
|
||||||
|
|
||||||
|
function _M.clearJoypad()
|
||||||
|
controller = {}
|
||||||
|
for b = 1,#config.ButtonNames do
|
||||||
|
controller["P1 " .. config.ButtonNames[b]] = false
|
||||||
|
end
|
||||||
|
joypad.set(controller)
|
||||||
|
end
|
||||||
|
|
||||||
|
return _M
|
1101
neat-mario/mario-neat.lua
Normal file
1101
neat-mario/mario-neat.lua
Normal file
File diff suppressed because it is too large
Load diff
9
neat-mario/mathFunctions.lua
Normal file
9
neat-mario/mathFunctions.lua
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
--Notes here
|
||||||
|
|
||||||
|
local _M = {}
|
||||||
|
|
||||||
|
function _M.sigmoid(x)
|
||||||
|
return 2/(1+math.exp(-4.9*x))-1
|
||||||
|
end
|
||||||
|
|
||||||
|
return _M
|
7348
neat-mario/temp.pool
Normal file
7348
neat-mario/temp.pool
Normal file
File diff suppressed because it is too large
Load diff
Loading…
Add table
Reference in a new issue