Well, the line to which you are referring is:
@cache[path] = Bitmap.new(path) unless include?(path)
It would throw a type error if path weren't a string, and it would tell you the file wasn't found if it was a missing file, so my best guess is still that it is an unreadable file. Maybe something corrupted a file when you did the move, even if there was no editing?
For now, try putting the following line directly above the previous mentioned line:
msgbox(path)
The method will look like this:
def self.normal_bitmap(path)
msgbox(path)
@cache[path] = Bitmap.new(path) unless include?(path)
@cache[path]
end
Now run the game. You should get a couple message boxes popping up with the location and names of files being loaded. You can ignore all of them except the box that immediately precedes the error.
It will give you something like:
Graphics/Folder/Picture
Open up that folder and make sure that (a) there is only one copy of Picture; and (b) that it is a .png.
Once you've fixed it, you can delete the msgbox line.