diff options
| author | Peter Fors <peter.fors@mindkiller.com> | 2025-10-09 22:07:52 +0200 |
|---|---|---|
| committer | Peter Fors <peter.fors@mindkiller.com> | 2025-10-09 22:07:52 +0200 |
| commit | 030724a9aea346e4a9843d5842fb28c6d6c4cf1a (patch) | |
| tree | f06fb84aaef64b2f4e2d81b3d2d3eef71bad83ec /helpers/mapper_scan.py | |
| parent | 412b2ef851516c1de8ba5006ddd284192cbcaf9b (diff) | |
Rearrangement and refactoring and optimizations and more accuracy
Diffstat (limited to 'helpers/mapper_scan.py')
| -rwxr-xr-x | helpers/mapper_scan.py | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/helpers/mapper_scan.py b/helpers/mapper_scan.py new file mode 100755 index 0000000..5b6e96a --- /dev/null +++ b/helpers/mapper_scan.py @@ -0,0 +1,38 @@ +#!/usr/bin/env python3 +import glob +import re + +def scan_mappers(): + mappers = [] + + # Find all mapper_*.c files + for filename in sorted(glob.glob("mapper_*.c")): + # Extract mapper ID from filename + match = re.match(r'mapper_(\d+)_([0-9a-fA-F])\.c', filename) + if match: + mapper_id = int(match.group(1)) + submapper_id = int(match.group(2), 16) + full_id = (mapper_id << 4) | submapper_id + else: + # Legacy format: mapper_xxx.c without submapper + match = re.match(r'mapper_(\d+)\.c', filename) + if match: + mapper_id = int(match.group(1)) + full_id = (mapper_id << 4) | 0 + else: + continue + + init_fn = f"mapper_{mapper_id:03d}_{submapper_id:x}_init" if 'submapper_id' in locals() else f"mapper_{mapper_id:03d}_init" + mappers.append((full_id, init_fn)) + + return mappers + +def generate_table(mappers): + print("static struct mapper_entry mapper_table[] = {") + for full_id, init_fn in mappers: + print(f"\t{{ 0x{full_id:04x}, {init_fn} }},") + print("};") + +if __name__ == "__main__": + mappers = scan_mappers() + generate_table(mappers) |
