diff options
| author | Rangi <remy.oukaour+rangi42@gmail.com> | 2022-10-02 21:14:23 -0400 |
|---|---|---|
| committer | Rangi <remy.oukaour+rangi42@gmail.com> | 2022-10-02 21:14:23 -0400 |
| commit | f58dbe3849ecb6c47a703c674458fd63436db946 (patch) | |
| tree | 3b3434b400540ab82bdd70fd593ba1aba0f825f6 /tools/free_space.py | |
| parent | `startswith` works with a tuple (diff) | |
| download | pokeyellow-f58dbe3849ecb6c47a703c674458fd63436db946.tar.gz pokeyellow-f58dbe3849ecb6c47a703c674458fd63436db946.tar.xz pokeyellow-f58dbe3849ecb6c47a703c674458fd63436db946.zip | |
Require rgbds 0.6.0
Diffstat (limited to 'tools/free_space.py')
| -rwxr-xr-x | tools/free_space.py | 69 |
1 files changed, 0 insertions, 69 deletions
diff --git a/tools/free_space.py b/tools/free_space.py deleted file mode 100755 index 553e1352..00000000 --- a/tools/free_space.py +++ /dev/null @@ -1,69 +0,0 @@ -#!/usr/bin/env python3 -# -*- coding: utf-8 -*- - -""" -Usage: python3 free_space.py [BANK=none] [pokered.map] - -Calculate the free space in the ROM or its individual banks. - -The BANK argument allows printing free space in one, all, or none of the ROM's banks. -Valid arguments are numbers (in decimal "42" or hexadecimal "0x2A"), "all" or "none". -If not specified, defaults to "none". -""" - -import sys - -from mapreader import MapReader - -def main(): - print_bank = 'none' - filename = 'pokered.map' - - for arg in sys.argv[1:]: - if arg.startswith('BANK='): - print_bank = arg.split('=', 1)[-1] - else: - filename = arg - - if print_bank not in {'all', 'none'}: - try: - print_bank = (int(print_bank[2:], 16) - if print_bank.startswith(('0x', '0X')) - else int(print_bank)) - except ValueError: - error = f'Error: invalid BANK: {print_bank}' - if print_bank.isalnum(): - error += f' (did you mean: 0x{print_bank}?)' - print(error, file=sys.stderr) - sys.exit(1) - - num_banks = 0x80 - bank_size = 0x4000 # bytes - total_size = num_banks * bank_size - - reader = MapReader() - with open(filename, 'r', encoding='utf-8') as file: - reader.read_map_data(file.readlines()) - - free_space = 0 - per_bank = [] - default_bank_data = {'sections': [], 'used': 0, 'slack': bank_size} - for bank in range(num_banks): - bank_data = reader.bank_data['ROM0 bank' if bank == 0 else 'ROMX bank'] - data = bank_data.get(bank, default_bank_data) - used, slack = data['used'], data['slack'] - per_bank.append((used, slack)) - free_space += slack - - free_percent = 100 * free_space / total_size - print(f'Free space: {free_space}/{total_size} ({free_percent:.2f}%)') - if print_bank != 'none': - print() - print('bank, used, free') - for bank in range(num_banks): - used, slack = per_bank[bank] - if print_bank in {'all', bank}: - print(f'${bank:02X}, {used}, {slack}') - -if __name__ == '__main__': - main() |
