The pixel art looks gorgeous! One minor thing is it may be worthwhile to trigger actions on keydown, instead of keyup -- I believe this is why dashes feel "delayed". I often also accidentally double-jumped by just holding down the jump key, so onKeyDown would solve both problems. These are just nits though -- well-executed game with polish, clear narrative, and great gameplay!