mirror of
https://gitlab.com/zephray/glider.git
synced 2025-08-02 04:23:38 +00:00
Add tool for converting 5bpp wvfm to 4bpp
This commit is contained in:
parent
1742a77511
commit
51c6e84ec9
1 changed files with 87 additions and 0 deletions
87
utils/waveform_5bpp_to_4bpp/convert.py
Normal file
87
utils/waveform_5bpp_to_4bpp/convert.py
Normal file
|
@ -0,0 +1,87 @@
|
||||||
|
import configparser
|
||||||
|
import argparse
|
||||||
|
import csv
|
||||||
|
import os
|
||||||
|
|
||||||
|
def process_table(fn, newfn):
|
||||||
|
table = {}
|
||||||
|
with open(fn, newline='') as csvfile:
|
||||||
|
csvreader = csv.reader(csvfile, delimiter=',')
|
||||||
|
for row in csvreader:
|
||||||
|
src = row[0]
|
||||||
|
dst = row[1]
|
||||||
|
seq = row[2:-1]
|
||||||
|
table[f'{src}_{dst}'] = seq
|
||||||
|
newtable = {}
|
||||||
|
# We drop all odd numbered entries
|
||||||
|
for src in range(16):
|
||||||
|
for dst in range(16):
|
||||||
|
seq = table[f'{src*2}_{dst*2}']
|
||||||
|
newtable[f'{src}_{dst}'] = seq
|
||||||
|
with open(newfn, 'w') as csvfile:
|
||||||
|
for src in range(16):
|
||||||
|
for dst in range(16):
|
||||||
|
csvfile.write(f'{src},{dst},{','.join(newtable[f'{src}_{dst}'])}\n')
|
||||||
|
|
||||||
|
def main():
|
||||||
|
parser = argparse.ArgumentParser(prog='wvfm_converter')
|
||||||
|
parser.add_argument('filename')
|
||||||
|
args = parser.parse_args()
|
||||||
|
config = configparser.ConfigParser()
|
||||||
|
config.read(args.filename)
|
||||||
|
#print(config.sections())
|
||||||
|
|
||||||
|
version = config['WAVEFORM']['VERSION']
|
||||||
|
if version != '2.0':
|
||||||
|
raise Exception("Unsupported")
|
||||||
|
prefix = config['WAVEFORM']['PREFIX']
|
||||||
|
# name = config['WAVEFORM']['NAME']
|
||||||
|
bpp = int(config['WAVEFORM']['BPP'])
|
||||||
|
if bpp != 5:
|
||||||
|
raise Exception("Input needs to be an 5bpp waveform")
|
||||||
|
modes = int(config['WAVEFORM']['MODES'])
|
||||||
|
temps = int(config['WAVEFORM']['TEMPS'])
|
||||||
|
tables = int(config['WAVEFORM']['TABLES'])
|
||||||
|
|
||||||
|
# Get all framecounts
|
||||||
|
# fc = []
|
||||||
|
# for i in range(tables):
|
||||||
|
# fc.append(config['WAVEFORM'][f'TB{i}FC'])
|
||||||
|
|
||||||
|
# trange = []
|
||||||
|
# for i in range(temps):
|
||||||
|
# trange.append(config['WAVEFORM'][f'T{i}RANGE'])
|
||||||
|
|
||||||
|
dirname = os.path.dirname(os.path.abspath(args.filename))
|
||||||
|
|
||||||
|
for i in range(tables):
|
||||||
|
oldname = f'{prefix}_TB{i}.csv'
|
||||||
|
newname = f'{prefix}_4bpp_TB{i}.csv'
|
||||||
|
process_table(os.path.join(dirname, oldname),
|
||||||
|
os.path.join(dirname, newname))
|
||||||
|
|
||||||
|
with open(os.path.join(dirname, f'{prefix}_4bpp_desc.iwf'), 'w') as fp:
|
||||||
|
fp.write('[WAVEFORM]\n')
|
||||||
|
fp.write('VERSION = 2.0\n')
|
||||||
|
fp.write(f'PREFIX = {prefix}_4bpp\n')
|
||||||
|
fp.write(f'NAME = {config['WAVEFORM']['NAME']}\n')
|
||||||
|
fp.write(f'BPP = 4\n')
|
||||||
|
fp.write(f'MODES = {modes}\n')
|
||||||
|
fp.write(f'TEMPS = {temps}\n')
|
||||||
|
fp.write(f'TABLES = {tables}\n')
|
||||||
|
fp.write('\n')
|
||||||
|
for i in range(temps):
|
||||||
|
fp.write(f'T{i}RANGE = {config['WAVEFORM'][f'T{i}RANGE']}\n')
|
||||||
|
fp.write('\n')
|
||||||
|
for i in range(tables):
|
||||||
|
fp.write(f'TB{i}FC = {config['WAVEFORM'][f'TB{i}FC']}\n')
|
||||||
|
fp.write('\n')
|
||||||
|
for i in range(modes):
|
||||||
|
fp.write(f'[MODE{i}]\n')
|
||||||
|
fp.write(f'NAME = {config[f'MODE{i}']['NAME']}\n')
|
||||||
|
for j in range(temps):
|
||||||
|
fp.write(f'T{j}TABLE = {config[f'MODE{i}'][f'T{j}TABLE']}\n')
|
||||||
|
fp.write('\n')
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
Loading…
Add table
Add a link
Reference in a new issue