mirror of
https://github.com/n64decomp/banjo-kazooie.git
synced 2024-11-23 04:49:51 +00:00
77 lines
2.8 KiB
Python
77 lines
2.8 KiB
Python
import argparse
|
|
import os
|
|
import re
|
|
import sys
|
|
import csv
|
|
import anybadge
|
|
|
|
# Read using `mips-linux-gnu-readelf -S`
|
|
overlay_sizes = {
|
|
'bk_boot' : (0x5BE0 - 0x1000),
|
|
'core1' : 0x034b70 + 0x003080,
|
|
'core2' : 0x0dc600,
|
|
'CC' : 0x0036b0,
|
|
'MMM' : 0x0055f0,
|
|
'GV' : 0x00a7e0,
|
|
'TTC' : 0x005fc0,
|
|
'MM' : 0x0034a0,
|
|
'BGS' : 0x00a2a0,
|
|
'RBB' : 0x009c60,
|
|
'FP' : 0x00b600,
|
|
'SM' : 0x0046d0,
|
|
'cutscenes' : 0x006f60,
|
|
'lair' : 0x00c8c0,
|
|
'fight' : 0x00af90,
|
|
'CCW' : 0x008760,
|
|
}
|
|
|
|
def RGB_to_hex(RGB):
|
|
''' [255,255,255] -> "#FFFFFF" '''
|
|
# Components need to be integers for hex to make sense
|
|
RGB = [int(x) for x in RGB]
|
|
return "#"+"".join(["0{0:x}".format(v) if v < 16 else
|
|
"{0:x}".format(v) for v in RGB])
|
|
|
|
def main(csv_name, version, overlay):
|
|
with open(csv_name, mode='r') as csv_file:
|
|
csv_reader = csv.DictReader(csv_file)
|
|
line_count = 0
|
|
total_func = 0
|
|
incomplete_func = 0
|
|
if overlay == 'total':
|
|
total_byte = sum(overlay_sizes.values())
|
|
else:
|
|
total_byte = overlay_sizes[overlay]
|
|
incomplete_byte = 0
|
|
for row in csv_reader:
|
|
if(row["version"] == version):
|
|
total_func += 1
|
|
if row['matching'] != 'yes':
|
|
incomplete_func += 1
|
|
incomplete_byte += int(row['length'])
|
|
done_byte = total_byte - incomplete_byte
|
|
done_func = total_func - incomplete_func
|
|
percent = ((done_byte/total_byte) * 100)
|
|
print("%s: bytes: %3.4f%% (%d/%d), nonstatic funcs: %3.4f%% (%d/%d)" % (overlay, percent, done_byte, total_byte,((done_func/total_func) *100), done_func, total_func ))
|
|
green = min(255, round(min(1, (percent / 100) * 2) * 224))
|
|
red = min(255, round(min(1, ((100 - percent) / 100) * 2) * 224))
|
|
color = RGB_to_hex([red, green, 0])
|
|
if overlay == 'total':
|
|
badge = anybadge.Badge("Banjo-Kazooie (us.v10)", "%3.4f%%" % (percent), default_color=color)
|
|
else:
|
|
badge = anybadge.Badge(overlay, "%3.4f%%" % (percent), default_color=color)
|
|
badge.write_badge('progress/progress_' + overlay + '.svg',overwrite=True)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
parser = argparse.ArgumentParser(description='Create progress csv based on map file',
|
|
formatter_class=argparse.RawDescriptionHelpFormatter)
|
|
parser.add_argument('csv_name', type=str,
|
|
help="csv to read")
|
|
parser.add_argument('ver_str', type=str,
|
|
help="version")
|
|
parser.add_argument('overlay', type=str,
|
|
help="overlay name")
|
|
args = parser.parse_args()
|
|
|
|
main(args.csv_name, args.ver_str, args.overlay) |