DKC2 Neat from MarI/O
Find a file
2021-03-22 18:53:13 -04:00
doc Added image of donkutil 2021-03-17 06:40:41 -05:00
pool Added Kremcoin save state 2021-03-07 01:04:22 -05:00
.editorconfig Stage rulers. Try to hijack algorithm used to determine tile location 2021-03-03 15:40:19 -05:00
.gitignore Ignore lsvs 2021-03-08 04:58:29 -05:00
config.lua Try to increase the search radius on sprites to eliminate flicker 2021-03-15 16:05:02 -05:00
dkjson.lua Write the pool files in JSON so they break less 2021-03-06 07:37:31 -05:00
donkutil.lua Try to increase the search radius on sprites to eliminate flicker 2021-03-15 16:05:02 -05:00
font.font Add font 2021-03-15 16:05:40 -05:00
game.lua Kill the run the instant the map screen gets loaded 2021-03-16 11:54:54 -05:00
LibDeflate.lua Compress the pool files 2021-03-06 08:53:37 -05:00
mathFunctions.lua Stage rulers. Try to hijack algorithm used to determine tile location 2021-03-03 15:40:19 -05:00
neat-donk.lua Windows shit 2021-03-22 18:53:13 -04:00
README.md wrong repo 2021-03-17 06:42:44 -05:00
spritelist.lua More neutral sprites. Change barrel timeout. 2021-03-16 07:58:28 -05:00
state-test.lua Algorithm works kind of. It figures out how to go forward 2021-03-05 10:10:05 -05:00
util.lua Try to increase the search radius on sprites to eliminate flicker 2021-03-15 16:05:02 -05:00

Donkey Kong Country 2 NEAT

An AI based on SethBling's MarI/O to play Donkey Kong Country 2 with lsnes.

See YouTube for an example run.

Requirements

  • lsnes with Lua 5.2 (do not try to build with 5.3, it does not work!)
  • A Donkey Kong Country 2 1.1 US ROM (matching hash b79c2bb86f6fc76e1fc61c62fc16d51c664c381e58bc2933be643bbc4d8b610c)

Instructions

  1. Start lsnes
  2. Go to Configure -> Settings -> Advanced and change LUA -> Maximum memory use to 1024MB
  3. Load the DKC2 ROM: File -> Load -> ROM...
  4. Load the neat-donk.lua script: Tools -> Run Lua script...
  5. You may also want to turn off sound since it may get annoying. Configure -> Sounds enabled
  6. Look at config.lua for some settings you can change. Not all have been tested, but you should be able to change the number on the _M.Filename = line to get a different state file from the _M.State list.

If you want a better idea of what's going on with the tile and sprite calculations you may want to load donkutil.lua. It will mark the tiles with their offsets on the screen, give a crosshair with tile measurements (every 32 pixels), and list information about the sprites (you can use the 1 and 2 keys above the letter keys to page through them). Sprites labeled in green are considered "good", red is "bad", normal color is neutral. Solid red means that it's the active sprite in the info viewer.

Keys

1: Stop/start

4: Play the best run

6: Save the pool file

8: Load the pool file

9: Restart

Notes

  • Only tested on Pirate Panic
  • The pool files are gzipped json

Credits

TODO

  • Incur penalty for non-hazardous enemy collisions to encourage neutralizing Klobber
  • Make enemies neutral when held? (Klobber, Click-Clack, etc.)