-
-
Save bbayles/3f3d6c23a41e6ba5d881b2cdbd03845d to your computer and use it in GitHub Desktop.
Generate all special names for *Omakase! Savers* on Sega Saturn
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| LETTER_MAP = { | |
| 0x82a0: 'あ', | |
| 0x82a2: 'い', | |
| 0x82a4: 'う', | |
| 0x82a6: 'え', | |
| 0x82a8: 'お', | |
| 0x82a9: 'か', | |
| 0x82ab: 'き', | |
| 0x82ad: 'く', | |
| 0x82af: 'け', | |
| 0x82b1: 'こ', | |
| 0x82b3: 'さ', | |
| 0x82b5: 'し', | |
| 0x82b7: 'す', | |
| 0x82b9: 'せ', | |
| 0x82bb: 'そ', | |
| 0x82bd: 'た', | |
| 0x82bf: 'ち', | |
| 0x82c2: 'つ', | |
| 0x82c4: 'て', | |
| 0x82c6: 'と', | |
| 0x82c8: 'な', | |
| 0x82c9: 'に', | |
| 0x82ca: 'ぬ', | |
| 0x82cb: 'ね', | |
| 0x82cc: 'の', | |
| 0x82cd: 'は', | |
| 0x82d0: 'ひ', | |
| 0x82d3: 'ふ', | |
| 0x82d6: 'へ', | |
| 0x82d9: 'ほ', | |
| 0x82dc: 'ま', | |
| 0x82dd: 'み', | |
| 0x82de: 'む', | |
| 0x82df: 'め', | |
| 0x82e0: 'も', | |
| 0x82e2: 'や', | |
| 0x82e4: 'ゆ', | |
| 0x82e6: 'よ', | |
| 0x82e7: 'ら', | |
| 0x82e8: 'り', | |
| 0x82e9: 'る', | |
| 0x82ea: 'れ', | |
| 0x82eb: 'ろ', | |
| 0x82ed: 'わ', | |
| 0x82f0: 'を', | |
| 0x82f1: 'ん', | |
| 0x8140: '_', | |
| 0x8140: '_', | |
| 0x829f: 'ぁ', | |
| 0x82a1: 'ぃ', | |
| 0x82a3: 'ぅ', | |
| 0x82a5: 'ぇ', | |
| 0x82a7: 'ぉ', | |
| 0x82c1: 'っ', | |
| 0x82e1: 'ゃ', | |
| 0x82e3: 'ゅ', | |
| 0x82e5: 'ょ', | |
| 0x8140: '_', | |
| 0x8140: '_', | |
| 0x8140: '_', | |
| 0x8140: '_', | |
| 0x8140: '_', | |
| 0x8140: '_', | |
| 0x8140: '_', | |
| 0x8140: '_', | |
| 0x82aa: 'が', | |
| 0x82ac: 'ぎ', | |
| 0x82ae: 'ぐ', | |
| 0x82b0: 'げ', | |
| 0x82b2: 'ご', | |
| 0x82b4: 'ざ', | |
| 0x82b6: 'じ', | |
| 0x82b8: 'ず', | |
| 0x82ba: 'ぜ', | |
| 0x82bc: 'ぞ', | |
| 0x82be: 'だ', | |
| 0x82c0: 'ぢ', | |
| 0x82c3: 'づ', | |
| 0x82c5: 'で', | |
| 0x82c7: 'ど', | |
| 0x8140: '_', | |
| 0x8140: '_', | |
| 0x8140: '_', | |
| 0x8140: '_', | |
| 0x8140: '_', | |
| 0x82ce: 'ば', | |
| 0x82d1: 'び', | |
| 0x82d4: 'ぶ', | |
| 0x82d7: 'べ', | |
| 0x82da: 'ぼ', | |
| 0x8140: '_', | |
| 0x8140: '_', | |
| 0x8140: '_', | |
| 0x8140: '_', | |
| 0x8140: '_', | |
| 0x82cf: 'ぱ', | |
| 0x82d2: 'ぴ', | |
| 0x82d5: 'ぷ', | |
| 0x82d8: 'ぺ', | |
| 0x82db: 'ぽ' | |
| } | |
| LETTERS_BY_INDEX = list(LETTER_MAP.keys()) | |
| def process_player_name(player_name_02a, player_name_02b, player_name_02c, player_name_02d): | |
| name_effect_01 = 0 | |
| name_effect_02 = 2 | |
| name_effect_03 = 1 | |
| name_effect_04 = 1 | |
| name_effect_05 = 0 | |
| name_effect_06 = 0 | |
| if player_name_02a == 0x82F1: | |
| if player_name_02d in [0x82B9, 0x82DE, 0x82DF]: | |
| name_effect_02 = 3 | |
| name_effect_01 = 1 | |
| elif player_name_02d in [0x82BD, 0x82DC, 0x82DD]: | |
| name_effect_02 = 2 | |
| name_effect_01 = 1 | |
| else: | |
| name_effect_01 = 0 | |
| if name_effect_01 != 0: | |
| name_effect_01 = 0 | |
| if name_effect_02 == 2: | |
| if player_name_02b == 0x82A2: | |
| if player_name_02c == 0x82A0: | |
| name_effect_01 = 1 | |
| name_effect_03 = 1 | |
| if name_effect_01 == 6: | |
| name_effect_01 = 0 | |
| elif player_name_02b == 0x82B3: | |
| if player_name_02c == 0x82A0: | |
| name_effect_01 = 1 | |
| name_effect_03 = 3 | |
| if name_effect_01 == 2: | |
| name_effect_01 = 0 | |
| elif player_name_02b == 0x82C9: | |
| if player_name_02c == 0x82A0: | |
| name_effect_01 = 1 | |
| name_effect_03 = 2 | |
| if name_effect_01 == 7: | |
| name_effect_01 = 0 | |
| elif player_name_02b == 0x82E6: | |
| for i in range(3): | |
| if LETTERS_BY_INDEX[i] == player_name_02c: | |
| name_effect_01 = i + 1 | |
| name_effect_03 = 4 | |
| break | |
| if name_effect_01 == 7: | |
| name_effect_01 = 0 | |
| if name_effect_01 == 0: | |
| name_effect_02 = 2 | |
| name_effect_04 = 1 | |
| name_effect_03 = 1 | |
| else: | |
| name_effect_04 = name_effect_01 | |
| else: | |
| name_effect_01 = 0 | |
| if player_name_02b == 0x82A2: | |
| for i in range(2): | |
| if LETTERS_BY_INDEX[i] == player_name_02c: | |
| name_effect_01 = i + 1 | |
| name_effect_03 = 1 | |
| name_effect_05 = 1 | |
| break | |
| elif player_name_02b == 0x82B3: | |
| if player_name_02c == 0x82A0: | |
| name_effect_05 = 3 | |
| name_effect_01 = 1 | |
| name_effect_03 = 3 | |
| elif player_name_02b == 0x82C9: | |
| for i in range(2): | |
| if LETTERS_BY_INDEX[i] == player_name_02c: | |
| name_effect_01 = i + 1 | |
| name_effect_03 = 2 | |
| break | |
| elif player_name_02b == 0x82E6: | |
| for i in range(3): | |
| if LETTERS_BY_INDEX[i] == player_name_02c: | |
| if i == 0: | |
| name_effect_05 = 1 | |
| elif i == 1: | |
| name_effect_05 = 3 | |
| elif i == 2: | |
| name_effect_05 = 2 | |
| name_effect_01 = 1 | |
| name_effect_03 = 4 | |
| break | |
| if name_effect_01 == 0: | |
| name_effect_02 = 2 | |
| name_effect_04 = 1 | |
| name_effect_03 = 1 | |
| else: | |
| name_effect_06 = name_effect_01 - 1 | |
| if name_effect_03 in [1, 2]: | |
| if name_effect_06 != 0: | |
| name_effect_02 = 0x14 | |
| elif name_effect_03 in [3, 4]: | |
| name_effect_02 = 0x14 | |
| return ( | |
| name_effect_02, | |
| name_effect_03, | |
| name_effect_04, | |
| name_effect_05, | |
| name_effect_06, | |
| ) | |
| if __name__ == '__main__': | |
| from itertools import product | |
| alphabet = [k for k, v in LETTER_MAP.items() if v != '_'] | |
| seen = set() | |
| for a, b, c, d in product(alphabet, repeat=4): | |
| effects = process_player_name(a, b, c, d) | |
| if effects not in seen: | |
| seen.add(effects) | |
| name = f'{LETTER_MAP[a]}{LETTER_MAP[b]}{LETTER_MAP[c]}{LETTER_MAP[d]}' | |
| print(name, *effects, sep='\t') |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment