Class: RubyGS::SaveFileReader
- Inherits:
-
Object
- Object
- RubyGS::SaveFileReader
- Defined in:
- lib/ruby_gs/save_file_reader.rb
Class Method Summary collapse
-
.calc_checksums(file) ⇒ Object
DEPRECATED: Calculates the checksum values for both regions within a save file.
-
.correct_checksums!(file) ⇒ Object
Calculates the checksum values within a save file and writes them to the save file.
-
.read(file) ⇒ Object
Reads a .sav file and builds a SaveFile object from its data.
Class Method Details
.calc_checksums(file) ⇒ Object
DEPRECATED: Calculates the checksum values for both regions within a save file.
18 19 20 21 22 23 24 25 26 |
# File 'lib/ruby_gs/save_file_reader.rb', line 18 def self.calc_checksums(file) warn "[DEPRECATION] SaveFileReader::calc_checksums is deprecated. Please use SaveFileReader::correct_checksums! instead." file.pos = 0 content = file.read.split("").map(&:ord) c1 = content[0x2009..0x2D68].reduce(&:+) c2 = content[0x0C6B..0x17EC].reduce(&:+) + content[0x3D96..0x3F3F].reduce(&:+) + content[0x7E39..0x7E6C].reduce(&:+) file.close [c1.to_s(16),c2.to_s(16)] end |
.correct_checksums!(file) ⇒ Object
Calculates the checksum values within a save file and writes them to the save file.
30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/ruby_gs/save_file_reader.rb', line 30 def self.correct_checksums!(file) file.pos = 0 content = file.read.split("").map(&:ord) c1 = content[0x2009..0x2D68].inject(&:+) c2 = content[0x0C6B..0x17EC].inject(&:+) + content[0x3D96..0x3F3F].inject(&:+) + content[0x7E39..0x7E6C].inject(&:+) content[0x2D6A] = (c1 & 0xFF00) >> 8 content[0x2D69] = c1 & 0xFF content[0x7E6E] = (c2 & 0xFF00) >> 8 content[0x7E6D] = c2 & 0xFF file.pos = 0 file.write content.map(&:chr).join("") file.flush file end |
.read(file) ⇒ Object
Reads a .sav file and builds a SaveFile object from its data.
11 12 13 14 |
# File 'lib/ruby_gs/save_file_reader.rb', line 11 def self.read(file) raise "filename cannot be nil" if not file SaveFile.new SaveFileGS.read(File.open(file,"r")), file, true # TODO: Detect whether save belongs to Gold/Silver or Crystal end |