Created
August 15, 2021 22:08
-
-
Save RoadrunnerWMC/e6c9c8791b99664906be894cbba5cf9c to your computer and use it in GitHub Desktop.
Jinja2 template that generates accurate NSMBW staff credits for all regions
This file contains 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
:<bold>PRODUCERS</bold> | |
:Takashi Tezuka | |
:Hiroyuki Kimura | |
:<bold>DIRECTOR</bold> | |
:Shigeyuki Asuke | |
:<bold>PLANNING</bold> | |
:Yusuke Amano | |
:Masanao Arimoto | |
:Shigefumi Hino | |
:<bold>MAP&LEVEL DESIGN DIRECTOR</bold> | |
:Toshihiko Nakago | |
:<bold>MAP&LEVEL DESIGN</bold> | |
:Yasuhisa Yamamura | |
:Masataka Takemoto | |
:Kenta Usui | |
:Ryutaro Kanno | |
:Takayuki Ikkaku | |
:<bold>LEAD DESIGN</bold> | |
:Michiho Hayashi | |
:<bold>PLAYER DESIGN</bold> | |
:Keisuke Nishimori | |
:Tomomi Marunami | |
:<bold>CHARACTER DESIGN</bold> | |
:Masaaki Ishikawa | |
:Masanobu Sato | |
:Ryota Akutsu | |
:Manabu Hiraoka | |
:Kazunori Fujii | |
:<bold>FIELD DESIGN</bold> | |
:Eiji Mukao | |
:Kosono Okina | |
:Mari Shibata | |
:<bold>WORLD MAP DESIGN</bold> | |
:Jun Takamura | |
:Takeshi Koike | |
:<bold>UI DESIGN</bold> | |
:Mei Ide | |
:Yoshifumi Masaki | |
:Satoko Okada | |
:<bold>EFFECTS DESIGN</bold> | |
:Sayaka Nishimura | |
:<bold>DESIGN ADVISER</bold> | |
:Atsushi Miyagi | |
:<bold>DESIGN SUPPORT</bold> | |
:Daisuke Ito | |
:Tomomi Imazu | |
:Kaori Kinoshita | |
:Kunihito Ihara | |
:<bold>PROGRAMMING DIRECTOR</bold> | |
:Makoto Sasaki | |
:<bold>PLAYER PROGRAMMING</bold> | |
:Keigo Nakanishi | |
:<bold>FIELD PROGRAMMING</bold> | |
:Kouji Sakai | |
:<bold>ENEMY PROGRAMMING</bold> | |
:Tatsuo Nishiyama | |
:Kenichi Nishiyama | |
:Keiji Takahashi | |
:Keiichiro Kato | |
:Ken Watanabe | |
:Yosuke Oshino | |
:<bold>SYSTEM PROGRAMMING</bold> | |
:Hisashi Okada | |
:Kenzo Hayakawa | |
:<bold>UI PROGRAMMING</bold> | |
:Kiyoshi Koda | |
:<bold>WORLD MAP PROGRAMMING</bold> | |
:Shoichi Obayashi | |
:<bold>PROGRAMMING</bold> | |
:Yuji Sawatani | |
:Masaro Sakakibara | |
:Misato Sodeyama | |
:Shinji Hatada | |
:Hiromichi Miyake | |
:Masashi Masuoka | |
:<bold>PROGRAMMING ADVISER</bold> | |
:Yuhiki Otsuki | |
:<bold>SOUND DIRECTOR</bold> | |
:Kenta Nagata | |
:<bold>SOUND PROGRAMMING</bold> | |
:Sanae Uchida | |
:<bold>SOUND EFFECT{% if region != "CN" %}S{% endif %}</bold> | |
:Mitsuhiro Kida | |
:Taiju Suzuki | |
:<bold>MUSIC</bold> | |
:Shiho Fujii | |
:Ryo Nagamatsu | |
:<bold>VOICE</bold> | |
:Dan Falcone | |
:Kenny James | |
:Sam Kelly | |
:Charles Martinet | |
:Lani Minella | |
:{% if region in ['JP', 'US', 'EU', 'CN'] %}Catey{% else %}Caety{% endif %} Sagoian{# The correct name is "Caety" #} | |
:Mike Vaughn | |
:<bold>SOUND ADVISER</bold> | |
:Koji Kondo | |
:<bold>COORDINATORS</bold> | |
:Tsutomu Kaneshige | |
:Tomoaki Yoshinobu | |
:Hideki Fujii | |
:<no_coin>Rina Yamauchi</no_coin> | |
:<bold>DEMO SCENE DIRECTOR</bold> | |
:Takumi Kawagoe | |
:<bold>DEMO SCENE MOTION DESIGN</bold> | |
:Yoshikazu Sumioka | |
:Eisuke Sagawa | |
:Tatsuya Sakai | |
:Youko Miyaguchi | |
:<bold>GRAPHIC SUPERVISORS</bold> | |
:Aya Oyama | |
:Akiko Kato | |
:Kanae Dohta | |
:Tsuyoshi Watanabe | |
:<bold>PROGRESS MANAGEMENT</bold> | |
:Keizo Kato | |
:<bold>TECHNICAL SUPPORT</bold> | |
:Hironobu Kakui | |
:Yoshito Yasuda | |
:Shintaro Jikumaru | |
{% if region == 'US' %} | |
:<bold>LOCALIZATION MANAGEMENT</bold> | |
:Nate Bihldorff | |
:Reiko Ninomiya | |
:Tim O'Leary | |
:Leslie Swan | |
:<bold>NOA LOCALIZATION</bold> | |
:Camilo Alba Navarro | |
:Joanie Grenader | |
:Lars Knudson | |
:Erik Peterson | |
{% elif region == 'EU' %} | |
:<bold>LOCALISATION MANAGEMENT</bold> | |
:Erkan Kasap | |
:Paul Logue | |
:Matthew Mawer | |
:Micky Auer | |
:<bold>LOCALISATION PRODUCER</bold> | |
:Takashi Katagiri | |
:<bold>TRANSLATION</bold> | |
:Andrew Steele | |
:Carine Mathey | |
:Massimo Cotticelli | |
:Rafael Jagielski | |
:Miguel Rodríguez Ramos | |
:<bold>QUALITY ASSURANCE</bold> | |
:Amaury Bagnariol | |
:NOE Quality Assurance | |
{% elif region == 'KR' %} | |
:<bold>LOCALIZATION MANAGEMENT</bold> | |
:Daisuke Sakaguchi | |
:Hyokjin Jung | |
:<bold>TRANSLATION</bold> | |
:Yunhye Lee | |
:Dongyeon Kim | |
:<bold>PRODUCT SUPPORT</bold> | |
:Kimiko Nakamichi | |
:Ilho Kim | |
:Jonghoon Park | |
:<bold>PRODUCT TESTING</bold> | |
:Manabu Matumoto | |
:Masaki Wada | |
:Junbong Lee | |
:Sungmin Park | |
:Juyoung Choi | |
:Kyoungim Na | |
:Mario Club Co., Ltd. | |
:NOK Debug Team | |
{% elif region == 'TW' %} | |
:<bold>LOCALIZATION MANAGEMENT</bold> | |
:Motoyasu Tojima | |
:<bold>iQue LOCALIZATION MANAGEMENT</bold> | |
:Shin'ichi Sasamoto | |
:<bold>iQue LOCALIZATION</bold> | |
:Qiu Xiaochun | |
:Wu Mengzhi | |
:<bold>PRODUCT TESTING</bold> | |
:Manabu Matumoto | |
:Masaki Wada | |
:Mario Club Co., Ltd. | |
:<bold>NPC PRODUCT TESTING</bold> | |
:Chang Yuan Gang | |
:Tsai Yi-Chen | |
:<bold>NHL PRODUCT TESTING</bold> | |
:Kirsty Wong | |
{% endif %} | |
{% if region in ['JP', 'US', 'EU', 'CN'] %}:<bold>DEBUG</bold> | |
:Naoki Takami | |
:Ryuhei Matsuura | |
:Mario Club Co., Ltd. | |
:NOA Product Testing | |
{% endif %}:<bold>SPECIAL THANKS</bold> | |
:SRD | |
:DIGITALSCAPE Co., Ltd. | |
:Mox Inc. | |
:Hirotake Otsubo | |
:Yoshiyuki Oyama | |
:Akito Osanai | |
:Tsubasa Sakaguchi | |
:Yoshiki Haruhana | |
:Takahiro Hamaguchi | |
:Keijiro Inoue | |
:Takuhiro Dohta{% if region == 'TW' %} | |
:Megumi Shichida{% endif %} | |
:<bold>GENERAL PRODUCER</bold> | |
:Shigeru Miyamoto | |
:<bold>EXECUTIVE PRODUCER</bold> | |
:<coin>Satoru Iwata</coin> | |
:<Copyrights> | |
This file contains 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
# 2021-08-15, RRWMC | |
# Usage: put all staffroll text files (converted with Staffroll Tool: | |
# https://github.com/RoadrunnerWMC/nsmbw-staffroll-tool) in this folder, | |
# named "staffroll_{language}.txt", as well as staffroll_master.jinja2. | |
# Then, run this with Python 3.6+ | |
from pathlib import Path | |
import jinja2 # pip install Jinja2 | |
LANGUAGES_PER_REGION = { | |
'JP': ['JP'], | |
'US': ['EngUS', 'FraUS', 'SpaUS'], | |
'EU': ['EngEU', 'FraEU', 'GerEU', 'ItaEU', 'SpaEU'], | |
'KR': ['KR'], | |
'TW': ['TW'], | |
'CN': ['CN'], | |
} | |
def main(): | |
# Jinja eats exactly one trailing newline for some reason, so, | |
# compensating for that with "+ '\n'" | |
template = jinja2.Template( | |
Path('staffroll_master.jinja2').read_text(encoding='utf-8') + '\n') | |
for region, languages in LANGUAGES_PER_REGION.items(): | |
for language in languages: | |
# Note: despite the game having one staffroll.bin per | |
# language, they're always all identical in each region. So | |
# "language" below isn't actually used by the template | |
predicted = template.render(region=region, language=language) | |
actual = Path(f'staffroll_{language}.txt').read_text(encoding='utf-8') | |
if actual != predicted: | |
raise ValueError(f'Template fails for {region}/{language}') | |
print('Template is accurate') | |
main() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment