mirror of
https://github.com/chocolate-doom/research.git
synced 2024-11-25 21:42:02 +00:00
c69b00ee9f
Subversion-branch: /research Subversion-revision: 1905
58 lines
920 B
Ruby
Executable file
58 lines
920 B
Ruby
Executable file
#!/usr/bin/env ruby
|
|
#
|
|
# Generate the table of offsets for different action pointers
|
|
# in the different Heretic versions.
|
|
#
|
|
|
|
require "common.rb"
|
|
|
|
def action_func_names
|
|
names = {}
|
|
|
|
for config in CONFIGS
|
|
config::ACTION_POINTERS.each_value do |name|
|
|
names[name] = true
|
|
end
|
|
end
|
|
|
|
names.keys
|
|
end
|
|
|
|
def get_func_offset(config, name)
|
|
config::ACTION_POINTERS.each_pair do |offset, funcname|
|
|
if name == funcname
|
|
return offset
|
|
end
|
|
end
|
|
|
|
0
|
|
end
|
|
|
|
def func_offsets(name)
|
|
CONFIGS.map do |config|
|
|
get_func_offset(config, name)
|
|
end
|
|
end
|
|
|
|
def format_func_offsets(offsets)
|
|
formatted = offsets.map do |offset|
|
|
sprintf("%6i", offset)
|
|
end
|
|
|
|
"{ " + formatted.join(", ") + " }"
|
|
end
|
|
|
|
puts "static hhe_action_pointer_t action_pointers[] ="
|
|
puts "{"
|
|
|
|
for name in action_func_names.sort
|
|
offsets = func_offsets(name)
|
|
print " { "
|
|
print format_func_offsets(offsets) + ", "
|
|
print name
|
|
print " },\n"
|
|
end
|
|
|
|
puts "};"
|
|
puts
|
|
|