more cleanup

This commit is contained in:
Connor Olding 2017-09-09 19:46:35 +00:00
parent 01d7e5e230
commit c76ec6a87c

View file

@ -265,7 +265,7 @@ local function normalize_wrt(x, s, out)
return out return out
end end
-- game-agnostic stuff (i.e. the network itself) -- network parameters.
package.loaded['nn'] = nil -- DEBUG package.loaded['nn'] = nil -- DEBUG
local nn = require("nn") local nn = require("nn")
@ -302,9 +302,8 @@ end
-- and here we go with the game stuff. -- and here we go with the game stuff.
--[[ -- disassembly used for reference:
https://gist.githubusercontent.com/1wErt3r/4048722/raw/59e88c0028a58c6d7b9156749230ccac647bc7d4/SMBDIS.ASM -- https://gist.githubusercontent.com/1wErt3r/4048722/raw/59e88c0028a58c6d7b9156749230ccac647bc7d4/SMBDIS.ASM
--]]
local rotation_offsets = { -- FIXME: not all of these are pixel-perfect. local rotation_offsets = { -- FIXME: not all of these are pixel-perfect.
0, -40, -- 0 0, -40, -- 0
@ -553,6 +552,8 @@ local function handle_tiles()
end end
end end
-- learning and evaluation.
local function prepare_epoch() local function prepare_epoch()
print('preparing epoch '..tostring(epoch_i)..'.') print('preparing epoch '..tostring(epoch_i)..'.')
base_params = network:collect() base_params = network:collect()
@ -708,7 +709,6 @@ local function do_reset()
screen_scroll_delta = 0 screen_scroll_delta = 0
emu.frameadvance() -- prevents emulator from quirking up. emu.frameadvance() -- prevents emulator from quirking up.
--print()
load_next_trial() load_next_trial()
reset = false reset = false
@ -728,16 +728,13 @@ local function init()
if res == false then print(err) end if res == false then print(err) end
end end
init()
local dummy_softmax_values = {0, 0}
local function doit(dummy) local function doit(dummy)
local ingame_paused = get_state() == "paused" local ingame_paused = get_state() == "paused"
-- every few frames mario stands still, forcibly decrease the timer. -- every few frames mario stands still, forcibly decrease the timer.
-- this includes having the game paused. -- this includes having the game paused.
-- TODO: more robust. doesn't detect moonwalking against a wall. -- TODO: more robust. doesn't detect moonwalking against a wall.
-- well, that shouldn't happen anymore now that i've disabled left+right.
local timer = get_timer() local timer = get_timer()
if ingame_paused or random() > 1 - timer_loser and R(0x1D) == 0 and R(0x57) == 0 then if ingame_paused or random() > 1 - timer_loser and R(0x1D) == 0 and R(0x57) == 0 then
timer = timer - 1 timer = timer - 1
@ -764,8 +761,7 @@ local function doit(dummy)
empty(tile_input) empty(tile_input)
empty(extra_input) empty(extra_input)
-- player -- TODO: check if mario is in a playable state.
-- TODO: check if mario is playable.
local x, y = getxy(0, 0x86, 0xCE, 0x6D, 0xB5) local x, y = getxy(0, 0x86, 0xCE, 0x6D, 0xB5)
local powerup = R(0x754) local powerup = R(0x754)
local status = R(0x756) local status = R(0x756)
@ -800,10 +796,7 @@ local function doit(dummy)
if not ingame_paused then reward = reward + reward_delta end if not ingame_paused then reward = reward + reward_delta end
--gui.text(4, 12, ("%02X"):format(#sprite_input), '#FFFFFF', '#0000003F')
--gui.text(4, 22, ("%02X"):format(#tile_input), '#FFFFFF', '#0000003F')
--gui.text(72, 12, ("%+4i"):format(reward_delta), '#FFFFFF', '#0000003F') --gui.text(72, 12, ("%+4i"):format(reward_delta), '#FFFFFF', '#0000003F')
--gui.text(112, 12, ("%+4i"):format(reward), '#FFFFFF', '#0000003F')
gui.text(96, 16, ("%+4i"):format(reward), '#FFFFFF', '#0000003F') gui.text(96, 16, ("%+4i"):format(reward), '#FFFFFF', '#0000003F')
if get_state() == 'dead' and state_old ~= 'dead' then if get_state() == 'dead' and state_old ~= 'dead' then
@ -811,6 +804,7 @@ local function doit(dummy)
if R(0x75A, 0) == 0 then reset = true end if R(0x75A, 0) == 0 then reset = true end
end end
if get_state() == 'lose' then if get_state() == 'lose' then
-- this shouldn't happen if we catch the deaths as above.
print("ran out of lives.") print("ran out of lives.")
reset = true reset = true
end end
@ -867,6 +861,8 @@ local function doit(dummy)
score_old = get_score() score_old = get_score()
end end
init()
while true do while true do
gui.text(4, 12, get_state(), '#FFFFFF', '#0000003F') gui.text(4, 12, get_state(), '#FFFFFF', '#0000003F')