6.4 update (minus sprites)

This commit is contained in:
infinitefusion
2024-12-21 09:43:11 -05:00
parent f70c2cfde4
commit 1e325366d2
1717 changed files with 140299 additions and 27845 deletions

View File

@@ -980,45 +980,45 @@ class SpriteHash
end
end
# class ByteWriter
# def initialize(filename)
# @file = File.new(filename, "wb")
# end
#
# def <<(*data)
# write(*data)
# end
#
# def write(*data)
# data.each do |e|
# if e.is_a?(Array)
# e.each { |item| write(item) }
# elsif e.is_a?(Numeric)
# @file.putc e
# else
# raise "Invalid data for writing."
# end
# end
# end
#
# def write_int(int)
# self << ByteWriter.to_bytes(int)
# end
#
# def close
# @file.close
# @file = nil
# end
#
# def self.to_bytes(int)
# return [
# (int >> 24) & 0xFF,
# (int >> 16) & 0xFF,
# (int >> 8) & 0xFF,
# int & 0xFF
# ]
# end
# end
class ByteWriter
def initialize(filename)
@file = File.new(filename, "wb")
end
def <<(*data)
write(*data)
end
def write(*data)
data.each do |e|
if e.is_a?(Array)
e.each { |item| write(item) }
elsif e.is_a?(Numeric)
@file.putc e
else
raise "Invalid data for writing."
end
end
end
def write_int(int)
self << ByteWriter.to_bytes(int)
end
def close
@file.close
@file = nil
end
def self.to_bytes(int)
return [
(int >> 24) & 0xFF,
(int >> 16) & 0xFF,
(int >> 8) & 0xFF,
int & 0xFF
]
end
end
class Bitmap
def save_to_png(filename)
@@ -1057,9 +1057,12 @@ class Bitmap
data << px.alpha
end
end
# Zlib deflation
smoldata = Zlib::Deflate.deflate(data.pack("C*")).bytes.map
# data chunk length
smoldata = Zlib::Deflate.deflate(data.pack("C*"))
smoldata = smoldata.bytes
# Data chunk length
f.write_int smoldata.size
# IDAT
f << [0x49, 0x44, 0x41, 0x54]
@@ -1074,9 +1077,11 @@ class Bitmap
f << [0x49, 0x45, 0x4E, 0x44]
# CRC32 checksum
f.write_int Zlib::crc32([0x49, 0x45, 0x4E, 0x44].pack("C*"))
f.close
return nil
end
end
# Stand-alone methods