Skip to content

Instantly share code, notes, and snippets.

@bbayles
Created June 20, 2025 12:22
Show Gist options
  • Select an option

  • Save bbayles/3f3d6c23a41e6ba5d881b2cdbd03845d to your computer and use it in GitHub Desktop.

Select an option

Save bbayles/3f3d6c23a41e6ba5d881b2cdbd03845d to your computer and use it in GitHub Desktop.
Generate all special names for *Omakase! Savers* on Sega Saturn
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