https://www.thpatch.net/w/api.php?action=feedcontributions&user=Egor&feedformat=atom
Touhou Patch Center - User contributions [en]
2024-03-29T05:14:56Z
User contributions
MediaWiki 1.39.1
https://www.thpatch.net/w/index.php?title=Touhou_Patch_Center:Main_page&diff=2694208
Touhou Patch Center:Main page
2024-02-09T21:11:21Z
<p>Egor: move es-hourai to inactive, with permission from GoddamnBernkastel</p>
<hr />
<div>{{#css:<br />
#firstHeading {<br />
display:none;<br />
}<br />
}}<br />
<languages /><br />
<table><tr><td style="vertical-align: top; width: 75%;"><br />
{| class="roundytable" style="width: 100%; float: left;"<br />
|-<br />
! colspan="3" class="mp-icon" id="mp-favicon" | '''<translate><!--T:1--><br />
Welcome to {{ns:4}}!</translate>'''<br />
|-<br />
|<br />
{{Project overview/{{PAGELANGUAGE}}|n}}<br />
|-<br />
| <translate><!--T:2--><br />
The '''{{ns:4}}''' is a wiki-based platform for translating the ''{{touhouwiki|Touhou Project}}'' games by {{touhouwiki|Team Shanghai Alice}} from Japanese into any language. It is built to automatically supply translation patches for the [[Project:Download|Touhou Community Reliant Automatic Patcher]], completely under the control of fans like you. [[Special:MyLanguage/{{ns:4}}:About|Read more.]]</translate><br />
<br />
<translate><!--T:3--><br />
'''New translators are always welcome.''' Please read our [[Special:MyLanguage/Project:Tutorial|tutorial page]] for information on how to contribute.</translate><br />
<br />
<div class="plainlinks"><translate><!--T:4--><br />
The team can be contacted at the following places:</translate><br />
* https://www.thpatch.net/w/logos/discord.png <translate><!--T:5--><br />
[https://discord.thpatch.net Discord], the main platform we use to discuss and organize the software side of the project. It is also used by some of the translation groups. No account required.</translate><br />
* https://www.thpatch.net/w/logos/irc.png <translate><!--T:6--><br />
Our [https://web.libera.chat/?channels=#thpatch IRC channel] '''#thpatch''' on '''irc.libera.chat'''.</translate><br />
* https://www.thpatch.net/w/logos/facebook.png <translate><!--T:7--><br />
[https://www.facebook.com/thpatch Facebook], where we post summaries and additional short news posts from time to time.</translate><br />
<translate><!--T:8--><br />
* [[File:opencollective_logo.png]] [https://opencollective.com/thpatch/ OpenCollective]. Support our team to keep making quality patches.</translate><br />
</div><br />
|-<br />
! colspan="3" class="mp-icon" id="mp-globe"| '''<translate><!--T:9--><br />
[[List_of_Patches|Explore and add your patches/mods here!]]</translate>'''<br />
|-<br />
! colspan="3" class="mp-icon" id="mp-globe"| '''<translate><!--T:10--><br />
Language coordination portals</translate>'''<br />
|-<br />
| colspan="3" style="padding: 3px; vertical-align: top;" |<br />
<div style="column-count:4; -moz-column-count:4; -webkit-column-count:4;"><br />
{{Portal link vert|en|en-4kids|en-alt|en-gb|en-google|en-deepl|en-lol|en-literal|en-official|en-yoda}}<br />
{{Portal link vert|de|de-bing}}<br />
{{Portal link vert|es|es-ar|es-suzunaan|es-pob|es-ht|es-ve|es-419}}<br />
{{Portal link vert|pt|pt-br|pt-br-lol}}<br />
{{Portal link vert|fr|fr-lol}}<br />
{{Portal link vert|it|it-lol}}<br />
{{Portal link vert|ro}}<br />
{{Portal link vert|pl|pl-tvp}}<br />
{{Portal link vert|be}}<br />
{{Portal link vert|uk}}<br />
{{Portal link vert|el}}<br />
{{Portal link vert|sv}}<br />
{{Portal link vert|nb}}<br />
{{Portal link vert|fi}}<br />
{{Portal link vert|cs}}<br />
{{Portal link vert|ce}}<br />
{{Portal link vert|hu}}<br />
{{Portal link vert|ru|ru-goblin|ru-latin|ru-prereform}}<br />
{{Portal link vert|sah}}<br />
{{Portal link vert|zh-hans}}<br />
{{Portal link vert|zh-hant}}<br />
{{Portal link vert|vi|vi-lol}}<br />
{{Portal link vert|ms}}<br />
{{Portal link vert|hi}}<br />
{{Portal link vert|bn}}<br />
{{Portal link vert|ko}}<br />
{{Portal link vert|th}}<br />
{{Portal link vert|sr|sr-literal}}<br />
{{Portal link vert|tr|tr-lol}}<br />
{{Portal link vert|mk}}<br />
{{Portal link vert|mn}}<br />
{{Portal link vert|eo}}<br />
{{Portal link vert|ithkuil}}<br />
{{Portal link vert|tokipona|tokipona-sp}}<br />
{{Portal link vert|sco}}<br />
{{Portal link vert|ar|ar-gulf|arz|aeb}}<br />
{{Portal link vert|az}}<br />
{{Portal link vert|ku}}<br />
{{Portal link vert|sk}}<br />
{{Portal link vert|hr}}<br />
{{Portal link vert|he}}<br />
{{Portal link vert|ga}}<br />
{{Portal link vert|la-machine}}<br />
{{Portal link vert|ja-furigana}}<br />
{{Portal link vert|pnb}}<br />
{{Portal link vert|nn}}<br />
</div><br />
|-<br />
! colspan="3" class="mp-icon" id="mp-globe"| '''<translate><!--T:11--><br />
Inactive language portals</translate>'''<br />
|-<br />
| colspan="3" style="padding: 3px; vertical-align: top;" |<br />
<div style="column-count:4; -moz-column-count:4; -webkit-column-count:4;"><br />
{{Portal link vert|en-arr|en-ca|en-tyke}}<br />
{{Portal link vert|de-lol|gsw|de-ch}}<br />
{{Portal link vert|es-cl|es-mx|es-hourai}}<br />
{{Portal link vert|fr-qc-fo}}<br />
{{Portal link vert|vec}}<br />
{{Portal link vert|ar-lb}}<br />
{{Portal link vert|bg}}<br />
{{Portal link vert|lb}}<br />
{{Portal link vert|nl}}<br />
{{Portal link vert|fa}}<br />
{{Portal link vert|ru-hepburn}}<br />
{{Portal link vert|vi-thvnfb}}<br />
{{Portal link vert|ms-jawi|ms-simple}}<br />
{{Portal link vert|id}}<br />
{{Portal link vert|sr-lol}}<br />
{{Portal link vert|qu}}<br />
{{Portal link vert|la}}<br />
{{Portal link vert|ncs}}<br />
{{Portal link vert|jbo}}<br />
{{Portal link vert|tlh}}<br />
{{Portal link vert|tl}}<br />
{{Portal link vert|ja}}<br />
{{Portal link vert|cue}}<br />
</div><br />
|-<br />
! colspan="3" width="100%" | '''[[Project:Translation progress|<translate><!--T:12--><br />
Game data and progress</translate>]]'''<br />
|-<br />
| colspan="3" width="100%" | <translate><!--T:13--><br />
Right now, '''in-game dialog''', '''endings''', '''spell cards''', '''music titles & comments''' and '''images''' are available for translation. All fight games are still in WIP-status, except {{GameLabel|th145}}.</translate><br />
<translate><!--T:14--><br />
The progress flags below [[Project:Translation progress|have to be manually updated]].</translate><br />
{{:{{ns:4}}:Translation progress|float=y}}<br />
|}<br />
</tr></table><br />
[[Category:Project overview| ]]</div>
Egor
https://www.thpatch.net/w/index.php?title=User:Egor/Steam&diff=2694147
User:Egor/Steam
2024-02-09T19:49:41Z
<p>Egor: grammar</p>
<hr />
<div>There are two parts to Steam support in thcrap: SteamDRM bypass and Steam integration.<br />
<br />
* SteamDRM bypass is used so that the user can use the Steam versions of the games with thcrap, just as well as DRM-free versions.<br />
* Steam integration allows Steam to recognize that you're playing a given game when you run it through thcrap, regardless of whether the game exe is actually from Steam.<br />
<br />
== SteamDRM bypass ==<br />
First thing to note is that sometimes we call it "cracking", because that's what it literally is. The reason why it's needed is because SteamDRM includes two completely useless features that just make it harder for tools like thcrap to work:<br />
* the encryption<br />
* the integrity check<br />
Thcrap normally just patches the exe when it starts, but we can't do that with the steam version, because the data isn't decrypted yet. Instead we apply patches in stages: first we patch the SteamDRM stub in order to notify thcrap when the main program becomes decrypted, and then when that happens, we apply patches like we do normally. Now, because we modify the stub in the process of doing this, the stub's integrity check starts failing so we have to patch it out too.<br />
<br />
Example implementation: [https://github.com/thpatch/thcrap-tsa/commit/c8219dcf0b0ccf6be9de799b4273f55d590dd6b7 1] [https://github.com/thpatch/thcrap-tsa/commit/89192305a66b3f801d555550e7a863f69c5dc427 2]<br />
<br />
As you can see, we can actually do most of the job before the steam version is even released. This is because the way SteamDRM applies to the game is deterministic enough that we can predict all the offsets using the original EXE's size. This doesn't always work, because occasionally steam updates the stub. The integrated SteamDRMP.dll gets updated even less often than the stub itself. I've mostly automated the process of generating the binhacks necessary for this.<br />
<br />
I'm not particularly happy with the way the patching process works, because it violates an basic assumption of thcrap: a single game+version combination represents a single set of binhacks/breakpoints, no matter how many corresponding hashes there are in versions.js. The way it works right now, is that regardless of whether it's a steam version or not, thcrap attempts to apply the steam bypass, and if it doesn't work, it skips straight to the game binhacks. Ideally we'd have a "v1.00a-steam" version that would have the bypass, and the regular that wouldn't. The problem is that currently the only way to do it is to copy-paste everything else. We'd only want to keep the differences in the -steam version.<br />
<br />
One scary consequence of keeping everything in one file is the fact that we might have to potentially deal with two versions of SteamDRM at once. In Janurary 2021, th11, th12 and th12 (yes, twice) were reuploaded on Steam, and each time a new exe was generated. Thankfully the protection hasn't been updated during the 6 months that passed since the original release on Steam, so all we had to do was add them to versions.js.<br />
<br />
Note that this is a low-priority feature. If it becomes impossible to do in the future, we'll just tell people to download the original exe and overwrite the steam one. In fact, you should do it anyway, since that's what most of the dev team uses. There are zero downsides to it, especially considering the following section.<br />
<br />
== Steam Integration ==<br />
As side effect of the above, the games become completely disconnected from steam. In order to have stuff like overlay and play time tracking, we have to redo the integration with steam client. Fortunately it only involves loading the steam_api.dll and calling one function. See [https://github.com/thpatch/thcrap/blob/master/thcrap/src/steam.cpp thcrap/src/steam.cpp] for the implementation. The only caveat is that we need to know the steam app id for it to work. This is also stored in the game-specific .js file: [https://github.com/thpatch/thcrap-tsa/commit/c85c399afc561190746cff5982181c215d2d34ee example].<br />
<br />
Notably, this works even if the exe you're using is from a Comiket release. This allows you to, for example, use thcrap with other mods which don't work with Steam and at the time still be able to use Steam overlay. Or to just avoid using the steam exe.<br />
<br />
You can disable steam integration by either<br />
* not installing steam in the first place<br />
* removing steam_api.dll from thcrap's folder (it will be redownloaded on every update though)<br />
* setting "steam_appid" in your runconfig to an empty string</div>
Egor
https://www.thpatch.net/w/index.php?title=Portal:Uk&diff=2694098
Portal:Uk
2024-02-09T18:44:41Z
<p>Egor: remove the mention of hardcoded endings and mission texts, since we no longer do those</p>
<hr />
<div>__NOTOC__ <br />
[[Th06]] • [[Th07]] • [[Th08]] • [[Th09]] • [[Th10]] • [[Th11]] • [[Th12]] • [[Th13]] • [[Th14]] • [[Th15]] • [[Th16]] • [[Th17]] • [[Th18]] • [[Th19]] <br /><br />
[[Th095]] • [[Th125]] • [[Th128]] • [[Th143]] • [[Th165]] • [[Th175]] • [[Th185]] • [[Hardcoded strings/uk|Hardcoded]] • [[Hardcoded ASCII strings/uk|Hardcoded ASCII]] • [https://www.thpatch.net/wiki/Touhou_Patch_Center:List_of_music_themes Music titles] ([https://www.thpatch.net/w/index.php?title=Special:Translate&group=themedb у iнтерфейсi перекладу]) <br /><br />
[[Patch:Lang_uk|Patch:Lang_uk (шрифти)]]<br />
<br />
[[Category:Language portals]]<br />
__TOC__<br />
<div class="mw-collapsible" style="float:right; padding-left:1em; padding-bottom:1em; max-width:40%"><br />
=={{int:recentchanges}}==<br />
<div class="mw-collapsible-content" style="font-size:80%;">{{:Special:RecentChanges|trailer=/{{lc:{{BASEPAGENAME}}}}|days=300|limit=500}}</div></div><br />
<br />
==Проєкт перекладу Touhou украïнська==<br />
[[File:AbstractCactus_Icon_02.png|32px]] [[Touhou_Patch_Center:About/uk|Про проєкт]]<br />
<br />
[[File:bookBlack.png|32px]] Читайте [[Touhou_Patch_Center:Tutorial/uk|Tutorial]] і долучайтесь.<br />
<br />
[[File:Gnome-dev-zipdisk.svg|32px]] [[Touhou_Patch_Center:Download/uk|Завантаження патчу]]<br />
<br />
[[File:discord-logo.png|32px]] [https://discord.gg/y98CkcU Конференція у Discord]<br />
<br />
[[File:touhouwiki.png|baseline|20px]] {{Touhouwiki|Українська ТохоВікі|Українська ТохоВікі|lang=uk|iconsize=20px}}<br />
<br />
Завершено переклад:<br />
*[[File:Icon_th07.png|16px]] [[th07|<small>'''TH07'''</small> {{rt|th07}}]] (без кінцівок)<br />
*[[File:Icon_th11.png|16px]] [[th11|<small>'''TH11'''</small> {{rt|th11}}]]<br />
*[[File:Icon_th128.png|16px]] [[th128|<small>'''TH128'''</small> {{rt|th128}}]]<br />
*[[File:Icon_th14.png|16px]] [[th14|<small>'''TH14'''</small> {{rt|th14}}]]<br />
*[[File:Icon_th15.png|16px]] [[th15|<small>'''TH15'''</small> {{rt|th15}}]]<br />
*[[File:Icon_th16.png|16px]] [[th16|<small>'''TH16'''</small> {{rt|th16}}]]<br />
В даний час перекладається:<br />
*[[File:Icon_th06.png|16px]] [[th06|<small>'''TH06'''</small> {{rt|th06}}]]<br />
*[[File:Icon_th09.png|16px]] [[th09|<small>'''TH09'''</small> {{rt|th09}}]]<br />
*[[File:Icon_th10.png|16px]] [[th10|<small>'''TH10'''</small> {{rt|th10}}]]<br />
*[[File:Icon_th143.png|16px]] [[th143|<small>'''TH143'''</small> {{rt|th143}}]]<br />
<br />
==Новини==<br />
* . . .<br />
==Інформація==<br />
<br />
*Щоб відкоментувати рядок перекладу, можна написати<br />
<code style="color:green">|note=Коментар</code><br />
у кінці блоку перекладу.<br />
*Графіка і текстові правки не завжди оновлюються відразу.<br />
<br />
==Статус==<br />
'''Користуйтесь [https://thpatch.net/w/index.php?title=Special:LanguageStats&language=uk&x=D#| Мовною статистикою]!'''<br />
<br />
*[{{fullurl:Special:Translate|group=templates&language=uk&limit=5000&task=view}} Шаблони]<br />
*[{{fullurl:Special:Translate|group=chars&language=uk&limit=5000&task=view}} Імена персонажів]<br />
<br />
===Сюжет===<br />
* . . .<br />
<br />
===Графіка===<br />
*[[File:Icon_th09.png|16px]] [[Th09/Images/uk|TH09]]<br />
*[[File:Icon_th143.png|16px]] [[Th143/Images/uk|TH143]]<br />
<br />
===Музика===<br />
[[File:Akyuu Headphones.png|72px]]<br />
[{{fullurl:Touhou_Patch_Center:List_of_music_themes/uk}} Назви музичних тем] <br />
[{{fullurl:Special:Translate|group=themedb&task=view&language=uk}} переклад]<br />
<br />
== Назви ігор ==<br />
<br />
{| class="wikitable"<br />
! style="font-style: italic;" | Гра<br />
! style="font-style: italic;" | Японська<br />
! style="font-style: italic;" | Транскрипція<br />
! style="font-style: italic;" | Українська<br />
! style="font-style: italic;" | Текст<br />
! style="font-style: italic;" | Графіка<br />
|-<br />
| [[File:Icon_th01.png|16px]] <small>'''TH01'''</small><br />
| 東方靈異伝<br />
| То̄хо̄ Рейіден<br />
| Надприродне сказання сходу<br />
| N/A<br />
| N/A<br />
|-<br />
| [[File:Icon_th02.png|16px]] <small>'''TH02'''</small><br />
| 東方封魔録<br />
| То̄хо̄ Фӯмароку<br />
| Східні записи про запечатування демона<br />
| N/A<br />
| N/A<br />
|-<br />
| [[File:Icon_th03.png|16px]] <small>'''TH03'''</small><br />
| 東方夢時空<br />
| То̄хо̄ Юмеджікӯ<br />
| Східний вимір сну<br />
| N/A<br />
| N/A<br />
|-<br />
| [[File:Icon_th04.png|16px]] <small>'''TH04'''</small><br />
| 東方幻想郷<br />
| То̄хо̄ Ґенсōкьō<br />
| Східна країна фантазій<br />
| N/A<br />
| N/A<br />
|-<br />
| [[File:Icon_th05.png|16px]] <small>'''TH05'''</small><br />
| 東方怪綺談<br />
| То̄хо̄ Кайкідан<br />
| Дивні східні історії<br />
| N/A<br />
| N/A<br />
|-<br />
| [[File:Icon_th06.png|16px]] [[th06|<small>'''TH06'''</small>]]<br />
| 東方紅魔郷<br />
| То̄хо̄ Ко̄макьо̄<br />
| Східні землі червоної дияволиці<br />
| 100%<br />
| 0%<br />
|-<br />
| [[File:Icon_th07.png|16px]] [[th07|<small>'''TH07'''</small>]]<br />
| 東方妖々夢<br />
| То̄хо̄ Йо̄йо̄му<br />
| Зачарований східний сон<br />
| 100%<br />
| 100%<br />
|-<br />
| [[File:Icon_th075.png|16px]] <small>'''TH07.5'''</small><br />
| 東方萃夢想<br />
| То̄хо̄ Суймусо̄<br />
| Східна фантазія, що збирається<br />
| N/A<br />
| N/A<br />
|-<br />
| [[File:Icon_th08.png|16px]] [[th08|<small>'''TH08'''</small>]]<br />
| 東方永夜抄<br />
| То̄хо̄ Ейяшьо̄<br />
| Східний візерунок безкінечної ночі <br />
| 30%<br />
| 0%<br />
|-<br />
| [[File:Icon_th09.png|16px]] [[th09|<small>'''TH09'''</small>]]<br />
| 東方花映塚<br />
| То̄хо̄ Каейдзука<br />
| Східний курган квіткових віддзеркалень<br />
| 100%<br />
| 60%<br />
|-<br />
| [[File:Icon_th095.png|16px]] [[th095|<small>'''TH09.5'''</small>]]<br />
| 東方文花帖<br />
| То̄хо̄ Бункачьō<br />
| Східний альбом літературних суцвіть<br />
| 15%<br />
| 0%<br />
|-<br />
| [[File:Icon_th10.png|16px]] [[th10|<small>'''TH10'''</small>]]<br />
| 東方風神録<br />
| То̄хо̄ Фӯджінроку<br />
| Східні хроніки богині вітру<br />
| 100%<br />
| 15%<br />
|-<br />
|[[File:Icon_th105.png|16px]] [[th105|<small>'''TH10.5'''</small>]]<br />
| 東方緋想天<br />
| То̄хо̄ Хісōтен<br />
| Східне небо багряних думок<br />
| 15%<br />
| 0%<br />
|-<br />
| [[File:Icon_th11.png|16px]] [[th11|<small>'''TH11'''</small>]]<br />
| 東方地霊殿<br />
| То̄хо̄ Чірейден<br />
| Східний палац земних духів<br />
| 100%<br />
| 100%<br />
|-<br />
| [[File:Icon_th12.png|16px]] [[th12|<small>'''TH12'''</small>]]<br />
| 東方星蓮船<br />
| То̄хо̄ Сейренсен<br />
| Східний корабель зоряного лотоса<br />
| 20%<br />
| 0%<br />
|-<br />
| [[File:Icon_th123.png|16px]] [[th123|<small>'''TH12.3'''</small>]]<br />
| 東方非想天則<br />
| То̄хо̄ Хісōтенсоку<br />
| Неймовірний східний закон природи<br />
| 20%<br />
| 0%<br />
|-<br />
|[[File:Icon_th125.png|16px]] [[th125|<small>'''TH12.5'''</small>]]<br />
| 東方文花帖<br />
| То̄хо̄ Бункачьо̄<br />
| Подвійний спойлер<br />
| 15%<br />
| 0%<br />
|-<br />
| [[File:Icon_th128.png|16px]] [[th128|<small>'''TH12.8'''</small>]]<br />
| 妖精大戦争<br />
| Йо̄сей Дайсенсо̄<br />
| Великі війни фей<br />
| 100%<br />
| 100%<br />
|-<br />
| [[File:Icon_th13.png|16px]] [[th13|<small>'''TH13'''</small>]]<br />
| 東方神霊廟<br />
| То̄хо̄ Шінрейбьо̄<br />
| Східний мавзолей божественних духів<br />
| 30%<br />
| 25%<br />
|-<br />
| [[File:Icon_th135.png|16px]] [[th135|<small>'''TH13.5'''</small>]]<br />
| 東方心綺楼<br />
| То̄хо̄ Шінкіро̄<br />
| Східна вежа шовкового серця<br />
| 5%<br />
| 0%<br />
|-<br />
| [[File:Icon_th14.png|16px]] [[th14|<small>'''TH14'''</small>]]<br />
| 東方輝針城<br />
| То̄хо̄ Кішінджьо̄<br />
| Східний замок сяючих голок<br />
| 100%<br />
| 100%<br />
|-<br />
| [[File:Icon_th143.png|16px]] [[th143|<small>'''TH14.3'''</small>]]<br />
| 弾幕アマノジャク<br />
| Даммаку Аманоджяку<br />
| Даммаку Аманоджяку<br />
| 100%<br />
| 80%<br />
|-<br />
| [[File:Icon_th145.png|16px]] [[th145|<small>'''TH14.5'''</small>]]<br />
| 東方深秘録<br />
| То̄хо̄ Шімпіроку<br />
| Записи глибинних східних таємниць<br />
| 25%<br />
| 0%<br />
|-<br />
| [[File:Icon_th15.png|16px]] [[th15|<small>'''TH15'''</small>]]<br />
| 東方紺珠伝<br />
| То̄хо̄ Канджюден<br />
| Східна легенда про лазурний самоцвіт<br />
| 100%<br />
| 100%<br />
|-<br />
| [[File:Icon_th155.png|16px]] [[th155|<small>'''TH15.5'''</small>]]<br />
| 東方憑依華<br />
| То̄хо̄ Хьо̄йбана<br />
| Східні одержимі квіти<br />
| 25%<br />
| 0%<br />
|-<br />
| [[File:Icon_th16.png|16px]] [[th16|<small>'''TH16'''</small>]]<br />
| 東方天空璋<br />
| То̄хо̄ Тенкӯшьо̄<br />
| Східний нефритовий скіпетр небес <br />
| 100% <br />
| 100%<br />
|-<br />
| [[File:Icon_th165.png|16px]] [[th165|<small>'''TH16.5'''</small>]]<br />
| 秘封ナイトメアダイアリー<br />
| Хіфӯ Найтомеадайарії<br />
| Щоденник жахіть таємної кімнати <br />
| 0% <br />
| 0%<br />
|-<br />
| [[File:Icon_th17.png|16px]] [[th17|<small>'''TH17'''</small>]]<br />
| 東方鬼形獣<br />
| То̄хо̄ Кікейджю̄<br />
| Східний демоноподібний звір<br />
| 0% <br />
| 0%<br />
|-<br />
| [[File:Icon_th175.png|16px]] [[th175|<small>'''TH17.5'''</small>]]<br />
| 東方剛欲異聞<br />
| То̄хо̄ Ґо̄йоку Ібун<br />
| Східна дивна історія про скупість<br />
| 0% <br />
| 0%<br />
|-<br />
| [[File:Icon_th18.png|16px]] [[th18|<small>'''TH18'''</small>]]<br />
| 東方虹龍洞<br />
| То̄хо̄ Ко̄рю̄до̄<br />
| Східна печера веселкового дракона<br />
| 0% <br />
| 0%<br />
|-<br />
| [[File:Icon_th185.png|16px]] [[th185|<small>'''TH18.5'''</small>]]<br />
| バレットフィリア達の闇市場<br />
| Бареттофіріа-тачі но Яміїчіба<br />
| Чорний ринок кулефілів<br />
| 0% <br />
| 0%<br />
|-<br />
| [[File:Icon_th19.png|16px]] [[th19|<small>'''TH19'''</small>]]<br />
| 東方獣王園<br />
| То̄хо̄ Джю̄о̄ен<br />
| Східний сад короля звірів<br />
| 5% <br />
| 0%<br />
|}<br />
<br />
== Система Коваленко ==<br />
:''Основна стаття: [[wikipedia:uk:Кирилізація японської мови|Вікіпедія — Кирилізація японської мови]]''<br />
Система японсько-української [[:w:uk:практична транскрипція|практичної транскрипції]] за Коваленком О. (2012). Складена на основі порівняльного аналізу фонематичних та фонетичних систем японської та української мов. На відміну від інших систем спирається на результати досліджень японських мовознавців 2-ї половини ХХ – початку ХХІ ст.<br />
<br />
{| class="wikitable" width=70% style="text-align: center; font-size:95%"<br />
|-<br />
|bgcolor="#FFFDDD"| あ / ア]&nbsp; а<br />
|bgcolor="#FFFDDD"| い / イ &nbsp; і<br />
|bgcolor="#FFFDDD"| う / ウ &nbsp; у<br />
|bgcolor="#FFFDDD"| え / エ &nbsp; е<br />
|bgcolor="#FFFDDD"| お / オ &nbsp; о<br />
|colspan="3" bgcolor="#F7F7F7"|&nbsp;<br />
|-<br />
|bgcolor="#FFFDDD"| か / カ &nbsp; ка<br />
|bgcolor="#FFFDDD"| き / キ &nbsp; кі<br />
|bgcolor="#FFFDDD"| く / ク &nbsp; ку<br />
|bgcolor="#FFFDDD"| け / ケ &nbsp; ке<br />
|bgcolor="#FFFDDD"| こ / コ &nbsp; ко<br />
|bgcolor="#DDEBFF"| きゃ / キャ &nbsp; кя<br />
|bgcolor="#DDEBFF"| きゅ / キュ &nbsp; кю<br />
|bgcolor="#DDEBFF"| きょ / キョ &nbsp; кьо<br />
|-<br />
|bgcolor="#FFFDDD"| さ / サ &nbsp; са<br />
|bgcolor="#FFFDDD"| し / シ &nbsp; '''ші'''<br />
|bgcolor="#FFFDDD"| す / ス &nbsp; су<br />
|bgcolor="#FFFDDD"| せ / セ &nbsp; се<br />
|bgcolor="#FFFDDD"| そ / ソ &nbsp; со<br />
|bgcolor="#DDEBFF"| しゃ / シャ &nbsp; '''шя'''<br />
|bgcolor="#DDEBFF"| しゅ / シュ &nbsp; '''шю'''<br />
|bgcolor="#DDEBFF"| しょ / ショ &nbsp; '''шьо'''<br />
|-<br />
|bgcolor="#FFFDDD"| た / タ &nbsp; та<br />
|bgcolor="#FFFDDD"| ち / チ &nbsp; '''чі'''<br />
|bgcolor="#FFFDDD"| つ / ツ &nbsp; цу<br />
|bgcolor="#FFFDDD"| て / テ &nbsp; те<br />
|bgcolor="#FFFDDD"| と / ト &nbsp; то<br />
|bgcolor="#DDEBFF"| ちゃ / チャ &nbsp; '''чя'''<br />
|bgcolor="#DDEBFF"| ちゅ / チュ &nbsp; '''чю'''<br />
|bgcolor="#DDEBFF"| ちょ / チョ &nbsp; '''чьо'''<br />
|-<br />
|bgcolor="#FFFDDD"| な / ナ &nbsp; на<br />
|bgcolor="#FFFDDD"| に / ニ &nbsp; ні<br />
|bgcolor="#FFFDDD"| ぬ / ヌ &nbsp; ну<br />
|bgcolor="#FFFDDD"| ね / ネ &nbsp; не<br />
|bgcolor="#FFFDDD"| の / ノ &nbsp; но<br />
|bgcolor="#DDEBFF"| にゃ / ニャ &nbsp; ня<br />
|bgcolor="#DDEBFF"| にゅ / ニュ &nbsp; ню<br />
|bgcolor="#DDEBFF"| にょ / ニョ &nbsp; ньо<br />
|-<br />
|bgcolor="#FFFDDD"| は / ハ &nbsp; ха<br />
|bgcolor="#FFFDDD"| ひ / ヒ &nbsp; хі<br />
|bgcolor="#FFFDDD"| ふ / フ &nbsp; фу<br />
|bgcolor="#FFFDDD"| へ / ヘ &nbsp; хе<br />
|bgcolor="#FFFDDD"| ほ / ホ &nbsp; хо<br />
|bgcolor="#DDEBFF"| ひゃ / ヒャ &nbsp; хя<br />
|bgcolor="#DDEBFF"| ひゅ / ヒュ &nbsp; хю<br />
|bgcolor="#DDEBFF"| ひょ / ヒョ &nbsp; хьо<br />
|-<br />
|bgcolor="#FFFDDD"| ま / マ &nbsp; ма<br />
|bgcolor="#FFFDDD"| み / ミ &nbsp; мі<br />
|bgcolor="#FFFDDD"| む / ム &nbsp; му<br />
|bgcolor="#FFFDDD"| め / メ &nbsp; ме<br />
|bgcolor="#FFFDDD"| も / モ &nbsp; мо<br />
|bgcolor="#DDEBFF"| みゃ / ミャ &nbsp; мя<br />
|bgcolor="#DDEBFF"| みゅ / ミュ &nbsp; мю<br />
|bgcolor="#DDEBFF"| みょ / ミョ &nbsp; мьо<br />
|-<br />
|bgcolor="#FFFDDD"| や / ヤ &nbsp; я<br />
|bgcolor="#F7F7F7"| &nbsp;<br />
|bgcolor="#FFFDDD"| ゆ / ユ &nbsp; ю<br />
|bgcolor="#F7F7F7"| &nbsp;<br />
|bgcolor="#FFFDDD"| よ / ヨ &nbsp; йо<br />
|bgcolor="#F7F7F7" colspan=3| &nbsp;<br />
|-<br />
|bgcolor="#FFFDDD"| ら / ラ &nbsp; ра<br />
|bgcolor="#FFFDDD"| り / リ &nbsp; рі<br />
|bgcolor="#FFFDDD"| る / ル &nbsp; ру<br />
|bgcolor="#FFFDDD"| れ / レ &nbsp; ре<br />
|bgcolor="#FFFDDD"| ろ / ロ &nbsp; ро<br />
|bgcolor="#DDEBFF"| りゃ / リャ &nbsp; ря<br />
|bgcolor="#DDEBFF"| りゅ / リュ &nbsp; рю<br />
|bgcolor="#DDEBFF"| りょ / リョ &nbsp; рьо<br />
|-<br />
|bgcolor="#FFFDDD"| わ / ワ &nbsp; ва<br />
|bgcolor="#F7F7F7" colspan=3| &nbsp;<br />
|bgcolor="#FFFDDD"| を / ヲ &nbsp; о<br />
|bgcolor="#F7F7F7" colspan=3| &nbsp;<br />
|-<br />
|bgcolor="#FFFDDD"| ん / ン &nbsp; н<br />
|bgcolor="#F7F7F7" colspan=4| &nbsp;<br />
|bgcolor="#F7F7F7" colspan=3| &nbsp;<br />
|-<br />
|<br />
|-<br />
|bgcolor="#FFDDDD"| が / ガ &nbsp; ґа<br />
|bgcolor="#FFDDDD"| ぎ / ギ &nbsp; ґі<br />
|bgcolor="#FFDDDD"| ぐ / グ &nbsp; ґу<br />
|bgcolor="#FFDDDD"| げ / ゲ &nbsp; ґе<br />
|bgcolor="#FFDDDD"| ご / ゴ &nbsp; ґо<br />
|bgcolor="#DDEBFF"| ぎゃ / ギャ &nbsp; ґя<br />
|bgcolor="#DDEBFF"| ぎゅ / ギュ &nbsp; ґю<br />
|bgcolor="#DDEBFF"| ぎょ / ギョ &nbsp; ґьо<br />
|-<br />
|bgcolor="#FFDDDD"| ざ / ザ &nbsp; дза<br />
|bgcolor="#FFDDDD"| じ / ジ &nbsp; '''джі'''<br />
|bgcolor="#FFDDDD"| ず / ズ &nbsp; дзу<br />
|bgcolor="#FFDDDD"| ぜ / ゼ &nbsp; дзе<br />
|bgcolor="#FFDDDD"| ぞ / ゾ &nbsp; дзо<br />
|bgcolor="#DDEBFF"| じゃ / ジャ &nbsp; '''джя'''<br />
|bgcolor="#DDEBFF"| じゅ / ジュ &nbsp; '''джю'''<br />
|bgcolor="#DDEBFF"| じょ / ジョ &nbsp; '''джьо'''<br />
|-<br />
|bgcolor="#FFDDDD"| だ / ダ &nbsp; да<br />
|bgcolor="#FFDDDD"| ぢ / ヂ &nbsp; '''джі'''<br />
|bgcolor="#FFDDDD"| づ / ヅ &nbsp; дзу<br />
|bgcolor="#FFDDDD"| で / デ &nbsp; де<br />
|bgcolor="#FFDDDD"| ど / ド &nbsp; до<br />
|bgcolor="#DDEBFF"| ぢゃ / ヂャ &nbsp; '''джя'''<br />
|bgcolor="#DDEBFF"| ぢゅ / ヂュ &nbsp; '''джю'''<br />
|bgcolor="#DDEBFF"| ぢょ / ヂョ &nbsp; '''джьо'''<br />
|-<br />
|bgcolor="#FFDDDD"| ば / バ &nbsp; ба<br />
|bgcolor="#FFDDDD"| び / ビ &nbsp; бі<br />
|bgcolor="#FFDDDD"| ぶ / ブ &nbsp; бу<br />
|bgcolor="#FFDDDD"| べ / ベ &nbsp; бе<br />
|bgcolor="#FFDDDD"| ぼ / ボ &nbsp; бо<br />
|bgcolor="#DDEBFF"| びゃ / ビャ &nbsp; бя<br />
|bgcolor="#DDEBFF"| びゅ / ビュ &nbsp; бю<br />
|bgcolor="#DDEBFF"| びょ / ビョ &nbsp; бьо<br />
|-<br />
|bgcolor="#FFDDDD"| ぱ / パ &nbsp; па<br />
|bgcolor="#FFDDDD"| ぴ / ピ &nbsp; пі<br />
|bgcolor="#FFDDDD"| ぷ / プ &nbsp; пу<br />
|bgcolor="#FFDDDD"| ぺ / ペ &nbsp; пе<br />
|bgcolor="#FFDDDD"| ぽ / ポ &nbsp; по<br />
|bgcolor="#DDEBFF"| ぴゃ / ピャ &nbsp; пя<br />
|bgcolor="#DDEBFF"| ぴゅ / ピュ &nbsp; пю<br />
|bgcolor="#DDEBFF"| ぴょ / ピョ &nbsp; пьо<br />
|}<br />
<br />
{|width=100%<br />
|valign="top" width=30%|<br />
*1) Японські короткі голосні <span style='color: blue'>/а, і, u, е, о/</span> записуються українськими літерами <span style='color: red'>'''а''', '''і''', '''у''', '''е''', '''о'''</span>.<br />
*2) Голосна <span style='color: blue'>/і/</span> записується як:<br />
:* <span style='color: red'>'''й'''</span> (1) в дифтонгах <span style='color: blue'>/ai, ui, oi/ ([аi̯], [ui̯], [oi̯])</span>; (2) після голосного в кінці складу або в кінці слова. <br />
:::<span style='color: green'>''Приклад'': 愛知 [[:w:uk:префектура Айті|А'''й'''чі]] [Ай-чі]; 新井白石 [[:w:uk:Арай Хакусекі|Ара'''й''' Хакусекі]].</span><br />
:* <span style='color: red'>'''ї'''</span> (1) всередині слова на початку складу, після голосної <span style='color: blue'>/ai, ii, ui, ei, oi/ ([а.i], [i.i], [u.i], [e.i], [o.i])</span>; (2) перед апострофом. <br />
:::<span style='color: green'>''Приклад'': 廿日市 [[:w:uk:Хацукаїті|Хацука'''ї'''чі]] [Хацука-їчі].</span><br />
*3) Сполучення <span style='color: blue'>/ei/,</span> що може вимовлятися як '''e''' <span style='color: blue'>[e:]</span> або '''eй''' <span style='color: blue'>[ei̯]</span>, передається уніфіковано — <span style='color: red'>'''eй'''</span>. У випадку <span style='color: blue'>[e.i]</span> пишеться <span style='color: red'>'''еї'''</span>.<br />
:::<span style='color: green'>''Приклад'': 先生 [[:w:uk:Сенсей|сенс'''ей''']] [сен-се:, сен-сей].</span><br />
*4) Голосна <span style='color: blue'>/е/</span> записується як <span style='color: red'>'''є'''</span> після голосного <span style='color: blue'>/i/</span> та перед апострофом.<br />
:::<span style='color: green'>''Приклад'': 徳川家康 [[:w:uk:Токуґава Ієясу|Токуґава І'''є'''ясу]]; 善右衛門 Дзен''''є'''мон.</span><br />
*5) Глухі (редуковані) голосні <span style='color: blue'>[i̥]</span> та <span style='color: blue'>[u̥]</span> записуються так само як <span style='color: blue'>/i/</span> та <span style='color: blue'>/u/,</span> але читаються ненаголошеними.<br />
:::<span style='color: green'>''Приклад'': 飛鳥 [[:w:uk:Асука|Ас'''у'''ка]] [А́съка]; 安芸 [[:w:uk:провінція Акі|Ак'''і''']] [А́кь].</span><br />
*6) Довгі голосні:<br />
:*<span style='color: blue'>/аː, uː, еː, оː/ ([aː], [uː], [eː], [oː])</span> записуються як короткі з [[:w:uk:макрон|макроном]], що позначає довготу: <span style='color: red'>'''ā''', '''ӯ''', '''ē''', '''ō'''</span>.<br />
:::<span style='color: green'>''Приклад'': 森 Морі [Морі]; 毛利 [[:w:uk:Рід Морі|М'''ō'''рі]] [Моорі].</span><br />
:*<span style='color: blue'>/iː/ ([iː])</span> записується як <span style='color: red'>'''ії'''</span> для уникнення плутанини '''ī''' та '''ї'''. <br />
:::<span style='color: green'>''Приклад'': 新潟 [[:w:uk:префектура Ніїґата|Н'''ії'''ґата]].</span><br />
:*<span style='color: blue'>[uː]</span> в сполученні <span style='color: blue'>/juː/</span> (ю) записується як <span style='color: red'>'''ю̄'''.</span><br />
:::<span style='color: green'>''Приклад'': 法隆寺 [[:w:uk:монастир Хорю|монастир Хōр'''ю̄''']].</span><br />
|valign="top" width=30%|<br />
*7) Приголосні /<span style='color: blue'>k, s, t, ts, d, n, m, p, r, w/</span>, що творяться як звуки <span style='color: blue'>[k, s, t, t͡s, d, n, m, p, r, w]</span>, записуються літерами <span style='color: red'>'''к''', '''с''', '''т''', '''ц''', '''д''', '''н''', '''м''', '''п''', '''р''', '''в'''</span>. Приголосні /<span style='color: blue'>g, z, b/</span>, що позначають основні звуки <span style='color: blue'>[g, d͡z, b]</span> та алофони <span style='color: blue'>[ŋ, ɣ, z, β]</span>, транскрибуєються уніфіковано в усіх позиціях як <span style='color: red'>'''ґ''', '''дз''', '''б'''</span>.<br />
*8) Приголосна <span style='color: blue'>/h/</span> записується як:<br />
:*<span style='color: red'>'''х'''</span> у сполученнях <span style='color: blue'>/ha, hi, he, ho/ ([ha], [çi], [he], [ho])</span>;<br />
:*<span style='color: red'>'''ф'''</span> у сполученні <span style='color: blue'>/hu/ ([ɸu])</span>.<br />
:::<span style='color: green'>''Приклад'': 白山 [[:w:uk:Хакусан|'''Х'''акусан]] /hakusaɴ/ ; 富士山 [[:w:uk:гора Фудзі|'''Ф'''уджі]] /huzi/.</span><br />
*9) Приголосний <span style='color: blue'>/ɴ/</span> записуємо як:<br />
:*<span style='color: red'>'''м'''</span> перед <span style='color: blue'>/m, b, p/</span>;<br />
:::<span style='color: green'>''Приклад'': 群馬 [[:w:uk:Префектура Ґумма|Ґу'''м'''ма]] /gunɴma/.</span> <br />
:*<span style='color: red'>'''н'''</span> перед іншими приголосними;<br />
:::<span style='color: green'>''Приклад'': 安倍晋三 [[:w:uk:Абе Сіндзо|Абе Ші'''н'''дзō]] /abe siɴzoː/.</span> <br />
:*<span style='color: red'>'''н''''</span> (з апострофом) перед голосними.<br />
:::<span style='color: green'>''Приклад'': 星新一 [[:w:uk:Хосі Сін'їті|Хоші Сі'''н''''їчі]] /hosi siɴiti/.</span><br />
*10) Довгі приголосні записуються подвоєнням відповідних українських приголосних.<br />
*11) Сполучення <span style='color: blue'>/ja, ju/</span> записуються як <span style='color: red'>'''я'''</span> та <span style='color: red'>'''ю'''</span>.<br/>Сполучення <span style='color: blue'>/jo/</span> транскрибується як <span style='color: red'>'''йо'''</span> <span style='color: blue'>[jo]</span> (1) на початку слова; (2) після голосного; (3) перед <span style='color: blue'>/ɴ/</span>. У решті випадків воно записується як <span style='color: red'>'''-ьо'''</span> <span style='color: blu'>[ʲo]</span>.<br />
:::<span style='color: green'>''Приклад'': 横須賀 [[:w:uk:Йокосука|'''Йо'''косука]] /jokosuka/; 将軍 [[:w:uk:сьоґун|ш'''ьō'''ґун]] /sjoguɴ/;.</span><br />
*12) Палаталізовані приголосні <span style='color: blue'>/k, g, m, h, b, p, r/</span>, що творяться як м’які звуки <span style='color: blue'>[kʲ], [gʲ], [mʲ], [ç], [bʲ], [pʲ], [ɾʲ]</span>, записуються українськими <span style='color: red'>'''к''', '''ґ''', '''м''', '''х''', '''б''', '''п''', '''р'''</span>, що артикулюються як напівпом’якшені звуки. М’який приголосний <span style='color: blue'>[ɲ]</span> записується м’яким <span style='color: red'>'''н'''.</span><br/>Палаталізовані приголосні <span style='color: blue'>/s, z, t (ts)/</span>, що творяться як дуже м’які шиплячі <span style='color: blue'>[ɕ, d͡ʑ, t͡ɕ]</span>, записуються українськими напівпом’якшеними шиплячими <span style='color: red'>'''ш''', '''дж''', '''ч'''</span>.<br />
|}<br />
<br />
== Система Кірносової-Цісар ==<br />
Українська китайська транскрипція Кірносової-Цісар (УКТ) розроблена насамперед для носіїв української мови і не призначена для вивчення китайської мови. Система створена на фонологічних засадах і адаптована до артикуляційної бази українських мовців.<br />
<br />
[[w:uk:Кирилізація китайської мови|Посилання на систему Кірносової-Цісар]].</div>
Egor
https://www.thpatch.net/w/index.php?title=Patch:Translatable_content&diff=2603126
Patch:Translatable content
2023-10-22T14:57:30Z
<p>Egor: s/Pachouli/Patchouli/g</p>
<hr />
<div>{{Locked patch page note}}<br />
==Supported languages==<br />
{{Rellink|This section is transcluded from [[Patch:Supported languages]].}}<br />
{{Patch:Supported languages}}<br />
<br />
== Global content ==<br />
==={{thcrap TL include|Hardcoded strings}} ===<br />
==={{thcrap TL include|Hardcoded ASCII strings}} ===<br />
==={{thcrap TL include|Game titles}} ===<br />
<br />
{{thcrap Game|th06}}<br />
<section begin=th06 /><br />
*{{thcrap TL include|th06/Stage titles}}<br />
===Main Story===<br />
*{{thcrap TL include|th06/Reimu's Scenario}}<br />
*{{thcrap TL include|th06/Marisa's Scenario}}<br />
===Extra Story===<br />
*{{thcrap TL include|th06/Reimu's Extra}}<br />
*{{thcrap TL include|th06/Marisa's Extra}}<br />
===Endings===<br />
*{{thcrap TL include|th06/Reimu's Endings}}<br />
*{{thcrap TL include|th06/Marisa's Endings}}<br />
==={{thcrap TL include|th06/Spell cards}}===<br />
==={{thcrap TL include|th06/Music}}===<br />
==={{thcrap TL include|th06/Images|Images}}===<br />
===Outside the game===<br />
*{{thcrap TL include|th06/HTML Manual}}<br />
*{{thcrap TL include|th06/omake.txt}}<br />
<section end=th06 /><br />
<br />
{{thcrap Game|th07}}<br />
<section begin=th07 /><br />
===Main Story===<br />
*{{thcrap TL include|th07/Reimu's Scenario}}<br />
*{{thcrap TL include|th07/Marisa's Scenario}}<br />
*{{thcrap TL include|th07/Sakuya's Scenario}}<br />
===Extra and Phantasm Story===<br />
*{{thcrap TL include|th07/Reimu's Extra and Phantasm}}<br />
*{{thcrap TL include|th07/Marisa's Extra and Phantasm}}<br />
*{{thcrap TL include|th07/Sakuya's Extra and Phantasm}}<br />
===Endings===<br />
*{{thcrap TL include|th07/Reimu's Endings}}<br />
*{{thcrap TL include|th07/Marisa's Endings}}<br />
*{{thcrap TL include|th07/Sakuya's Endings}}<br />
==={{thcrap TL include|th07/Spell cards}}===<br />
==={{thcrap TL include|th07/Music}}===<br />
==={{thcrap TL include|th07/Images|Images}}===<br />
===Outside the game===<br />
*{{thcrap TL include|th07/HTML Manual}}<br />
*{{thcrap TL include|th07/characters setting.txt}}<br />
*{{thcrap TL include|th07/omake.txt}}<br />
*{{thcrap TL include|th07/omake (trial).txt}}<br />
<section end=th07 /><br />
<br />
{{thcrap Game|th075}}<br />
<section begin=th075 /><br />
===Main Story===<br />
*{{thcrap TL include|th075/Reimu's Scenario}}<br />
*{{thcrap TL include|th075/Marisa's Scenario}}<br />
*{{thcrap TL include|th075/Sakuya's Scenario}}<br />
*{{thcrap TL include|th075/Alice's Scenario}}<br />
*{{thcrap TL include|th075/Patchouli's Scenario}}<br />
*{{thcrap TL include|th075/Youmu's Scenario}}<br />
*{{thcrap TL include|th075/Remilia's Scenario}}<br />
*{{thcrap TL include|th075/Yuyuko's Scenario}}<br />
*{{thcrap TL include|th075/Yukari's Scenario}}<br />
*{{thcrap TL include|th075/Suika's Scenario}}<br />
===Endings===<br />
*{{thcrap TL include|th075/Reimu's Ending}}<br />
*{{thcrap TL include|th075/Marisa's Ending}}<br />
*{{thcrap TL include|th075/Sakuya's Ending}}<br />
*{{thcrap TL include|th075/Alice's Ending}}<br />
*{{thcrap TL include|th075/Patchouli's Ending}}<br />
*{{thcrap TL include|th075/Youmu's Ending}}<br />
*{{thcrap TL include|th075/Remilia's Ending}}<br />
*{{thcrap TL include|th075/Yuyuko's Ending}}<br />
*{{thcrap TL include|th075/Yukari's Ending}}<br />
*{{thcrap TL include|th075/Suika's Ending}}<br />
===VS Match Scripts===<br />
*{{thcrap TL include|th075/Reimu's Script}}<br />
*{{thcrap TL include|th075/Marisa's Script}}<br />
*{{thcrap TL include|th075/Sakuya's Script}}<br />
*{{thcrap TL include|th075/Alice's Script}}<br />
*{{thcrap TL include|th075/Patchouli's Script}}<br />
*{{thcrap TL include|th075/Youmu's Script}}<br />
*{{thcrap TL include|th075/Remilia's Script}}<br />
*{{thcrap TL include|th075/Yuyuko's Script}}<br />
*{{thcrap TL include|th075/Yukari's Script}}<br />
*{{thcrap TL include|th075/Suika's Script}}<br />
*{{thcrap TL include|th075/Meiling's Script}}<br />
==={{thcrap TL include|th075/Music}}===<br />
==={{thcrap TL include|th075/Images|Images}}===<br />
*{{thcrap TL include|th075/Images-SpellCard}}<br />
===Outside the game===<br />
*{{thcrap TL include|th075/omake.txt}}<br />
<section end=th075 /><br />
<br />
{{thcrap Game|th08}}<br />
<section begin=th08 /><br />
===Main Story===<br />
*{{thcrap TL include|th08/Boundary Team's Scenario}}<br />
*{{thcrap TL include|th08/Magic Team's Scenario}}<br />
*{{thcrap TL include|th08/Scarlet Team's Scenario}}<br />
*{{thcrap TL include|th08/Ghost Team's Scenario}}<br />
===Extra Story===<br />
*{{thcrap TL include|th08/Boundary Team's Extra}}<br />
*{{thcrap TL include|th08/Magic Team's Extra}}<br />
*{{thcrap TL include|th08/Scarlet Team's Extra}}<br />
*{{thcrap TL include|th08/Ghost Team's Extra}}<br />
===Endings===<br />
*{{thcrap TL include|th08/Boundary Team's Endings}}<br />
*{{thcrap TL include|th08/Magic Team's Endings}}<br />
*{{thcrap TL include|th08/Scarlet Team's Endings}}<br />
*{{thcrap TL include|th08/Ghost Team's Endings}}<br />
==={{thcrap TL include|th08/Spell cards}}===<br />
==={{thcrap TL include|th08/Music}}===<br />
==={{thcrap TL include|th08/Images|Images}}===<br />
===Outside the game===<br />
*{{thcrap TL include|th08/HTML Manual}}<br />
*{{thcrap TL include|th08/characters setting.txt}}<br />
*{{thcrap TL include|th08/omake.txt}}<br />
*{{thcrap TL include|th08/omake (trial).txt}}<br />
<section end=th08 /><br />
<br />
{{thcrap Game|th09}}<br />
<section begin=th09 /><br />
===Main Story===<br />
*{{thcrap TL include|th09/Reimu's Scenario}}<br />
*{{thcrap TL include|th09/Marisa's Scenario}}<br />
*{{thcrap TL include|th09/Sakuya's Scenario}}<br />
*{{thcrap TL include|th09/Youmu's Scenario}}<br />
*{{thcrap TL include|th09/Reisen's Scenario}}<br />
*{{thcrap TL include|th09/Cirno's Scenario}}<br />
*{{thcrap TL include|th09/Lyrica's Scenario}}<br />
*{{thcrap TL include|th09/Mystia's Scenario}}<br />
*{{thcrap TL include|th09/Tewi's Scenario}}<br />
*{{thcrap TL include|th09/Aya's Scenario}}<br />
*{{thcrap TL include|th09/Medicine's Scenario}}<br />
*{{thcrap TL include|th09/Yuuka's Scenario}}<br />
*{{thcrap TL include|th09/Komachi's Scenario}}<br />
*{{thcrap TL include|th09/Eiki's Scenario}}<br />
===VS Match Scripts===<br />
*{{thcrap TL include|th09/Reimu's Script}}<br />
*{{thcrap TL include|th09/Marisa's Script}}<br />
*{{thcrap TL include|th09/Sakuya's Script}}<br />
*{{thcrap TL include|th09/Youmu's Script}}<br />
*{{thcrap TL include|th09/Reisen's Script}}<br />
*{{thcrap TL include|th09/Cirno's Script}}<br />
*{{thcrap TL include|th09/Lyrica's Script}}<br />
*{{thcrap TL include|th09/Mystia's Script}}<br />
*{{thcrap TL include|th09/Tewi's Script}}<br />
*{{thcrap TL include|th09/Aya's Script}}<br />
*{{thcrap TL include|th09/Medicine's Script}}<br />
*{{thcrap TL include|th09/Yuuka's Script}}<br />
*{{thcrap TL include|th09/Komachi's Script}}<br />
*{{thcrap TL include|th09/Eiki's Script}}<br />
*{{thcrap TL include|th09/Merlin's Script}}<br />
*{{thcrap TL include|th09/Lunasa's Script}}<br />
===Endings===<br />
*{{thcrap TL include|th09/Reimu's Endings}}<br />
*{{thcrap TL include|th09/Marisa's Endings}}<br />
*{{thcrap TL include|th09/Sakuya's Endings}}<br />
*{{thcrap TL include|th09/Youmu's Endings}}<br />
*{{thcrap TL include|th09/Reisen's Endings}}<br />
*{{thcrap TL include|th09/Cirno's Endings}}<br />
*{{thcrap TL include|th09/Lyrica's Endings}}<br />
*{{thcrap TL include|th09/Mystia's Endings}}<br />
*{{thcrap TL include|th09/Tewi's Endings}}<br />
*{{thcrap TL include|th09/Aya's Endings}}<br />
*{{thcrap TL include|th09/Medicine's Endings}}<br />
*{{thcrap TL include|th09/Yuuka's Endings}}<br />
*{{thcrap TL include|th09/Komachi's Endings}}<br />
*{{thcrap TL include|th09/Eiki's Endings}}<br />
==={{thcrap TL include|th09/Spell cards}}===<br />
==={{thcrap TL include|th09/Music}}===<br />
==={{thcrap TL include|th09/Images|Images}}===<br />
===Outside the game===<br />
*{{thcrap TL include|th09/HTML Manual}}<br />
*{{thcrap TL include|th09/characters setting.txt}}<br />
*{{thcrap TL include|th09/omake.txt}}<br />
*{{thcrap TL include|th09/omake (trial).txt}}<br />
<section end=th09 /><br />
<br />
{{thcrap Game|th095}}<br />
<section begin=th095 /><br />
==={{thcrap TL include|th095/Spell cards}}===<br />
==={{thcrap TL include|th095/Aya's mission comments}}===<br />
==={{thcrap TL include|th095/Music}}===<br />
==={{thcrap TL include|th095/Help messages}}===<br />
==={{thcrap TL include|th095/Images|Images}}===<br />
===Outside the game===<br />
*{{thcrap TL include|th095/omake.txt}}<br />
<section end=th095 /><br />
<br />
{{thcrap Game|th10}}<br />
<section begin=th10 /><br />
===Main Story===<br />
*{{thcrap TL include|th10/Reimu's Scenario}}<br />
*{{thcrap TL include|th10/Marisa's Scenario}}<br />
===Endings===<br />
*{{thcrap TL include|th10/Reimu's Endings}}<br />
*{{thcrap TL include|th10/Marisa's Endings}}<br />
===Extra Story===<br />
*{{thcrap TL include|th10/Reimu's Extra}}<br />
*{{thcrap TL include|th10/Marisa's Extra}}<br />
==={{thcrap TL include|th10/Spell cards}}===<br />
==={{thcrap TL include|th10/Music}}===<br />
==={{thcrap TL include|th10/Images|Images}}===<br />
===Outside the game===<br />
*{{thcrap TL include|th10/HTML Manual}}<br />
*{{thcrap TL include|th10/characters setting.txt}}<br />
*{{thcrap TL include|th10/omake.txt}}<br />
<section end=th10 /><br />
<br />
{{thcrap Game|alcostg}}<br />
<section begin=alcostg/><br />
==={{thcrap TL include|alcostg/Spell cards}}===<br />
==={{thcrap TL include|alcostg/Images|Images}}===<br />
<section end=alcostg /><br />
<br />
{{thcrap Game|th105}}<br />
<section begin=th105 /><br />
===Main Story===<br />
*{{thcrap TL include|th105/Reimu's Scenario}}<br />
*{{thcrap TL include|th105/Marisa's Scenario}}<br />
*{{thcrap TL include|th105/Sakuya's Scenario}}<br />
*{{thcrap TL include|th105/Alice's Scenario}}<br />
*{{thcrap TL include|th105/Patchouli's Scenario}}<br />
*{{thcrap TL include|th105/Youmu's Scenario}}<br />
*{{thcrap TL include|th105/Remilia's Scenario}}<br />
*{{thcrap TL include|th105/Yuyuko's Scenario}}<br />
*{{thcrap TL include|th105/Yukari's Scenario}}<br />
*{{thcrap TL include|th105/Suika's Scenario}}<br />
*{{thcrap TL include|th105/Reisen's Scenario}}<br />
*{{thcrap TL include|th105/Aya's Scenario}}<br />
*{{thcrap TL include|th105/Komachi's Scenario}}<br />
*{{thcrap TL include|th105/Iku's Scenario}}<br />
*{{thcrap TL include|th105/Tenshi's Scenario}}<br />
===Endings===<br />
*{{thcrap TL include|th105/Reimu's Endings}}<br />
*{{thcrap TL include|th105/Marisa's Endings}}<br />
*{{thcrap TL include|th105/Sakuya's Endings}}<br />
*{{thcrap TL include|th105/Alice's Endings}}<br />
*{{thcrap TL include|th105/Patchouli's Endings}}<br />
*{{thcrap TL include|th105/Youmu's Endings}}<br />
*{{thcrap TL include|th105/Remilia's Endings}}<br />
*{{thcrap TL include|th105/Yuyuko's Endings}}<br />
*{{thcrap TL include|th105/Yukari's Endings}}<br />
*{{thcrap TL include|th105/Suika's Endings}}<br />
*{{thcrap TL include|th105/Reisen's Endings}}<br />
*{{thcrap TL include|th105/Aya's Endings}}<br />
*{{thcrap TL include|th105/Komachi's Endings}}<br />
*{{thcrap TL include|th105/Iku's Endings}}<br />
*{{thcrap TL include|th105/Tenshi's Endings}}<br />
===Win quotes===<br />
*{{thcrap TL include|th105/Reimu's Win Quotes}}<br />
*{{thcrap TL include|th105/Marisa's Win Quotes}}<br />
*{{thcrap TL include|th105/Sakuya's Win Quotes}}<br />
*{{thcrap TL include|th105/Alice's Win Quotes}}<br />
*{{thcrap TL include|th105/Patchouli's Win Quotes}}<br />
*{{thcrap TL include|th105/Youmu's Win Quotes}}<br />
*{{thcrap TL include|th105/Remilia's Win Quotes}}<br />
*{{thcrap TL include|th105/Yuyuko's Win Quotes}}<br />
*{{thcrap TL include|th105/Yukari's Win Quotes}}<br />
*{{thcrap TL include|th105/Suika's Win Quotes}}<br />
*{{thcrap TL include|th105/Reisen's Win Quotes}}<br />
*{{thcrap TL include|th105/Aya's Win Quotes}}<br />
*{{thcrap TL include|th105/Komachi's Win Quotes}}<br />
*{{thcrap TL include|th105/Iku's Win Quotes}}<br />
*{{thcrap TL include|th105/Tenshi's Win Quotes}}<br />
==={{thcrap TL include|th105/Spell cards}}===<br />
===[https://www.thpatch.net/wiki/Special:Translate?taction=translate&group=themedb Music titles translation]===<br />
==={{thcrap TL include|th105/Images|Images}}===<br />
==={{thcrap TL include|th105/Images-Menu|Images Menus}}===<br />
===Outside the game===<br />
*{{thcrap TL include|th105/omake.txt}}<br />
<section end=th105 /><br />
<br />
{{thcrap Game|th11}}<br />
<section begin=th11 /><br />
===Main Story===<br />
*{{thcrap TL include|th11/Reimu and Yukari's Scenario}}<br />
*{{thcrap TL include|th11/Reimu and Suika's Scenario}}<br />
*{{thcrap TL include|th11/Reimu and Aya's Scenario}}<br />
*{{thcrap TL include|th11/Marisa and Alice's Scenario}}<br />
*{{thcrap TL include|th11/Marisa and Patchouli's Scenario}}<br />
*{{thcrap TL include|th11/Marisa and Nitori's Scenario}}<br />
===Endings===<br />
*{{thcrap TL include|th11/Reimu's Endings}}<br />
*{{thcrap TL include|th11/Marisa's Endings}}<br />
===Extra Story===<br />
*{{thcrap TL include|th11/Reimu and Yukari's Extra}}<br />
*{{thcrap TL include|th11/Reimu and Suika's Extra}}<br />
*{{thcrap TL include|th11/Reimu and Aya's Extra}}<br />
*{{thcrap TL include|th11/Marisa and Alice's Extra}}<br />
*{{thcrap TL include|th11/Marisa and Patchouli's Extra}}<br />
*{{thcrap TL include|th11/Marisa and Nitori's Extra}}<br />
==={{thcrap TL include|th11/Spell cards}}===<br />
==={{thcrap TL include|th11/Music}}===<br />
==={{thcrap TL include|th11/Images|Images}}===<br />
===Outside the game===<br />
*{{thcrap TL include|th11/HTML Manual}}<br />
*{{thcrap TL include|th11/characters setting.txt}}<br />
*{{thcrap TL include|th11/omake.txt}}<br />
<section end=th11 /><br />
<br />
{{thcrap Game|th12}}<br />
<section begin=th12 /><br />
===Main Story===<br />
*{{thcrap TL include|th12/Reimu A's Scenario}}<br />
*{{thcrap TL include|th12/Reimu B's Scenario}}<br />
*{{thcrap TL include|th12/Marisa A's Scenario}}<br />
*{{thcrap TL include|th12/Marisa B's Scenario}}<br />
*{{thcrap TL include|th12/Sanae A's Scenario}}<br />
*{{thcrap TL include|th12/Sanae B's Scenario}}<br />
===Endings===<br />
*{{thcrap TL include|th12/Reimu's Endings}}<br />
*{{thcrap TL include|th12/Marisa's Endings}}<br />
*{{thcrap TL include|th12/Sanae's Endings}}<br />
===Extra Story===<br />
*{{thcrap TL include|th12/Reimu A's Extra}}<br />
*{{thcrap TL include|th12/Reimu B's Extra}}<br />
*{{thcrap TL include|th12/Marisa A's Extra}}<br />
*{{thcrap TL include|th12/Marisa B's Extra}}<br />
*{{thcrap TL include|th12/Sanae A's Extra}}<br />
*{{thcrap TL include|th12/Sanae B's Extra}}<br />
==={{thcrap TL include|th12/Spell cards}}===<br />
==={{thcrap TL include|th12/Music}}===<br />
==={{thcrap TL include|th12/Images|Images}}===<br />
===Outside the game===<br />
*{{thcrap TL include|th12/HTML Manual}}<br />
*{{thcrap TL include|th12/characters setting and extra story.txt}}<br />
*{{thcrap TL include|th12/omake.txt}}<br />
<section end=th12 /><br />
<br />
{{thcrap Game|th123}}<br />
<section begin=th123 /><br />
===Main Story===<br />
*{{thcrap TL include|th123/Sanae's Scenario}}<br />
*{{thcrap TL include|th123/Cirno's Scenario}}<br />
*{{thcrap TL include|th123/Meiling's Scenario}}<br />
===Endings===<br />
*{{thcrap TL include|th123/Sanae's Endings}}<br />
*{{thcrap TL include|th123/Cirno's Endings}}<br />
*{{thcrap TL include|th123/Meiling's Endings}}<br />
===Win quotes===<br />
*{{thcrap TL include|th123/Reimu's Win Quotes}}<br />
*{{thcrap TL include|th123/Marisa's Win Quotes}}<br />
*{{thcrap TL include|th123/Sakuya's Win Quotes}}<br />
*{{thcrap TL include|th123/Alice's Win Quotes}}<br />
*{{thcrap TL include|th123/Patchouli's Win Quotes}}<br />
*{{thcrap TL include|th123/Youmu's Win Quotes}}<br />
*{{thcrap TL include|th123/Remilia's Win Quotes}}<br />
*{{thcrap TL include|th123/Yuyuko's Win Quotes}}<br />
*{{thcrap TL include|th123/Yukari's Win Quotes}}<br />
*{{thcrap TL include|th123/Suika's Win Quotes}}<br />
*{{thcrap TL include|th123/Reisen's Win Quotes}}<br />
*{{thcrap TL include|th123/Aya's Win Quotes}}<br />
*{{thcrap TL include|th123/Komachi's Win Quotes}}<br />
*{{thcrap TL include|th123/Iku's Win Quotes}}<br />
*{{thcrap TL include|th123/Tenshi's Win Quotes}}<br />
*{{thcrap TL include|th123/Sanae's Win Quotes}}<br />
*{{thcrap TL include|th123/Cirno's Win Quotes}}<br />
*{{thcrap TL include|th123/Meiling's Win Quotes}}<br />
*{{thcrap TL include|th123/Utsuho's Win Quotes}}<br />
*{{thcrap TL include|th123/Suwako's Win Quotes}}<br />
==={{thcrap TL include|th123/Spell cards}}===<br />
===[https://www.thpatch.net/wiki/Special:Translate?taction=translate&group=themedb Music titles translation]===<br />
==={{thcrap TL include|th123/Images|Images}}===<br />
==={{thcrap TL include|th123/Images-Menu|Menu Images}}===<br />
==={{thcrap TL include|th123/Images-105|Th10.5 Duplicate Images}}===<br />
===Outside the game===<br />
*{{thcrap TL include|th123/HTML Manual}}<br />
<section end=th123 /><br />
<br />
{{thcrap Game|th125}}<br />
<section begin=th125 /><br />
==={{thcrap TL include|th125/Spoiler Stage}}===<br />
==={{thcrap TL include|th125/Spell cards}}===<br />
===Mission comments===<br />
*{{thcrap TL include|th125/Aya's mission comments}}<br />
*{{thcrap TL include|th125/Hatate's mission comments}}<br />
<br />
==={{thcrap TL include|th125/Music}}===<br />
==={{thcrap TL include|th125/Help messages}}===<br />
==={{thcrap TL include|th125/Images|Images}}===<br />
===Outside the game===<br />
*{{thcrap TL include|th125/omake.txt}}<br />
<section end=th125 /><br />
<br />
{{thcrap Game|th128}}<br />
<section begin=th128 /><br />
===Main Story===<br />
*{{thcrap TL include|th128/Route A}}<br />
*{{thcrap TL include|th128/Route B}}<br />
*{{thcrap TL include|th128/Route C}}<br />
*{{thcrap TL include|th128/Endings}}<br />
*{{thcrap TL include|th128/Extra}}<br />
==={{thcrap TL include|th128/Spell cards}}===<br />
==={{thcrap TL include|th128/Music}}===<br />
==={{thcrap TL include|th128/Images|Images}}===<br />
===Outside the game===<br />
*{{thcrap TL include|th128/omake.txt}}<br />
<section end=th128 /><br />
<br />
{{thcrap Game|th13}}<br />
<section begin=th13 /><br />
===Main Story===<br />
*{{thcrap TL include|th13/Reimu's Scenario}}<br />
*{{thcrap TL include|th13/Marisa's Scenario}}<br />
*{{thcrap TL include|th13/Sanae's Scenario}}<br />
*{{thcrap TL include|th13/Youmu's Scenario}}<br />
===Endings===<br />
*{{thcrap TL include|th13/Reimu's Endings}}<br />
*{{thcrap TL include|th13/Marisa's Endings}}<br />
*{{thcrap TL include|th13/Sanae's Endings}}<br />
*{{thcrap TL include|th13/Youmu's Endings}}<br />
===Extra Story===<br />
*{{thcrap TL include|th13/Reimu's Extra}}<br />
*{{thcrap TL include|th13/Marisa's Extra}}<br />
*{{thcrap TL include|th13/Sanae's Extra}}<br />
*{{thcrap TL include|th13/Youmu's Extra}}<br />
==={{thcrap TL include|th13/Spell cards}}===<br />
==={{thcrap TL include|th13/Music}}===<br />
==={{thcrap TL include|th13/Images|Images}}===<br />
===Outside the game===<br />
*{{thcrap TL include|th13/HTML Manual}}<br />
*{{thcrap TL include|th13/characters setting and extra story.txt}}<br />
*{{thcrap TL include|th13/omake.txt}}<br />
<section end=th13 /><br />
<br />
{{thcrap Game|th135}}<br />
<section begin=th135 /><br />
==={{thcrap TL include|th135/Summary}}===<br />
===Main Story===<br />
*{{thcrap TL include|th135/Reimu's Scenario}}<br />
*{{thcrap TL include|th135/Marisa's Scenario}}<br />
*{{thcrap TL include|th135/Byakuren's Scenario}}<br />
*{{thcrap TL include|th135/Miko's Scenario}}<br />
*{{thcrap TL include|th135/Ichirin's Scenario}}<br />
*{{thcrap TL include|th135/Futo's Scenario}}<br />
*{{thcrap TL include|th135/Nitori's Scenario}}<br />
*{{thcrap TL include|th135/Koishi's Scenario}}<br />
*{{thcrap TL include|th135/Mamizou's Scenario}}<br />
*{{thcrap TL include|th135/Kokoro's Scenario}}<br />
===Main Story - Spell cards===<br />
*{{thcrap TL include|th135/Reimu's Scenario - Spell cards}}<br />
*{{thcrap TL include|th135/Marisa's Scenario - Spell cards}}<br />
*{{thcrap TL include|th135/Byakuren's Scenario - Spell cards}}<br />
*{{thcrap TL include|th135/Miko's Scenario - Spell cards}}<br />
*{{thcrap TL include|th135/Ichirin's Scenario - Spell cards}}<br />
*{{thcrap TL include|th135/Futo's Scenario - Spell cards}}<br />
*{{thcrap TL include|th135/Nitori's Scenario - Spell cards}}<br />
*{{thcrap TL include|th135/Koishi's Scenario - Spell cards}}<br />
*{{thcrap TL include|th135/Mamizou's Scenario - Spell cards}}<br />
*{{thcrap TL include|th135/Kokoro's Scenario - Spell cards}}<br />
===Endings===<br />
*{{thcrap TL include|th135/Reimu's Endings}}<br />
*{{thcrap TL include|th135/Marisa's Endings}}<br />
*{{thcrap TL include|th135/Byakuren's Endings}}<br />
*{{thcrap TL include|th135/Miko's Endings}}<br />
*{{thcrap TL include|th135/Ichirin's Endings}}<br />
*{{thcrap TL include|th135/Futo's Endings}}<br />
*{{thcrap TL include|th135/Nitori's Endings}}<br />
*{{thcrap TL include|th135/Koishi's Endings}}<br />
*{{thcrap TL include|th135/Mamizou's Endings}}<br />
*{{thcrap TL include|th135/Kokoro's Endings}}<br />
===Win quotes===<br />
*{{thcrap TL include|th135/Reimu's Win Quotes}}<br />
*{{thcrap TL include|th135/Marisa's Win Quotes}}<br />
*{{thcrap TL include|th135/Byakuren's Win Quotes}}<br />
*{{thcrap TL include|th135/Miko's Win Quotes}}<br />
*{{thcrap TL include|th135/Ichirin's Win Quotes}}<br />
*{{thcrap TL include|th135/Futo's Win Quotes}}<br />
*{{thcrap TL include|th135/Nitori's Win Quotes}}<br />
*{{thcrap TL include|th135/Koishi's Win Quotes}}<br />
*{{thcrap TL include|th135/Mamizou's Win Quotes}}<br />
*{{thcrap TL include|th135/Kokoro's Win Quotes}}<br />
==={{thcrap TL include|th135/Act_and_Nut_strings}}===<br />
==={{thcrap TL include|th135/Spell cards}}===<br />
==={{thcrap TL include|th135/Music}}===<br />
===Images===<br />
*{{thcrap TL include|th135/Images-Main|Images}}<br />
*{{thcrap TL include|th135/Images-Menus|Images - Menus}}<br />
*{{thcrap TL include|th135/Images-Newspaper1|Images - Newspaper 1}}<br />
*{{thcrap TL include|th135/Images-Newspaper2|Images - Newspaper 2}}<br />
===Outside the game===<br />
*{{thcrap TL include|th135/omake.txt}}<br />
<section end=th135 /><br />
<br />
{{thcrap Game|th14}}<br />
<section begin=th14 /><br />
===Main Story===<br />
*{{thcrap TL include|th14/Reimu A's Scenario}}<br />
*{{thcrap TL include|th14/Reimu B's Scenario}}<br />
*{{thcrap TL include|th14/Marisa A's Scenario}}<br />
*{{thcrap TL include|th14/Marisa B's Scenario}}<br />
*{{thcrap TL include|th14/Sakuya A's Scenario}}<br />
*{{thcrap TL include|th14/Sakuya B's Scenario}}<br />
===Endings===<br />
*{{thcrap TL include|th14/Reimu's Endings}}<br />
*{{thcrap TL include|th14/Marisa's Endings}}<br />
*{{thcrap TL include|th14/Sakuya's Endings}}<br />
===Extra Story===<br />
*{{thcrap TL include|th14/Reimu A's Extra}}<br />
*{{thcrap TL include|th14/Reimu B's Extra}}<br />
*{{thcrap TL include|th14/Marisa A's Extra}}<br />
*{{thcrap TL include|th14/Marisa B's Extra}}<br />
*{{thcrap TL include|th14/Sakuya A's Extra}}<br />
*{{thcrap TL include|th14/Sakuya B's Extra}}<br />
==={{thcrap TL include|th14/Spell cards}}===<br />
==={{thcrap TL include|th14/Music}}===<br />
==={{thcrap TL include|th14/Images|Images}}===<br />
===Outside the game===<br />
*{{thcrap TL include|th14/HTML Manual}}<br />
*{{thcrap TL include|th14/omake.txt}}<br />
<section end=th14 /><br />
<br />
{{thcrap Game|th143}}<br />
<section begin=th143 /><br />
==={{thcrap TL include|th143/Dialog}}===<br />
==={{thcrap TL include|th143/Spell cards}}===<br />
==={{thcrap TL include|th143/Music}}===<br />
==={{thcrap TL include|th143/Day descriptions}}===<br />
==={{thcrap TL include|th143/Trophies}}===<br />
==={{thcrap TL include|th143/Hints}}===<br />
==={{thcrap TL include|th143/Images|Images}}===<br />
===Outside the game===<br />
*{{thcrap TL include|th143/omake.txt}}<br />
<section end=th143 /><br />
<br />
{{thcrap Game|th145}}<br />
<section begin=th145 /><br />
==={{thcrap TL include|th145/Summary}}===<br />
===Main Story===<br />
*{{thcrap TL include|th145/Reimu's Intro}}<br />
*{{thcrap TL include|th145/Marisa's Scenario}}<br />
*{{thcrap TL include|th145/Kasen's Scenario}}<br />
*{{thcrap TL include|th145/Ichirin's Scenario}}<br />
*{{thcrap TL include|th145/Byakuren's Scenario}}<br />
*{{thcrap TL include|th145/Futo's Scenario}}<br />
*{{thcrap TL include|th145/Miko's Scenario}}<br />
*{{thcrap TL include|th145/Mamizou's Scenario}}<br />
*{{thcrap TL include|th145/Mokou's Scenario}}<br />
*{{thcrap TL include|th145/Shinmyoumaru's Scenario}}<br />
*{{thcrap TL include|th145/Nitori's Scenario}}<br />
*{{thcrap TL include|th145/Koishi's Scenario}}<br />
*{{thcrap TL include|th145/Kokoro's Scenario}}<br />
*{{thcrap TL include|th145/Sumireko's Scenario}}<br />
*{{thcrap TL include|th145/Reimu's Scenario}}<br />
===Main Story - Spell cards===<br />
*{{thcrap TL include|th145/Reimu's Intro - Spell cards}}<br />
*{{thcrap TL include|th145/Marisa's Scenario - Spell cards}}<br />
*{{thcrap TL include|th145/Kasen's Scenario - Spell cards}}<br />
*{{thcrap TL include|th145/Ichirin's Scenario - Spell cards}}<br />
*{{thcrap TL include|th145/Byakuren's Scenario - Spell cards}}<br />
*{{thcrap TL include|th145/Futo's Scenario - Spell cards}}<br />
*{{thcrap TL include|th145/Miko's Scenario - Spell cards}}<br />
*{{thcrap TL include|th145/Mamizou's Scenario - Spell cards}}<br />
*{{thcrap TL include|th145/Mokou's Scenario - Spell cards}}<br />
*{{thcrap TL include|th145/Shinmyoumaru's Scenario - Spell cards}}<br />
*{{thcrap TL include|th145/Nitori's Scenario - Spell cards}}<br />
*{{thcrap TL include|th145/Koishi's Scenario - Spell cards}}<br />
*{{thcrap TL include|th145/Kokoro's Scenario - Spell cards}}<br />
*{{thcrap TL include|th145/Sumireko's Scenario - Spell cards}}<br />
*{{thcrap TL include|th145/Reimu's Scenario - Spell cards}}<br />
===Endings===<br />
*{{thcrap TL include|th145/Marisa's Endings}}<br />
*{{thcrap TL include|th145/Kasen's Endings}}<br />
*{{thcrap TL include|th145/Ichirin's Endings}}<br />
*{{thcrap TL include|th145/Byakuren's Endings}}<br />
*{{thcrap TL include|th145/Futo's Endings}}<br />
*{{thcrap TL include|th145/Miko's Endings}}<br />
*{{thcrap TL include|th145/Mamizou's Endings}}<br />
*{{thcrap TL include|th145/Mokou's Endings}}<br />
*{{thcrap TL include|th145/Shinmyoumaru's Endings}}<br />
*{{thcrap TL include|th145/Nitori's Endings}}<br />
*{{thcrap TL include|th145/Koishi's Endings}}<br />
*{{thcrap TL include|th145/Kokoro's Endings}}<br />
*{{thcrap TL include|th145/Sumireko's Endings}}<br />
*{{thcrap TL include|th145/Reimu's Endings}}<br />
===Win quotes===<br />
*{{thcrap TL include|th145/Reimu's Win Quotes}}<br />
*{{thcrap TL include|th145/Marisa's Win Quotes}}<br />
*{{thcrap TL include|th145/Kasen's Win Quotes}}<br />
*{{thcrap TL include|th145/Ichirin's Win Quotes}}<br />
*{{thcrap TL include|th145/Byakuren's Win Quotes}}<br />
*{{thcrap TL include|th145/Futo's Win Quotes}}<br />
*{{thcrap TL include|th145/Miko's Win Quotes}}<br />
*{{thcrap TL include|th145/Mamizou's Win Quotes}}<br />
*{{thcrap TL include|th145/Mokou's Win Quotes}}<br />
*{{thcrap TL include|th145/Shinmyoumaru's Win Quotes}}<br />
*{{thcrap TL include|th145/Nitori's Win Quotes}}<br />
*{{thcrap TL include|th145/Koishi's Win Quotes}}<br />
*{{thcrap TL include|th145/Kokoro's Win Quotes}}<br />
*{{thcrap TL include|th145/Sumireko's Win Quotes}}<br />
==={{thcrap TL include|th145/Act_and_Nut_strings}}===<br />
==={{thcrap TL include|th145/Spell cards}}===<br />
===[https://www.thpatch.net/wiki/Special:Translate?taction=translate&group=themedb Music titles translation]===<br />
==={{thcrap TL include|th145/Images|Images}}===<br />
===Outside the game===<br />
*{{thcrap TL include|th145/omake.txt}}<br />
<section end=th145 /><br />
<br />
{{thcrap Game|th15}}<br />
<section begin=th15 /><br />
===Main Story===<br />
*{{thcrap TL include|th15/Reimu's Scenario}}<br />
*{{thcrap TL include|th15/Marisa's Scenario}}<br />
*{{thcrap TL include|th15/Sanae's Scenario}}<br />
*{{thcrap TL include|th15/Reisen's Scenario}}<br />
===Endings===<br />
*{{thcrap TL include|th15/Reimu's Endings}}<br />
*{{thcrap TL include|th15/Marisa's Endings}}<br />
*{{thcrap TL include|th15/Sanae's Endings}}<br />
*{{thcrap TL include|th15/Reisen's Endings}}<br />
===Extra Story===<br />
*{{thcrap TL include|th15/Reimu's Extra}}<br />
*{{thcrap TL include|th15/Marisa's Extra}}<br />
*{{thcrap TL include|th15/Sanae's Extra}}<br />
*{{thcrap TL include|th15/Reisen's Extra}}<br />
==={{thcrap TL include|th15/Spell cards}}===<br />
==={{thcrap TL include|th15/Music}}===<br />
==={{thcrap TL include|th15/Images|Images}}===<br />
===Outside the game===<br />
*{{thcrap TL include|th15/omake.txt}}<br />
<section end=th15 /><br />
<br />
{{thcrap Game|th155}}<br />
<section begin=th155 /><br />
===Main Story===<br />
*{{thcrap TL include|th155/Reimu's Scenario}}<br />
*{{thcrap TL include|th155/Marisa's Scenario}}<br />
*{{thcrap TL include|th155/Nitori's Scenario}}<br />
*{{thcrap TL include|th155/Mamizou's Scenario}}<br />
*{{thcrap TL include|th155/Miko's Scenario}}<br />
*{{thcrap TL include|th155/Futo's Scenario}}<br />
*{{thcrap TL include|th155/Reisen's Scenario}}<br />
*{{thcrap TL include|th155/Sumireko's Scenario}}<br />
*{{thcrap TL include|th155/Tenshi's Scenario}}<br />
*{{thcrap TL include|th155/Yukari's Scenario}}<br />
*{{thcrap TL include|th155/Joon's Scenario}}<br />
===Endings===<br />
*{{thcrap TL include|th155/Marisa's Endings}}<br />
*{{thcrap TL include|th155/Nitori's Endings}}<br />
*{{thcrap TL include|th155/Mamizou's Endings}}<br />
*{{thcrap TL include|th155/Miko's Endings}}<br />
*{{thcrap TL include|th155/Futo's Endings}}<br />
*{{thcrap TL include|th155/Reisen's Endings}}<br />
*{{thcrap TL include|th155/Sumireko's Endings}}<br />
*{{thcrap TL include|th155/Tenshi's Endings}}<br />
*{{thcrap TL include|th155/Yukari's Endings}}<br />
*{{thcrap TL include|th155/Joon's Endings}}<br />
===Win quotes===<br />
*{{thcrap TL include|th155/Reimu's Win Quotes}}<br />
*{{thcrap TL include|th155/Marisa's Win Quotes}}<br />
*{{thcrap TL include|th155/Kasen's Win Quotes}}<br />
*{{thcrap TL include|th155/Ichirin's Win Quotes}}<br />
*{{thcrap TL include|th155/Byakuren's Win Quotes}}<br />
*{{thcrap TL include|th155/Futo's Win Quotes}}<br />
*{{thcrap TL include|th155/Miko's Win Quotes}}<br />
*{{thcrap TL include|th155/Mamizou's Win Quotes}}<br />
*{{thcrap TL include|th155/Mokou's Win Quotes}}<br />
*{{thcrap TL include|th155/Shinmyoumaru's Win Quotes}}<br />
*{{thcrap TL include|th155/Nitori's Win Quotes}}<br />
*{{thcrap TL include|th155/Koishi's Win Quotes}}<br />
*{{thcrap TL include|th155/Kokoro's Win Quotes}}<br />
*{{thcrap TL include|th155/Sumireko's Win Quotes}}<br />
*{{thcrap TL include|th155/Reisen's Win Quotes}}<br />
*{{thcrap TL include|th155/Doremy's Win Quotes}}<br />
*{{thcrap TL include|th155/Yukari's Win Quotes}}<br />
*{{thcrap TL include|th155/Tenshi's Win Quotes}}<br />
*{{thcrap TL include|th155/Joon's Win Quotes}}<br />
==={{thcrap TL include|th155/Spell cards}}===<br />
==={{thcrap TL include|th155/Nut and Csv strings|Nut and CSV strings}}===<br />
==={{thcrap TL include|th155/Music}}===<br />
==={{thcrap TL include|th155/Images|Images}}===<br />
==={{thcrap TL include|th155/Images-Characters|Character Name Images}}===<br />
===Outside the game===<br />
*{{thcrap TL include|th155/HTML Manual}}<br />
*{{thcrap TL include|th155/omake.txt}}<br />
<section end=th155 /><br />
<br />
{{thcrap Game|th16}}<br />
<section begin=th16 /><br />
===Main Story===<br />
*{{thcrap TL include|th16/Reimu's Scenario}}<br />
*{{thcrap TL include|th16/Cirno's Scenario}}<br />
*{{thcrap TL include|th16/Aya's Scenario}}<br />
*{{thcrap TL include|th16/Marisa's Scenario}}<br />
<br />
===Endings===<br />
*{{thcrap TL include|th16/Reimu's Endings}}<br />
*{{thcrap TL include|th16/Cirno's Endings}}<br />
*{{thcrap TL include|th16/Aya's Endings}}<br />
*{{thcrap TL include|th16/Marisa's Endings}}<br />
<br />
===Extra Story===<br />
*{{thcrap TL include|th16/Reimu's Extra}}<br />
*{{thcrap TL include|th16/Cirno's Extra}}<br />
*{{thcrap TL include|th16/Aya's Extra}}<br />
*{{thcrap TL include|th16/Marisa's Extra}}<br />
<br />
==={{thcrap TL include|th16/Spell cards}}===<br />
==={{thcrap TL include|th16/Music}}===<br />
==={{thcrap TL include|th16/Images|Images}}===<br />
===Outside the game===<br />
*{{thcrap TL include|th16/omake.txt}}<br />
<section end=th16 /><br />
<br />
{{thcrap Game|th165}}<br />
<section begin=th165 /><br />
<br />
==={{thcrap TL include|th165/Dialog}}===<br />
==={{thcrap TL include|th165/Spell cards}}===<br />
==={{thcrap TL include|th165/Dream comments}}===<br />
==={{thcrap TL include|th165/Trophies}}===<br />
==={{thcrap TL include|th165/Music}}===<br />
==={{thcrap TL include|th165/Images|Images}}===<br />
===Outside the game===<br />
*{{thcrap TL include|th165/omake.txt}}<br />
<section end=th165 /><br />
<br />
{{thcrap Game|th17}}<br />
<section begin=th17 /><br />
===Main Story===<br />
*{{thcrap TL include|th17/Reimu A's Scenario}}<br />
*{{thcrap TL include|th17/Reimu B's Scenario}}<br />
*{{thcrap TL include|th17/Reimu C's Scenario}}<br />
<br />
*{{thcrap TL include|th17/Marisa A's Scenario}}<br />
*{{thcrap TL include|th17/Marisa B's Scenario}}<br />
*{{thcrap TL include|th17/Marisa C's Scenario}}<br />
<br />
*{{thcrap TL include|th17/Youmu A's Scenario}}<br />
*{{thcrap TL include|th17/Youmu B's Scenario}}<br />
*{{thcrap TL include|th17/Youmu C's Scenario}}<br />
<br />
===Endings===<br />
*{{thcrap TL include|th17/Reimu's Endings}}<br />
*{{thcrap TL include|th17/Marisa's Endings}}<br />
*{{thcrap TL include|th17/Youmu's Endings}}<br />
<br />
===Extra Story===<br />
*{{thcrap TL include|th17/Reimu A's Extra}}<br />
*{{thcrap TL include|th17/Reimu B's Extra}}<br />
*{{thcrap TL include|th17/Reimu C's Extra}}<br />
<br />
*{{thcrap TL include|th17/Marisa A's Extra}}<br />
*{{thcrap TL include|th17/Marisa B's Extra}}<br />
*{{thcrap TL include|th17/Marisa C's Extra}}<br />
<br />
*{{thcrap TL include|th17/Youmu A's Extra}}<br />
*{{thcrap TL include|th17/Youmu B's Extra}}<br />
*{{thcrap TL include|th17/Youmu C's Extra}}<br />
<br />
==={{thcrap TL include|th17/Spell cards}}===<br />
==={{thcrap TL include|th17/Music}}===<br />
==={{thcrap TL include|th17/Trophies}}===<br />
{{thcrap TL include|th17/Trophies (Trial)}}<br />
==={{thcrap TL include|th17/Images|Images}}===<br />
===Outside the game===<br />
*{{thcrap TL include|th17/omake.txt}}<br />
<section end=th17 /><br />
<br />
{{thcrap Game|th175}}<br />
<section begin=th175 /><br />
===Main Scenario===<br />
*{{thcrap TL include|th175/Reimu's Scenario}}<br />
*{{thcrap TL include|th175/Marisa's Scenario}}<br />
*{{thcrap TL include|th175/Kanako's Scenario}}<br />
*{{thcrap TL include|th175/Minamitsu's Scenario}}<br />
*{{thcrap TL include|th175/Joon and Shion's Scenario}}<br />
*{{thcrap TL include|th175/Flandre's Scenario}}<br />
*{{thcrap TL include|th175/Yuuma's Scenario}}<br />
<br />
===Endings===<br />
*{{thcrap TL include|th175/Reimu's Endings}}<br />
*{{thcrap TL include|th175/Marisa's Endings}}<br />
*{{thcrap TL include|th175/Kanako's Endings}}<br />
*{{thcrap TL include|th175/Minamitsu's Endings}}<br />
*{{thcrap TL include|th175/Joon and Shion's Endings}}<br />
*{{thcrap TL include|th175/Flandre's Endings}}<br />
*{{thcrap TL include|th175/Yuuma's Endings}}<br />
<br />
==={{thcrap TL include|th175/Spell cards}}===<br />
==={{thcrap TL include|th175/Trophies}}===<br />
==={{thcrap TL include|th175/Nut strings|Nut strings}}===<br />
==={{thcrap TL include|th175/Images|Images}}===<br />
===Outside the game===<br />
*{{thcrap TL include|th175/omake.txt}}<br />
<section end=th175 /><br />
<br />
{{thcrap Game|th18}}<br />
<section begin=th18 /><br />
===Main Story===<br />
*{{thcrap TL include|th18/Reimu's Scenario}}<br />
*{{thcrap TL include|th18/Marisa's Scenario}}<br />
*{{thcrap TL include|th18/Sakuya's Scenario}}<br />
*{{thcrap TL include|th18/Sanae's Scenario}}<br />
===Endings===<br />
*{{thcrap TL include|th18/Reimu's Endings}}<br />
*{{thcrap TL include|th18/Marisa's Endings}}<br />
*{{thcrap TL include|th18/Sakuya's Endings}}<br />
*{{thcrap TL include|th18/Sanae's Endings}}<br />
===Extra Story===<br />
*{{thcrap TL include|th18/Reimu's Extra}}<br />
*{{thcrap TL include|th18/Marisa's Extra}}<br />
*{{thcrap TL include|th18/Sakuya's Extra}}<br />
*{{thcrap TL include|th18/Sanae's Extra}}<br />
==={{thcrap TL include|th18/Spell cards}}===<br />
==={{thcrap TL include|th18/Music}}===<br />
==={{thcrap TL include|th18/Trophies}}===<br />
{{thcrap TL include|th18/Trophies (Trial)}}<br />
==={{thcrap TL include|th18/Abilities}}===<br />
{{thcrap TL include|th18/Abilities (Trial)}}<br />
==={{thcrap TL include|th18/Images|Images}}===<br />
===Outside the game===<br />
*{{thcrap TL include|th18/omake.txt}}<br />
<section end=th18 /><br />
<br />
{{thcrap Game|th185}}<br />
<section begin=th185 /><br />
==={{thcrap TL include|th185/Dialog}}===<br />
==={{thcrap TL include|th185/Spell cards}}===<br />
==={{thcrap TL include|th185/Music}}===<br />
==={{thcrap TL include|th185/Trophies}}===<br />
==={{thcrap TL include|th185/Abilities}}===<br />
==={{thcrap TL include|th185/Market comments}}===<br />
<br />
==={{thcrap TL include|th185/Images|Images}}===<br />
===Outside the game===<br />
*{{thcrap TL include|th185/omake.txt}}<br />
<section end=th185 /><br />
<br />
{{thcrap Game|th19}}<br />
<section begin=th19 /><br />
===Main Story===<br />
*{{thcrap TL include|th19/Reimu's Scenario}}<br />
*{{thcrap TL include|th19/Marisa's Scenario}}<br />
*{{thcrap TL include|th19/Sanae's Scenario}}<br />
*{{thcrap TL include|th19/Ran's Scenario}}<br />
*{{thcrap TL include|th19/Aun's Scenario}}<br />
*{{thcrap TL include|th19/Nazrin's Scenario}}<br />
*{{thcrap TL include|th19/Seiran's Scenario}}<br />
*{{thcrap TL include|th19/Rin's Scenario}}<br />
*{{thcrap TL include|th19/Tsukasa's Scenario}}<br />
*{{thcrap TL include|th19/Mamizou's Scenario}}<br />
*{{thcrap TL include|th19/Yachie's Scenario}}<br />
*{{thcrap TL include|th19/Saki's Scenario}}<br />
*{{thcrap TL include|th19/Yuuma's Scenario}}<br />
*{{thcrap TL include|th19/Suika's Scenario}}<br />
*{{thcrap TL include|th19/Biten's Scenario}}<br />
*{{thcrap TL include|th19/Enoko's Scenario}}<br />
*{{thcrap TL include|th19/Chiyari's Scenario}}<br />
*{{thcrap TL include|th19/Hisami's Scenario}}<br />
*{{thcrap TL include|th19/Zanmu's Scenario}}<br />
<br />
===VS Match Scripts===<br />
*{{thcrap TL include|th19/Reimu's Script}}<br />
*{{thcrap TL include|th19/Marisa's Script}}<br />
*{{thcrap TL include|th19/Sanae's Script}}<br />
*{{thcrap TL include|th19/Ran's Script}}<br />
*{{thcrap TL include|th19/Aun's Script}}<br />
*{{thcrap TL include|th19/Nazrin's Script}}<br />
*{{thcrap TL include|th19/Seiran's Script}}<br />
*{{thcrap TL include|th19/Rin's Script}}<br />
*{{thcrap TL include|th19/Tsukasa's Script}}<br />
*{{thcrap TL include|th19/Mamizou's Script}}<br />
*{{thcrap TL include|th19/Yachie's Script}}<br />
*{{thcrap TL include|th19/Saki's Script}}<br />
*{{thcrap TL include|th19/Yuuma's Script}}<br />
*{{thcrap TL include|th19/Suika's Script}}<br />
*{{thcrap TL include|th19/Biten's Script}}<br />
*{{thcrap TL include|th19/Enoko's Script}}<br />
*{{thcrap TL include|th19/Chiyari's Script}}<br />
*{{thcrap TL include|th19/Hisami's Script}}<br />
*{{thcrap TL include|th19/Zanmu's Script}}<br />
<br />
===Endings===<br />
*{{thcrap TL include|th19/Reimu's Ending}}<br />
*{{thcrap TL include|th19/Marisa's Ending}}<br />
*{{thcrap TL include|th19/Sanae's Ending}}<br />
*{{thcrap TL include|th19/Ran's Ending}}<br />
*{{thcrap TL include|th19/Aun's Ending}}<br />
*{{thcrap TL include|th19/Nazrin's Ending}}<br />
*{{thcrap TL include|th19/Seiran's Ending}}<br />
*{{thcrap TL include|th19/Rin's Ending}}<br />
*{{thcrap TL include|th19/Tsukasa's Ending}}<br />
*{{thcrap TL include|th19/Mamizou's Ending}}<br />
*{{thcrap TL include|th19/Yachie's Ending}}<br />
*{{thcrap TL include|th19/Saki's Ending}}<br />
*{{thcrap TL include|th19/Yuuma's Ending}}<br />
*{{thcrap TL include|th19/Suika's Ending}}<br />
*{{thcrap TL include|th19/Biten's Ending}}<br />
*{{thcrap TL include|th19/Enoko's Ending}}<br />
*{{thcrap TL include|th19/Chiyari's Ending}}<br />
*{{thcrap TL include|th19/Hisami's Ending}}<br />
*{{thcrap TL include|th19/Zanmu's Ending}}<br />
<br />
===Main Story (Trial)===<br />
*{{thcrap TL include|th19/Reimu's Scenario (Trial)}}<br />
*{{thcrap TL include|th19/Marisa's Scenario (Trial)}}<br />
*{{thcrap TL include|th19/Aun's Scenario (Trial)}}<br />
*{{thcrap TL include|th19/Nazrin's Scenario (Trial)}}<br />
*{{thcrap TL include|th19/Seiran's Scenario (Trial)}}<br />
<br />
===VS Match Scripts (Trial)===<br />
*{{thcrap TL include|th19/Reimu's Script (Trial)}}<br />
*{{thcrap TL include|th19/Marisa's Script (Trial)}}<br />
*{{thcrap TL include|th19/Aun's Script (Trial)}}<br />
*{{thcrap TL include|th19/Nazrin's Script (Trial)}}<br />
*{{thcrap TL include|th19/Seiran's Script (Trial)}}<br />
<br />
==={{thcrap TL include|th19/Spell cards}}===<br />
==={{thcrap TL include|th19/Music}}===<br />
==={{thcrap TL include|th19/Trophies}}===<br />
==={{thcrap TL include|th19/Abilities}}===<br />
{{thcrap TL include|th19/Abilities (Trial)}}<br />
==={{thcrap TL include|th19/Title screen messages}}===<br />
==={{thcrap TL include|th19/Images|Images}}===<br />
===Outside the game===<br />
*{{thcrap TL include|th19/omake.txt}}<br />
<section end=th19 /><br />
<br />
{{thcrap Game|nsml}}<br />
<section begin=nsml /><br />
==={{thcrap TL include|nsml/Images|Images}}===<br />
<section end=nsml /><br />
<br />
{{thcrap Game|megamari}}<br />
<section begin=megamari /><br />
==={{thcrap TL include|megamari/Images|Images}}===<br />
<section end=megamari /><br />
<br />
{{thcrap Game|marilega}}<br />
<section begin=marilega /><br />
==={{thcrap TL include|marilega/Images|Images}}===<br />
==={{thcrap TL include|marilega/Nut and Csv strings|Nut and CSV strings}}===<br />
<section end=marilega /></div>
Egor
https://www.thpatch.net/w/index.php?title=Patch:Translatable_content&diff=2601623
Patch:Translatable content
2023-10-22T10:06:41Z
<p>Egor: th075: remove Meiling's Scenario and Meiling's Ending (she doesn't have story mode)</p>
<hr />
<div>{{Locked patch page note}}<br />
==Supported languages==<br />
{{Rellink|This section is transcluded from [[Patch:Supported languages]].}}<br />
{{Patch:Supported languages}}<br />
<br />
== Global content ==<br />
==={{thcrap TL include|Hardcoded strings}} ===<br />
==={{thcrap TL include|Hardcoded ASCII strings}} ===<br />
==={{thcrap TL include|Game titles}} ===<br />
<br />
{{thcrap Game|th06}}<br />
<section begin=th06 /><br />
*{{thcrap TL include|th06/Stage titles}}<br />
===Main Story===<br />
*{{thcrap TL include|th06/Reimu's Scenario}}<br />
*{{thcrap TL include|th06/Marisa's Scenario}}<br />
===Extra Story===<br />
*{{thcrap TL include|th06/Reimu's Extra}}<br />
*{{thcrap TL include|th06/Marisa's Extra}}<br />
===Endings===<br />
*{{thcrap TL include|th06/Reimu's Endings}}<br />
*{{thcrap TL include|th06/Marisa's Endings}}<br />
==={{thcrap TL include|th06/Spell cards}}===<br />
==={{thcrap TL include|th06/Music}}===<br />
==={{thcrap TL include|th06/Images|Images}}===<br />
===Outside the game===<br />
*{{thcrap TL include|th06/HTML Manual}}<br />
*{{thcrap TL include|th06/omake.txt}}<br />
<section end=th06 /><br />
<br />
{{thcrap Game|th07}}<br />
<section begin=th07 /><br />
===Main Story===<br />
*{{thcrap TL include|th07/Reimu's Scenario}}<br />
*{{thcrap TL include|th07/Marisa's Scenario}}<br />
*{{thcrap TL include|th07/Sakuya's Scenario}}<br />
===Extra and Phantasm Story===<br />
*{{thcrap TL include|th07/Reimu's Extra and Phantasm}}<br />
*{{thcrap TL include|th07/Marisa's Extra and Phantasm}}<br />
*{{thcrap TL include|th07/Sakuya's Extra and Phantasm}}<br />
===Endings===<br />
*{{thcrap TL include|th07/Reimu's Endings}}<br />
*{{thcrap TL include|th07/Marisa's Endings}}<br />
*{{thcrap TL include|th07/Sakuya's Endings}}<br />
==={{thcrap TL include|th07/Spell cards}}===<br />
==={{thcrap TL include|th07/Music}}===<br />
==={{thcrap TL include|th07/Images|Images}}===<br />
===Outside the game===<br />
*{{thcrap TL include|th07/HTML Manual}}<br />
*{{thcrap TL include|th07/characters setting.txt}}<br />
*{{thcrap TL include|th07/omake.txt}}<br />
*{{thcrap TL include|th07/omake (trial).txt}}<br />
<section end=th07 /><br />
<br />
{{thcrap Game|th075}}<br />
<section begin=th075 /><br />
===Main Story===<br />
*{{thcrap TL include|th075/Reimu's Scenario}}<br />
*{{thcrap TL include|th075/Marisa's Scenario}}<br />
*{{thcrap TL include|th075/Sakuya's Scenario}}<br />
*{{thcrap TL include|th075/Alice's Scenario}}<br />
*{{thcrap TL include|th075/Pachouli's Scenario}}<br />
*{{thcrap TL include|th075/Youmu's Scenario}}<br />
*{{thcrap TL include|th075/Remilia's Scenario}}<br />
*{{thcrap TL include|th075/Yuyuko's Scenario}}<br />
*{{thcrap TL include|th075/Yukari's Scenario}}<br />
*{{thcrap TL include|th075/Suika's Scenario}}<br />
===Endings===<br />
*{{thcrap TL include|th075/Reimu's Ending}}<br />
*{{thcrap TL include|th075/Marisa's Ending}}<br />
*{{thcrap TL include|th075/Sakuya's Ending}}<br />
*{{thcrap TL include|th075/Alice's Ending}}<br />
*{{thcrap TL include|th075/Pachouli's Ending}}<br />
*{{thcrap TL include|th075/Youmu's Ending}}<br />
*{{thcrap TL include|th075/Remilia's Ending}}<br />
*{{thcrap TL include|th075/Yuyuko's Ending}}<br />
*{{thcrap TL include|th075/Yukari's Ending}}<br />
*{{thcrap TL include|th075/Suika's Ending}}<br />
===VS Match Scripts===<br />
*{{thcrap TL include|th075/Reimu's Script}}<br />
*{{thcrap TL include|th075/Marisa's Script}}<br />
*{{thcrap TL include|th075/Sakuya's Script}}<br />
*{{thcrap TL include|th075/Alice's Script}}<br />
*{{thcrap TL include|th075/Pachouli's Script}}<br />
*{{thcrap TL include|th075/Youmu's Script}}<br />
*{{thcrap TL include|th075/Remilia's Script}}<br />
*{{thcrap TL include|th075/Yuyuko's Script}}<br />
*{{thcrap TL include|th075/Yukari's Script}}<br />
*{{thcrap TL include|th075/Suika's Script}}<br />
*{{thcrap TL include|th075/Meiling's Script}}<br />
==={{thcrap TL include|th075/Music}}===<br />
==={{thcrap TL include|th075/Images|Images}}===<br />
*{{thcrap TL include|th075/Images-SpellCard}}<br />
===Outside the game===<br />
*{{thcrap TL include|th075/omake.txt}}<br />
<section end=th075 /><br />
<br />
{{thcrap Game|th08}}<br />
<section begin=th08 /><br />
===Main Story===<br />
*{{thcrap TL include|th08/Boundary Team's Scenario}}<br />
*{{thcrap TL include|th08/Magic Team's Scenario}}<br />
*{{thcrap TL include|th08/Scarlet Team's Scenario}}<br />
*{{thcrap TL include|th08/Ghost Team's Scenario}}<br />
===Extra Story===<br />
*{{thcrap TL include|th08/Boundary Team's Extra}}<br />
*{{thcrap TL include|th08/Magic Team's Extra}}<br />
*{{thcrap TL include|th08/Scarlet Team's Extra}}<br />
*{{thcrap TL include|th08/Ghost Team's Extra}}<br />
===Endings===<br />
*{{thcrap TL include|th08/Boundary Team's Endings}}<br />
*{{thcrap TL include|th08/Magic Team's Endings}}<br />
*{{thcrap TL include|th08/Scarlet Team's Endings}}<br />
*{{thcrap TL include|th08/Ghost Team's Endings}}<br />
==={{thcrap TL include|th08/Spell cards}}===<br />
==={{thcrap TL include|th08/Music}}===<br />
==={{thcrap TL include|th08/Images|Images}}===<br />
===Outside the game===<br />
*{{thcrap TL include|th08/HTML Manual}}<br />
*{{thcrap TL include|th08/characters setting.txt}}<br />
*{{thcrap TL include|th08/omake.txt}}<br />
*{{thcrap TL include|th08/omake (trial).txt}}<br />
<section end=th08 /><br />
<br />
{{thcrap Game|th09}}<br />
<section begin=th09 /><br />
===Main Story===<br />
*{{thcrap TL include|th09/Reimu's Scenario}}<br />
*{{thcrap TL include|th09/Marisa's Scenario}}<br />
*{{thcrap TL include|th09/Sakuya's Scenario}}<br />
*{{thcrap TL include|th09/Youmu's Scenario}}<br />
*{{thcrap TL include|th09/Reisen's Scenario}}<br />
*{{thcrap TL include|th09/Cirno's Scenario}}<br />
*{{thcrap TL include|th09/Lyrica's Scenario}}<br />
*{{thcrap TL include|th09/Mystia's Scenario}}<br />
*{{thcrap TL include|th09/Tewi's Scenario}}<br />
*{{thcrap TL include|th09/Aya's Scenario}}<br />
*{{thcrap TL include|th09/Medicine's Scenario}}<br />
*{{thcrap TL include|th09/Yuuka's Scenario}}<br />
*{{thcrap TL include|th09/Komachi's Scenario}}<br />
*{{thcrap TL include|th09/Eiki's Scenario}}<br />
===VS Match Scripts===<br />
*{{thcrap TL include|th09/Reimu's Script}}<br />
*{{thcrap TL include|th09/Marisa's Script}}<br />
*{{thcrap TL include|th09/Sakuya's Script}}<br />
*{{thcrap TL include|th09/Youmu's Script}}<br />
*{{thcrap TL include|th09/Reisen's Script}}<br />
*{{thcrap TL include|th09/Cirno's Script}}<br />
*{{thcrap TL include|th09/Lyrica's Script}}<br />
*{{thcrap TL include|th09/Mystia's Script}}<br />
*{{thcrap TL include|th09/Tewi's Script}}<br />
*{{thcrap TL include|th09/Aya's Script}}<br />
*{{thcrap TL include|th09/Medicine's Script}}<br />
*{{thcrap TL include|th09/Yuuka's Script}}<br />
*{{thcrap TL include|th09/Komachi's Script}}<br />
*{{thcrap TL include|th09/Eiki's Script}}<br />
*{{thcrap TL include|th09/Merlin's Script}}<br />
*{{thcrap TL include|th09/Lunasa's Script}}<br />
===Endings===<br />
*{{thcrap TL include|th09/Reimu's Endings}}<br />
*{{thcrap TL include|th09/Marisa's Endings}}<br />
*{{thcrap TL include|th09/Sakuya's Endings}}<br />
*{{thcrap TL include|th09/Youmu's Endings}}<br />
*{{thcrap TL include|th09/Reisen's Endings}}<br />
*{{thcrap TL include|th09/Cirno's Endings}}<br />
*{{thcrap TL include|th09/Lyrica's Endings}}<br />
*{{thcrap TL include|th09/Mystia's Endings}}<br />
*{{thcrap TL include|th09/Tewi's Endings}}<br />
*{{thcrap TL include|th09/Aya's Endings}}<br />
*{{thcrap TL include|th09/Medicine's Endings}}<br />
*{{thcrap TL include|th09/Yuuka's Endings}}<br />
*{{thcrap TL include|th09/Komachi's Endings}}<br />
*{{thcrap TL include|th09/Eiki's Endings}}<br />
==={{thcrap TL include|th09/Spell cards}}===<br />
==={{thcrap TL include|th09/Music}}===<br />
==={{thcrap TL include|th09/Images|Images}}===<br />
===Outside the game===<br />
*{{thcrap TL include|th09/HTML Manual}}<br />
*{{thcrap TL include|th09/characters setting.txt}}<br />
*{{thcrap TL include|th09/omake.txt}}<br />
*{{thcrap TL include|th09/omake (trial).txt}}<br />
<section end=th09 /><br />
<br />
{{thcrap Game|th095}}<br />
<section begin=th095 /><br />
==={{thcrap TL include|th095/Spell cards}}===<br />
==={{thcrap TL include|th095/Aya's mission comments}}===<br />
==={{thcrap TL include|th095/Music}}===<br />
==={{thcrap TL include|th095/Help messages}}===<br />
==={{thcrap TL include|th095/Images|Images}}===<br />
===Outside the game===<br />
*{{thcrap TL include|th095/omake.txt}}<br />
<section end=th095 /><br />
<br />
{{thcrap Game|th10}}<br />
<section begin=th10 /><br />
===Main Story===<br />
*{{thcrap TL include|th10/Reimu's Scenario}}<br />
*{{thcrap TL include|th10/Marisa's Scenario}}<br />
===Endings===<br />
*{{thcrap TL include|th10/Reimu's Endings}}<br />
*{{thcrap TL include|th10/Marisa's Endings}}<br />
===Extra Story===<br />
*{{thcrap TL include|th10/Reimu's Extra}}<br />
*{{thcrap TL include|th10/Marisa's Extra}}<br />
==={{thcrap TL include|th10/Spell cards}}===<br />
==={{thcrap TL include|th10/Music}}===<br />
==={{thcrap TL include|th10/Images|Images}}===<br />
===Outside the game===<br />
*{{thcrap TL include|th10/HTML Manual}}<br />
*{{thcrap TL include|th10/characters setting.txt}}<br />
*{{thcrap TL include|th10/omake.txt}}<br />
<section end=th10 /><br />
<br />
{{thcrap Game|alcostg}}<br />
<section begin=alcostg/><br />
==={{thcrap TL include|alcostg/Spell cards}}===<br />
==={{thcrap TL include|alcostg/Images|Images}}===<br />
<section end=alcostg /><br />
<br />
{{thcrap Game|th105}}<br />
<section begin=th105 /><br />
===Main Story===<br />
*{{thcrap TL include|th105/Reimu's Scenario}}<br />
*{{thcrap TL include|th105/Marisa's Scenario}}<br />
*{{thcrap TL include|th105/Sakuya's Scenario}}<br />
*{{thcrap TL include|th105/Alice's Scenario}}<br />
*{{thcrap TL include|th105/Patchouli's Scenario}}<br />
*{{thcrap TL include|th105/Youmu's Scenario}}<br />
*{{thcrap TL include|th105/Remilia's Scenario}}<br />
*{{thcrap TL include|th105/Yuyuko's Scenario}}<br />
*{{thcrap TL include|th105/Yukari's Scenario}}<br />
*{{thcrap TL include|th105/Suika's Scenario}}<br />
*{{thcrap TL include|th105/Reisen's Scenario}}<br />
*{{thcrap TL include|th105/Aya's Scenario}}<br />
*{{thcrap TL include|th105/Komachi's Scenario}}<br />
*{{thcrap TL include|th105/Iku's Scenario}}<br />
*{{thcrap TL include|th105/Tenshi's Scenario}}<br />
===Endings===<br />
*{{thcrap TL include|th105/Reimu's Endings}}<br />
*{{thcrap TL include|th105/Marisa's Endings}}<br />
*{{thcrap TL include|th105/Sakuya's Endings}}<br />
*{{thcrap TL include|th105/Alice's Endings}}<br />
*{{thcrap TL include|th105/Patchouli's Endings}}<br />
*{{thcrap TL include|th105/Youmu's Endings}}<br />
*{{thcrap TL include|th105/Remilia's Endings}}<br />
*{{thcrap TL include|th105/Yuyuko's Endings}}<br />
*{{thcrap TL include|th105/Yukari's Endings}}<br />
*{{thcrap TL include|th105/Suika's Endings}}<br />
*{{thcrap TL include|th105/Reisen's Endings}}<br />
*{{thcrap TL include|th105/Aya's Endings}}<br />
*{{thcrap TL include|th105/Komachi's Endings}}<br />
*{{thcrap TL include|th105/Iku's Endings}}<br />
*{{thcrap TL include|th105/Tenshi's Endings}}<br />
===Win quotes===<br />
*{{thcrap TL include|th105/Reimu's Win Quotes}}<br />
*{{thcrap TL include|th105/Marisa's Win Quotes}}<br />
*{{thcrap TL include|th105/Sakuya's Win Quotes}}<br />
*{{thcrap TL include|th105/Alice's Win Quotes}}<br />
*{{thcrap TL include|th105/Patchouli's Win Quotes}}<br />
*{{thcrap TL include|th105/Youmu's Win Quotes}}<br />
*{{thcrap TL include|th105/Remilia's Win Quotes}}<br />
*{{thcrap TL include|th105/Yuyuko's Win Quotes}}<br />
*{{thcrap TL include|th105/Yukari's Win Quotes}}<br />
*{{thcrap TL include|th105/Suika's Win Quotes}}<br />
*{{thcrap TL include|th105/Reisen's Win Quotes}}<br />
*{{thcrap TL include|th105/Aya's Win Quotes}}<br />
*{{thcrap TL include|th105/Komachi's Win Quotes}}<br />
*{{thcrap TL include|th105/Iku's Win Quotes}}<br />
*{{thcrap TL include|th105/Tenshi's Win Quotes}}<br />
==={{thcrap TL include|th105/Spell cards}}===<br />
===[https://www.thpatch.net/wiki/Special:Translate?taction=translate&group=themedb Music titles translation]===<br />
==={{thcrap TL include|th105/Images|Images}}===<br />
==={{thcrap TL include|th105/Images-Menu|Images Menus}}===<br />
===Outside the game===<br />
*{{thcrap TL include|th105/omake.txt}}<br />
<section end=th105 /><br />
<br />
{{thcrap Game|th11}}<br />
<section begin=th11 /><br />
===Main Story===<br />
*{{thcrap TL include|th11/Reimu and Yukari's Scenario}}<br />
*{{thcrap TL include|th11/Reimu and Suika's Scenario}}<br />
*{{thcrap TL include|th11/Reimu and Aya's Scenario}}<br />
*{{thcrap TL include|th11/Marisa and Alice's Scenario}}<br />
*{{thcrap TL include|th11/Marisa and Patchouli's Scenario}}<br />
*{{thcrap TL include|th11/Marisa and Nitori's Scenario}}<br />
===Endings===<br />
*{{thcrap TL include|th11/Reimu's Endings}}<br />
*{{thcrap TL include|th11/Marisa's Endings}}<br />
===Extra Story===<br />
*{{thcrap TL include|th11/Reimu and Yukari's Extra}}<br />
*{{thcrap TL include|th11/Reimu and Suika's Extra}}<br />
*{{thcrap TL include|th11/Reimu and Aya's Extra}}<br />
*{{thcrap TL include|th11/Marisa and Alice's Extra}}<br />
*{{thcrap TL include|th11/Marisa and Patchouli's Extra}}<br />
*{{thcrap TL include|th11/Marisa and Nitori's Extra}}<br />
==={{thcrap TL include|th11/Spell cards}}===<br />
==={{thcrap TL include|th11/Music}}===<br />
==={{thcrap TL include|th11/Images|Images}}===<br />
===Outside the game===<br />
*{{thcrap TL include|th11/HTML Manual}}<br />
*{{thcrap TL include|th11/characters setting.txt}}<br />
*{{thcrap TL include|th11/omake.txt}}<br />
<section end=th11 /><br />
<br />
{{thcrap Game|th12}}<br />
<section begin=th12 /><br />
===Main Story===<br />
*{{thcrap TL include|th12/Reimu A's Scenario}}<br />
*{{thcrap TL include|th12/Reimu B's Scenario}}<br />
*{{thcrap TL include|th12/Marisa A's Scenario}}<br />
*{{thcrap TL include|th12/Marisa B's Scenario}}<br />
*{{thcrap TL include|th12/Sanae A's Scenario}}<br />
*{{thcrap TL include|th12/Sanae B's Scenario}}<br />
===Endings===<br />
*{{thcrap TL include|th12/Reimu's Endings}}<br />
*{{thcrap TL include|th12/Marisa's Endings}}<br />
*{{thcrap TL include|th12/Sanae's Endings}}<br />
===Extra Story===<br />
*{{thcrap TL include|th12/Reimu A's Extra}}<br />
*{{thcrap TL include|th12/Reimu B's Extra}}<br />
*{{thcrap TL include|th12/Marisa A's Extra}}<br />
*{{thcrap TL include|th12/Marisa B's Extra}}<br />
*{{thcrap TL include|th12/Sanae A's Extra}}<br />
*{{thcrap TL include|th12/Sanae B's Extra}}<br />
==={{thcrap TL include|th12/Spell cards}}===<br />
==={{thcrap TL include|th12/Music}}===<br />
==={{thcrap TL include|th12/Images|Images}}===<br />
===Outside the game===<br />
*{{thcrap TL include|th12/HTML Manual}}<br />
*{{thcrap TL include|th12/characters setting and extra story.txt}}<br />
*{{thcrap TL include|th12/omake.txt}}<br />
<section end=th12 /><br />
<br />
{{thcrap Game|th123}}<br />
<section begin=th123 /><br />
===Main Story===<br />
*{{thcrap TL include|th123/Sanae's Scenario}}<br />
*{{thcrap TL include|th123/Cirno's Scenario}}<br />
*{{thcrap TL include|th123/Meiling's Scenario}}<br />
===Endings===<br />
*{{thcrap TL include|th123/Sanae's Endings}}<br />
*{{thcrap TL include|th123/Cirno's Endings}}<br />
*{{thcrap TL include|th123/Meiling's Endings}}<br />
===Win quotes===<br />
*{{thcrap TL include|th123/Reimu's Win Quotes}}<br />
*{{thcrap TL include|th123/Marisa's Win Quotes}}<br />
*{{thcrap TL include|th123/Sakuya's Win Quotes}}<br />
*{{thcrap TL include|th123/Alice's Win Quotes}}<br />
*{{thcrap TL include|th123/Patchouli's Win Quotes}}<br />
*{{thcrap TL include|th123/Youmu's Win Quotes}}<br />
*{{thcrap TL include|th123/Remilia's Win Quotes}}<br />
*{{thcrap TL include|th123/Yuyuko's Win Quotes}}<br />
*{{thcrap TL include|th123/Yukari's Win Quotes}}<br />
*{{thcrap TL include|th123/Suika's Win Quotes}}<br />
*{{thcrap TL include|th123/Reisen's Win Quotes}}<br />
*{{thcrap TL include|th123/Aya's Win Quotes}}<br />
*{{thcrap TL include|th123/Komachi's Win Quotes}}<br />
*{{thcrap TL include|th123/Iku's Win Quotes}}<br />
*{{thcrap TL include|th123/Tenshi's Win Quotes}}<br />
*{{thcrap TL include|th123/Sanae's Win Quotes}}<br />
*{{thcrap TL include|th123/Cirno's Win Quotes}}<br />
*{{thcrap TL include|th123/Meiling's Win Quotes}}<br />
*{{thcrap TL include|th123/Utsuho's Win Quotes}}<br />
*{{thcrap TL include|th123/Suwako's Win Quotes}}<br />
==={{thcrap TL include|th123/Spell cards}}===<br />
===[https://www.thpatch.net/wiki/Special:Translate?taction=translate&group=themedb Music titles translation]===<br />
==={{thcrap TL include|th123/Images|Images}}===<br />
==={{thcrap TL include|th123/Images-Menu|Menu Images}}===<br />
==={{thcrap TL include|th123/Images-105|Th10.5 Duplicate Images}}===<br />
===Outside the game===<br />
*{{thcrap TL include|th123/HTML Manual}}<br />
<section end=th123 /><br />
<br />
{{thcrap Game|th125}}<br />
<section begin=th125 /><br />
==={{thcrap TL include|th125/Spoiler Stage}}===<br />
==={{thcrap TL include|th125/Spell cards}}===<br />
===Mission comments===<br />
*{{thcrap TL include|th125/Aya's mission comments}}<br />
*{{thcrap TL include|th125/Hatate's mission comments}}<br />
<br />
==={{thcrap TL include|th125/Music}}===<br />
==={{thcrap TL include|th125/Help messages}}===<br />
==={{thcrap TL include|th125/Images|Images}}===<br />
===Outside the game===<br />
*{{thcrap TL include|th125/omake.txt}}<br />
<section end=th125 /><br />
<br />
{{thcrap Game|th128}}<br />
<section begin=th128 /><br />
===Main Story===<br />
*{{thcrap TL include|th128/Route A}}<br />
*{{thcrap TL include|th128/Route B}}<br />
*{{thcrap TL include|th128/Route C}}<br />
*{{thcrap TL include|th128/Endings}}<br />
*{{thcrap TL include|th128/Extra}}<br />
==={{thcrap TL include|th128/Spell cards}}===<br />
==={{thcrap TL include|th128/Music}}===<br />
==={{thcrap TL include|th128/Images|Images}}===<br />
===Outside the game===<br />
*{{thcrap TL include|th128/omake.txt}}<br />
<section end=th128 /><br />
<br />
{{thcrap Game|th13}}<br />
<section begin=th13 /><br />
===Main Story===<br />
*{{thcrap TL include|th13/Reimu's Scenario}}<br />
*{{thcrap TL include|th13/Marisa's Scenario}}<br />
*{{thcrap TL include|th13/Sanae's Scenario}}<br />
*{{thcrap TL include|th13/Youmu's Scenario}}<br />
===Endings===<br />
*{{thcrap TL include|th13/Reimu's Endings}}<br />
*{{thcrap TL include|th13/Marisa's Endings}}<br />
*{{thcrap TL include|th13/Sanae's Endings}}<br />
*{{thcrap TL include|th13/Youmu's Endings}}<br />
===Extra Story===<br />
*{{thcrap TL include|th13/Reimu's Extra}}<br />
*{{thcrap TL include|th13/Marisa's Extra}}<br />
*{{thcrap TL include|th13/Sanae's Extra}}<br />
*{{thcrap TL include|th13/Youmu's Extra}}<br />
==={{thcrap TL include|th13/Spell cards}}===<br />
==={{thcrap TL include|th13/Music}}===<br />
==={{thcrap TL include|th13/Images|Images}}===<br />
===Outside the game===<br />
*{{thcrap TL include|th13/HTML Manual}}<br />
*{{thcrap TL include|th13/characters setting and extra story.txt}}<br />
*{{thcrap TL include|th13/omake.txt}}<br />
<section end=th13 /><br />
<br />
{{thcrap Game|th135}}<br />
<section begin=th135 /><br />
==={{thcrap TL include|th135/Summary}}===<br />
===Main Story===<br />
*{{thcrap TL include|th135/Reimu's Scenario}}<br />
*{{thcrap TL include|th135/Marisa's Scenario}}<br />
*{{thcrap TL include|th135/Byakuren's Scenario}}<br />
*{{thcrap TL include|th135/Miko's Scenario}}<br />
*{{thcrap TL include|th135/Ichirin's Scenario}}<br />
*{{thcrap TL include|th135/Futo's Scenario}}<br />
*{{thcrap TL include|th135/Nitori's Scenario}}<br />
*{{thcrap TL include|th135/Koishi's Scenario}}<br />
*{{thcrap TL include|th135/Mamizou's Scenario}}<br />
*{{thcrap TL include|th135/Kokoro's Scenario}}<br />
===Main Story - Spell cards===<br />
*{{thcrap TL include|th135/Reimu's Scenario - Spell cards}}<br />
*{{thcrap TL include|th135/Marisa's Scenario - Spell cards}}<br />
*{{thcrap TL include|th135/Byakuren's Scenario - Spell cards}}<br />
*{{thcrap TL include|th135/Miko's Scenario - Spell cards}}<br />
*{{thcrap TL include|th135/Ichirin's Scenario - Spell cards}}<br />
*{{thcrap TL include|th135/Futo's Scenario - Spell cards}}<br />
*{{thcrap TL include|th135/Nitori's Scenario - Spell cards}}<br />
*{{thcrap TL include|th135/Koishi's Scenario - Spell cards}}<br />
*{{thcrap TL include|th135/Mamizou's Scenario - Spell cards}}<br />
*{{thcrap TL include|th135/Kokoro's Scenario - Spell cards}}<br />
===Endings===<br />
*{{thcrap TL include|th135/Reimu's Endings}}<br />
*{{thcrap TL include|th135/Marisa's Endings}}<br />
*{{thcrap TL include|th135/Byakuren's Endings}}<br />
*{{thcrap TL include|th135/Miko's Endings}}<br />
*{{thcrap TL include|th135/Ichirin's Endings}}<br />
*{{thcrap TL include|th135/Futo's Endings}}<br />
*{{thcrap TL include|th135/Nitori's Endings}}<br />
*{{thcrap TL include|th135/Koishi's Endings}}<br />
*{{thcrap TL include|th135/Mamizou's Endings}}<br />
*{{thcrap TL include|th135/Kokoro's Endings}}<br />
===Win quotes===<br />
*{{thcrap TL include|th135/Reimu's Win Quotes}}<br />
*{{thcrap TL include|th135/Marisa's Win Quotes}}<br />
*{{thcrap TL include|th135/Byakuren's Win Quotes}}<br />
*{{thcrap TL include|th135/Miko's Win Quotes}}<br />
*{{thcrap TL include|th135/Ichirin's Win Quotes}}<br />
*{{thcrap TL include|th135/Futo's Win Quotes}}<br />
*{{thcrap TL include|th135/Nitori's Win Quotes}}<br />
*{{thcrap TL include|th135/Koishi's Win Quotes}}<br />
*{{thcrap TL include|th135/Mamizou's Win Quotes}}<br />
*{{thcrap TL include|th135/Kokoro's Win Quotes}}<br />
==={{thcrap TL include|th135/Act_and_Nut_strings}}===<br />
==={{thcrap TL include|th135/Spell cards}}===<br />
==={{thcrap TL include|th135/Music}}===<br />
===Images===<br />
*{{thcrap TL include|th135/Images-Main|Images}}<br />
*{{thcrap TL include|th135/Images-Menus|Images - Menus}}<br />
*{{thcrap TL include|th135/Images-Newspaper1|Images - Newspaper 1}}<br />
*{{thcrap TL include|th135/Images-Newspaper2|Images - Newspaper 2}}<br />
===Outside the game===<br />
*{{thcrap TL include|th135/omake.txt}}<br />
<section end=th135 /><br />
<br />
{{thcrap Game|th14}}<br />
<section begin=th14 /><br />
===Main Story===<br />
*{{thcrap TL include|th14/Reimu A's Scenario}}<br />
*{{thcrap TL include|th14/Reimu B's Scenario}}<br />
*{{thcrap TL include|th14/Marisa A's Scenario}}<br />
*{{thcrap TL include|th14/Marisa B's Scenario}}<br />
*{{thcrap TL include|th14/Sakuya A's Scenario}}<br />
*{{thcrap TL include|th14/Sakuya B's Scenario}}<br />
===Endings===<br />
*{{thcrap TL include|th14/Reimu's Endings}}<br />
*{{thcrap TL include|th14/Marisa's Endings}}<br />
*{{thcrap TL include|th14/Sakuya's Endings}}<br />
===Extra Story===<br />
*{{thcrap TL include|th14/Reimu A's Extra}}<br />
*{{thcrap TL include|th14/Reimu B's Extra}}<br />
*{{thcrap TL include|th14/Marisa A's Extra}}<br />
*{{thcrap TL include|th14/Marisa B's Extra}}<br />
*{{thcrap TL include|th14/Sakuya A's Extra}}<br />
*{{thcrap TL include|th14/Sakuya B's Extra}}<br />
==={{thcrap TL include|th14/Spell cards}}===<br />
==={{thcrap TL include|th14/Music}}===<br />
==={{thcrap TL include|th14/Images|Images}}===<br />
===Outside the game===<br />
*{{thcrap TL include|th14/HTML Manual}}<br />
*{{thcrap TL include|th14/omake.txt}}<br />
<section end=th14 /><br />
<br />
{{thcrap Game|th143}}<br />
<section begin=th143 /><br />
==={{thcrap TL include|th143/Dialog}}===<br />
==={{thcrap TL include|th143/Spell cards}}===<br />
==={{thcrap TL include|th143/Music}}===<br />
==={{thcrap TL include|th143/Day descriptions}}===<br />
==={{thcrap TL include|th143/Trophies}}===<br />
==={{thcrap TL include|th143/Hints}}===<br />
==={{thcrap TL include|th143/Images|Images}}===<br />
===Outside the game===<br />
*{{thcrap TL include|th143/omake.txt}}<br />
<section end=th143 /><br />
<br />
{{thcrap Game|th145}}<br />
<section begin=th145 /><br />
==={{thcrap TL include|th145/Summary}}===<br />
===Main Story===<br />
*{{thcrap TL include|th145/Reimu's Intro}}<br />
*{{thcrap TL include|th145/Marisa's Scenario}}<br />
*{{thcrap TL include|th145/Kasen's Scenario}}<br />
*{{thcrap TL include|th145/Ichirin's Scenario}}<br />
*{{thcrap TL include|th145/Byakuren's Scenario}}<br />
*{{thcrap TL include|th145/Futo's Scenario}}<br />
*{{thcrap TL include|th145/Miko's Scenario}}<br />
*{{thcrap TL include|th145/Mamizou's Scenario}}<br />
*{{thcrap TL include|th145/Mokou's Scenario}}<br />
*{{thcrap TL include|th145/Shinmyoumaru's Scenario}}<br />
*{{thcrap TL include|th145/Nitori's Scenario}}<br />
*{{thcrap TL include|th145/Koishi's Scenario}}<br />
*{{thcrap TL include|th145/Kokoro's Scenario}}<br />
*{{thcrap TL include|th145/Sumireko's Scenario}}<br />
*{{thcrap TL include|th145/Reimu's Scenario}}<br />
===Main Story - Spell cards===<br />
*{{thcrap TL include|th145/Reimu's Intro - Spell cards}}<br />
*{{thcrap TL include|th145/Marisa's Scenario - Spell cards}}<br />
*{{thcrap TL include|th145/Kasen's Scenario - Spell cards}}<br />
*{{thcrap TL include|th145/Ichirin's Scenario - Spell cards}}<br />
*{{thcrap TL include|th145/Byakuren's Scenario - Spell cards}}<br />
*{{thcrap TL include|th145/Futo's Scenario - Spell cards}}<br />
*{{thcrap TL include|th145/Miko's Scenario - Spell cards}}<br />
*{{thcrap TL include|th145/Mamizou's Scenario - Spell cards}}<br />
*{{thcrap TL include|th145/Mokou's Scenario - Spell cards}}<br />
*{{thcrap TL include|th145/Shinmyoumaru's Scenario - Spell cards}}<br />
*{{thcrap TL include|th145/Nitori's Scenario - Spell cards}}<br />
*{{thcrap TL include|th145/Koishi's Scenario - Spell cards}}<br />
*{{thcrap TL include|th145/Kokoro's Scenario - Spell cards}}<br />
*{{thcrap TL include|th145/Sumireko's Scenario - Spell cards}}<br />
*{{thcrap TL include|th145/Reimu's Scenario - Spell cards}}<br />
===Endings===<br />
*{{thcrap TL include|th145/Marisa's Endings}}<br />
*{{thcrap TL include|th145/Kasen's Endings}}<br />
*{{thcrap TL include|th145/Ichirin's Endings}}<br />
*{{thcrap TL include|th145/Byakuren's Endings}}<br />
*{{thcrap TL include|th145/Futo's Endings}}<br />
*{{thcrap TL include|th145/Miko's Endings}}<br />
*{{thcrap TL include|th145/Mamizou's Endings}}<br />
*{{thcrap TL include|th145/Mokou's Endings}}<br />
*{{thcrap TL include|th145/Shinmyoumaru's Endings}}<br />
*{{thcrap TL include|th145/Nitori's Endings}}<br />
*{{thcrap TL include|th145/Koishi's Endings}}<br />
*{{thcrap TL include|th145/Kokoro's Endings}}<br />
*{{thcrap TL include|th145/Sumireko's Endings}}<br />
*{{thcrap TL include|th145/Reimu's Endings}}<br />
===Win quotes===<br />
*{{thcrap TL include|th145/Reimu's Win Quotes}}<br />
*{{thcrap TL include|th145/Marisa's Win Quotes}}<br />
*{{thcrap TL include|th145/Kasen's Win Quotes}}<br />
*{{thcrap TL include|th145/Ichirin's Win Quotes}}<br />
*{{thcrap TL include|th145/Byakuren's Win Quotes}}<br />
*{{thcrap TL include|th145/Futo's Win Quotes}}<br />
*{{thcrap TL include|th145/Miko's Win Quotes}}<br />
*{{thcrap TL include|th145/Mamizou's Win Quotes}}<br />
*{{thcrap TL include|th145/Mokou's Win Quotes}}<br />
*{{thcrap TL include|th145/Shinmyoumaru's Win Quotes}}<br />
*{{thcrap TL include|th145/Nitori's Win Quotes}}<br />
*{{thcrap TL include|th145/Koishi's Win Quotes}}<br />
*{{thcrap TL include|th145/Kokoro's Win Quotes}}<br />
*{{thcrap TL include|th145/Sumireko's Win Quotes}}<br />
==={{thcrap TL include|th145/Act_and_Nut_strings}}===<br />
==={{thcrap TL include|th145/Spell cards}}===<br />
===[https://www.thpatch.net/wiki/Special:Translate?taction=translate&group=themedb Music titles translation]===<br />
==={{thcrap TL include|th145/Images|Images}}===<br />
===Outside the game===<br />
*{{thcrap TL include|th145/omake.txt}}<br />
<section end=th145 /><br />
<br />
{{thcrap Game|th15}}<br />
<section begin=th15 /><br />
===Main Story===<br />
*{{thcrap TL include|th15/Reimu's Scenario}}<br />
*{{thcrap TL include|th15/Marisa's Scenario}}<br />
*{{thcrap TL include|th15/Sanae's Scenario}}<br />
*{{thcrap TL include|th15/Reisen's Scenario}}<br />
===Endings===<br />
*{{thcrap TL include|th15/Reimu's Endings}}<br />
*{{thcrap TL include|th15/Marisa's Endings}}<br />
*{{thcrap TL include|th15/Sanae's Endings}}<br />
*{{thcrap TL include|th15/Reisen's Endings}}<br />
===Extra Story===<br />
*{{thcrap TL include|th15/Reimu's Extra}}<br />
*{{thcrap TL include|th15/Marisa's Extra}}<br />
*{{thcrap TL include|th15/Sanae's Extra}}<br />
*{{thcrap TL include|th15/Reisen's Extra}}<br />
==={{thcrap TL include|th15/Spell cards}}===<br />
==={{thcrap TL include|th15/Music}}===<br />
==={{thcrap TL include|th15/Images|Images}}===<br />
===Outside the game===<br />
*{{thcrap TL include|th15/omake.txt}}<br />
<section end=th15 /><br />
<br />
{{thcrap Game|th155}}<br />
<section begin=th155 /><br />
===Main Story===<br />
*{{thcrap TL include|th155/Reimu's Scenario}}<br />
*{{thcrap TL include|th155/Marisa's Scenario}}<br />
*{{thcrap TL include|th155/Nitori's Scenario}}<br />
*{{thcrap TL include|th155/Mamizou's Scenario}}<br />
*{{thcrap TL include|th155/Miko's Scenario}}<br />
*{{thcrap TL include|th155/Futo's Scenario}}<br />
*{{thcrap TL include|th155/Reisen's Scenario}}<br />
*{{thcrap TL include|th155/Sumireko's Scenario}}<br />
*{{thcrap TL include|th155/Tenshi's Scenario}}<br />
*{{thcrap TL include|th155/Yukari's Scenario}}<br />
*{{thcrap TL include|th155/Joon's Scenario}}<br />
===Endings===<br />
*{{thcrap TL include|th155/Marisa's Endings}}<br />
*{{thcrap TL include|th155/Nitori's Endings}}<br />
*{{thcrap TL include|th155/Mamizou's Endings}}<br />
*{{thcrap TL include|th155/Miko's Endings}}<br />
*{{thcrap TL include|th155/Futo's Endings}}<br />
*{{thcrap TL include|th155/Reisen's Endings}}<br />
*{{thcrap TL include|th155/Sumireko's Endings}}<br />
*{{thcrap TL include|th155/Tenshi's Endings}}<br />
*{{thcrap TL include|th155/Yukari's Endings}}<br />
*{{thcrap TL include|th155/Joon's Endings}}<br />
===Win quotes===<br />
*{{thcrap TL include|th155/Reimu's Win Quotes}}<br />
*{{thcrap TL include|th155/Marisa's Win Quotes}}<br />
*{{thcrap TL include|th155/Kasen's Win Quotes}}<br />
*{{thcrap TL include|th155/Ichirin's Win Quotes}}<br />
*{{thcrap TL include|th155/Byakuren's Win Quotes}}<br />
*{{thcrap TL include|th155/Futo's Win Quotes}}<br />
*{{thcrap TL include|th155/Miko's Win Quotes}}<br />
*{{thcrap TL include|th155/Mamizou's Win Quotes}}<br />
*{{thcrap TL include|th155/Mokou's Win Quotes}}<br />
*{{thcrap TL include|th155/Shinmyoumaru's Win Quotes}}<br />
*{{thcrap TL include|th155/Nitori's Win Quotes}}<br />
*{{thcrap TL include|th155/Koishi's Win Quotes}}<br />
*{{thcrap TL include|th155/Kokoro's Win Quotes}}<br />
*{{thcrap TL include|th155/Sumireko's Win Quotes}}<br />
*{{thcrap TL include|th155/Reisen's Win Quotes}}<br />
*{{thcrap TL include|th155/Doremy's Win Quotes}}<br />
*{{thcrap TL include|th155/Yukari's Win Quotes}}<br />
*{{thcrap TL include|th155/Tenshi's Win Quotes}}<br />
*{{thcrap TL include|th155/Joon's Win Quotes}}<br />
==={{thcrap TL include|th155/Spell cards}}===<br />
==={{thcrap TL include|th155/Nut and Csv strings|Nut and CSV strings}}===<br />
==={{thcrap TL include|th155/Music}}===<br />
==={{thcrap TL include|th155/Images|Images}}===<br />
==={{thcrap TL include|th155/Images-Characters|Character Name Images}}===<br />
===Outside the game===<br />
*{{thcrap TL include|th155/HTML Manual}}<br />
*{{thcrap TL include|th155/omake.txt}}<br />
<section end=th155 /><br />
<br />
{{thcrap Game|th16}}<br />
<section begin=th16 /><br />
===Main Story===<br />
*{{thcrap TL include|th16/Reimu's Scenario}}<br />
*{{thcrap TL include|th16/Cirno's Scenario}}<br />
*{{thcrap TL include|th16/Aya's Scenario}}<br />
*{{thcrap TL include|th16/Marisa's Scenario}}<br />
<br />
===Endings===<br />
*{{thcrap TL include|th16/Reimu's Endings}}<br />
*{{thcrap TL include|th16/Cirno's Endings}}<br />
*{{thcrap TL include|th16/Aya's Endings}}<br />
*{{thcrap TL include|th16/Marisa's Endings}}<br />
<br />
===Extra Story===<br />
*{{thcrap TL include|th16/Reimu's Extra}}<br />
*{{thcrap TL include|th16/Cirno's Extra}}<br />
*{{thcrap TL include|th16/Aya's Extra}}<br />
*{{thcrap TL include|th16/Marisa's Extra}}<br />
<br />
==={{thcrap TL include|th16/Spell cards}}===<br />
==={{thcrap TL include|th16/Music}}===<br />
==={{thcrap TL include|th16/Images|Images}}===<br />
===Outside the game===<br />
*{{thcrap TL include|th16/omake.txt}}<br />
<section end=th16 /><br />
<br />
{{thcrap Game|th165}}<br />
<section begin=th165 /><br />
<br />
==={{thcrap TL include|th165/Dialog}}===<br />
==={{thcrap TL include|th165/Spell cards}}===<br />
==={{thcrap TL include|th165/Dream comments}}===<br />
==={{thcrap TL include|th165/Trophies}}===<br />
==={{thcrap TL include|th165/Music}}===<br />
==={{thcrap TL include|th165/Images|Images}}===<br />
===Outside the game===<br />
*{{thcrap TL include|th165/omake.txt}}<br />
<section end=th165 /><br />
<br />
{{thcrap Game|th17}}<br />
<section begin=th17 /><br />
===Main Story===<br />
*{{thcrap TL include|th17/Reimu A's Scenario}}<br />
*{{thcrap TL include|th17/Reimu B's Scenario}}<br />
*{{thcrap TL include|th17/Reimu C's Scenario}}<br />
<br />
*{{thcrap TL include|th17/Marisa A's Scenario}}<br />
*{{thcrap TL include|th17/Marisa B's Scenario}}<br />
*{{thcrap TL include|th17/Marisa C's Scenario}}<br />
<br />
*{{thcrap TL include|th17/Youmu A's Scenario}}<br />
*{{thcrap TL include|th17/Youmu B's Scenario}}<br />
*{{thcrap TL include|th17/Youmu C's Scenario}}<br />
<br />
===Endings===<br />
*{{thcrap TL include|th17/Reimu's Endings}}<br />
*{{thcrap TL include|th17/Marisa's Endings}}<br />
*{{thcrap TL include|th17/Youmu's Endings}}<br />
<br />
===Extra Story===<br />
*{{thcrap TL include|th17/Reimu A's Extra}}<br />
*{{thcrap TL include|th17/Reimu B's Extra}}<br />
*{{thcrap TL include|th17/Reimu C's Extra}}<br />
<br />
*{{thcrap TL include|th17/Marisa A's Extra}}<br />
*{{thcrap TL include|th17/Marisa B's Extra}}<br />
*{{thcrap TL include|th17/Marisa C's Extra}}<br />
<br />
*{{thcrap TL include|th17/Youmu A's Extra}}<br />
*{{thcrap TL include|th17/Youmu B's Extra}}<br />
*{{thcrap TL include|th17/Youmu C's Extra}}<br />
<br />
==={{thcrap TL include|th17/Spell cards}}===<br />
==={{thcrap TL include|th17/Music}}===<br />
==={{thcrap TL include|th17/Trophies}}===<br />
{{thcrap TL include|th17/Trophies (Trial)}}<br />
==={{thcrap TL include|th17/Images|Images}}===<br />
===Outside the game===<br />
*{{thcrap TL include|th17/omake.txt}}<br />
<section end=th17 /><br />
<br />
{{thcrap Game|th175}}<br />
<section begin=th175 /><br />
===Main Scenario===<br />
*{{thcrap TL include|th175/Reimu's Scenario}}<br />
*{{thcrap TL include|th175/Marisa's Scenario}}<br />
*{{thcrap TL include|th175/Kanako's Scenario}}<br />
*{{thcrap TL include|th175/Minamitsu's Scenario}}<br />
*{{thcrap TL include|th175/Joon and Shion's Scenario}}<br />
*{{thcrap TL include|th175/Flandre's Scenario}}<br />
*{{thcrap TL include|th175/Yuuma's Scenario}}<br />
<br />
===Endings===<br />
*{{thcrap TL include|th175/Reimu's Endings}}<br />
*{{thcrap TL include|th175/Marisa's Endings}}<br />
*{{thcrap TL include|th175/Kanako's Endings}}<br />
*{{thcrap TL include|th175/Minamitsu's Endings}}<br />
*{{thcrap TL include|th175/Joon and Shion's Endings}}<br />
*{{thcrap TL include|th175/Flandre's Endings}}<br />
*{{thcrap TL include|th175/Yuuma's Endings}}<br />
<br />
==={{thcrap TL include|th175/Spell cards}}===<br />
==={{thcrap TL include|th175/Trophies}}===<br />
==={{thcrap TL include|th175/Nut strings|Nut strings}}===<br />
==={{thcrap TL include|th175/Images|Images}}===<br />
===Outside the game===<br />
*{{thcrap TL include|th175/omake.txt}}<br />
<section end=th175 /><br />
<br />
{{thcrap Game|th18}}<br />
<section begin=th18 /><br />
===Main Story===<br />
*{{thcrap TL include|th18/Reimu's Scenario}}<br />
*{{thcrap TL include|th18/Marisa's Scenario}}<br />
*{{thcrap TL include|th18/Sakuya's Scenario}}<br />
*{{thcrap TL include|th18/Sanae's Scenario}}<br />
===Endings===<br />
*{{thcrap TL include|th18/Reimu's Endings}}<br />
*{{thcrap TL include|th18/Marisa's Endings}}<br />
*{{thcrap TL include|th18/Sakuya's Endings}}<br />
*{{thcrap TL include|th18/Sanae's Endings}}<br />
===Extra Story===<br />
*{{thcrap TL include|th18/Reimu's Extra}}<br />
*{{thcrap TL include|th18/Marisa's Extra}}<br />
*{{thcrap TL include|th18/Sakuya's Extra}}<br />
*{{thcrap TL include|th18/Sanae's Extra}}<br />
==={{thcrap TL include|th18/Spell cards}}===<br />
==={{thcrap TL include|th18/Music}}===<br />
==={{thcrap TL include|th18/Trophies}}===<br />
{{thcrap TL include|th18/Trophies (Trial)}}<br />
==={{thcrap TL include|th18/Abilities}}===<br />
{{thcrap TL include|th18/Abilities (Trial)}}<br />
==={{thcrap TL include|th18/Images|Images}}===<br />
===Outside the game===<br />
*{{thcrap TL include|th18/omake.txt}}<br />
<section end=th18 /><br />
<br />
{{thcrap Game|th185}}<br />
<section begin=th185 /><br />
==={{thcrap TL include|th185/Dialog}}===<br />
==={{thcrap TL include|th185/Spell cards}}===<br />
==={{thcrap TL include|th185/Music}}===<br />
==={{thcrap TL include|th185/Trophies}}===<br />
==={{thcrap TL include|th185/Abilities}}===<br />
==={{thcrap TL include|th185/Market comments}}===<br />
<br />
==={{thcrap TL include|th185/Images|Images}}===<br />
===Outside the game===<br />
*{{thcrap TL include|th185/omake.txt}}<br />
<section end=th185 /><br />
<br />
{{thcrap Game|th19}}<br />
<section begin=th19 /><br />
===Main Story===<br />
*{{thcrap TL include|th19/Reimu's Scenario}}<br />
*{{thcrap TL include|th19/Marisa's Scenario}}<br />
*{{thcrap TL include|th19/Sanae's Scenario}}<br />
*{{thcrap TL include|th19/Ran's Scenario}}<br />
*{{thcrap TL include|th19/Aun's Scenario}}<br />
*{{thcrap TL include|th19/Nazrin's Scenario}}<br />
*{{thcrap TL include|th19/Seiran's Scenario}}<br />
*{{thcrap TL include|th19/Rin's Scenario}}<br />
*{{thcrap TL include|th19/Tsukasa's Scenario}}<br />
*{{thcrap TL include|th19/Mamizou's Scenario}}<br />
*{{thcrap TL include|th19/Yachie's Scenario}}<br />
*{{thcrap TL include|th19/Saki's Scenario}}<br />
*{{thcrap TL include|th19/Yuuma's Scenario}}<br />
*{{thcrap TL include|th19/Suika's Scenario}}<br />
*{{thcrap TL include|th19/Biten's Scenario}}<br />
*{{thcrap TL include|th19/Enoko's Scenario}}<br />
*{{thcrap TL include|th19/Chiyari's Scenario}}<br />
*{{thcrap TL include|th19/Hisami's Scenario}}<br />
*{{thcrap TL include|th19/Zanmu's Scenario}}<br />
<br />
===VS Match Scripts===<br />
*{{thcrap TL include|th19/Reimu's Script}}<br />
*{{thcrap TL include|th19/Marisa's Script}}<br />
*{{thcrap TL include|th19/Sanae's Script}}<br />
*{{thcrap TL include|th19/Ran's Script}}<br />
*{{thcrap TL include|th19/Aun's Script}}<br />
*{{thcrap TL include|th19/Nazrin's Script}}<br />
*{{thcrap TL include|th19/Seiran's Script}}<br />
*{{thcrap TL include|th19/Rin's Script}}<br />
*{{thcrap TL include|th19/Tsukasa's Script}}<br />
*{{thcrap TL include|th19/Mamizou's Script}}<br />
*{{thcrap TL include|th19/Yachie's Script}}<br />
*{{thcrap TL include|th19/Saki's Script}}<br />
*{{thcrap TL include|th19/Yuuma's Script}}<br />
*{{thcrap TL include|th19/Suika's Script}}<br />
*{{thcrap TL include|th19/Biten's Script}}<br />
*{{thcrap TL include|th19/Enoko's Script}}<br />
*{{thcrap TL include|th19/Chiyari's Script}}<br />
*{{thcrap TL include|th19/Hisami's Script}}<br />
*{{thcrap TL include|th19/Zanmu's Script}}<br />
<br />
===Endings===<br />
*{{thcrap TL include|th19/Reimu's Ending}}<br />
*{{thcrap TL include|th19/Marisa's Ending}}<br />
*{{thcrap TL include|th19/Sanae's Ending}}<br />
*{{thcrap TL include|th19/Ran's Ending}}<br />
*{{thcrap TL include|th19/Aun's Ending}}<br />
*{{thcrap TL include|th19/Nazrin's Ending}}<br />
*{{thcrap TL include|th19/Seiran's Ending}}<br />
*{{thcrap TL include|th19/Rin's Ending}}<br />
*{{thcrap TL include|th19/Tsukasa's Ending}}<br />
*{{thcrap TL include|th19/Mamizou's Ending}}<br />
*{{thcrap TL include|th19/Yachie's Ending}}<br />
*{{thcrap TL include|th19/Saki's Ending}}<br />
*{{thcrap TL include|th19/Yuuma's Ending}}<br />
*{{thcrap TL include|th19/Suika's Ending}}<br />
*{{thcrap TL include|th19/Biten's Ending}}<br />
*{{thcrap TL include|th19/Enoko's Ending}}<br />
*{{thcrap TL include|th19/Chiyari's Ending}}<br />
*{{thcrap TL include|th19/Hisami's Ending}}<br />
*{{thcrap TL include|th19/Zanmu's Ending}}<br />
<br />
===Main Story (Trial)===<br />
*{{thcrap TL include|th19/Reimu's Scenario (Trial)}}<br />
*{{thcrap TL include|th19/Marisa's Scenario (Trial)}}<br />
*{{thcrap TL include|th19/Aun's Scenario (Trial)}}<br />
*{{thcrap TL include|th19/Nazrin's Scenario (Trial)}}<br />
*{{thcrap TL include|th19/Seiran's Scenario (Trial)}}<br />
<br />
===VS Match Scripts (Trial)===<br />
*{{thcrap TL include|th19/Reimu's Script (Trial)}}<br />
*{{thcrap TL include|th19/Marisa's Script (Trial)}}<br />
*{{thcrap TL include|th19/Aun's Script (Trial)}}<br />
*{{thcrap TL include|th19/Nazrin's Script (Trial)}}<br />
*{{thcrap TL include|th19/Seiran's Script (Trial)}}<br />
<br />
==={{thcrap TL include|th19/Spell cards}}===<br />
==={{thcrap TL include|th19/Music}}===<br />
==={{thcrap TL include|th19/Trophies}}===<br />
==={{thcrap TL include|th19/Abilities}}===<br />
{{thcrap TL include|th19/Abilities (Trial)}}<br />
==={{thcrap TL include|th19/Title screen messages}}===<br />
==={{thcrap TL include|th19/Images|Images}}===<br />
===Outside the game===<br />
*{{thcrap TL include|th19/omake.txt}}<br />
<section end=th19 /><br />
<br />
{{thcrap Game|nsml}}<br />
<section begin=nsml /><br />
==={{thcrap TL include|nsml/Images|Images}}===<br />
<section end=nsml /><br />
<br />
{{thcrap Game|megamari}}<br />
<section begin=megamari /><br />
==={{thcrap TL include|megamari/Images|Images}}===<br />
<section end=megamari /><br />
<br />
{{thcrap Game|marilega}}<br />
<section begin=marilega /><br />
==={{thcrap TL include|marilega/Images|Images}}===<br />
==={{thcrap TL include|marilega/Nut and Csv strings|Nut and CSV strings}}===<br />
<section end=marilega /></div>
Egor
https://www.thpatch.net/w/index.php?title=Patch:Translatable_content&diff=2599940
Patch:Translatable content
2023-10-21T17:29:26Z
<p>Egor: th075: add Main Story, Endings, VS Match Scripts and Music</p>
<hr />
<div>{{Locked patch page note}}<br />
==Supported languages==<br />
{{Rellink|This section is transcluded from [[Patch:Supported languages]].}}<br />
{{Patch:Supported languages}}<br />
<br />
== Global content ==<br />
==={{thcrap TL include|Hardcoded strings}} ===<br />
==={{thcrap TL include|Hardcoded ASCII strings}} ===<br />
==={{thcrap TL include|Game titles}} ===<br />
<br />
{{thcrap Game|th06}}<br />
<section begin=th06 /><br />
*{{thcrap TL include|th06/Stage titles}}<br />
===Main Story===<br />
*{{thcrap TL include|th06/Reimu's Scenario}}<br />
*{{thcrap TL include|th06/Marisa's Scenario}}<br />
===Extra Story===<br />
*{{thcrap TL include|th06/Reimu's Extra}}<br />
*{{thcrap TL include|th06/Marisa's Extra}}<br />
===Endings===<br />
*{{thcrap TL include|th06/Reimu's Endings}}<br />
*{{thcrap TL include|th06/Marisa's Endings}}<br />
==={{thcrap TL include|th06/Spell cards}}===<br />
==={{thcrap TL include|th06/Music}}===<br />
==={{thcrap TL include|th06/Images|Images}}===<br />
===Outside the game===<br />
*{{thcrap TL include|th06/HTML Manual}}<br />
*{{thcrap TL include|th06/omake.txt}}<br />
<section end=th06 /><br />
<br />
{{thcrap Game|th07}}<br />
<section begin=th07 /><br />
===Main Story===<br />
*{{thcrap TL include|th07/Reimu's Scenario}}<br />
*{{thcrap TL include|th07/Marisa's Scenario}}<br />
*{{thcrap TL include|th07/Sakuya's Scenario}}<br />
===Extra and Phantasm Story===<br />
*{{thcrap TL include|th07/Reimu's Extra and Phantasm}}<br />
*{{thcrap TL include|th07/Marisa's Extra and Phantasm}}<br />
*{{thcrap TL include|th07/Sakuya's Extra and Phantasm}}<br />
===Endings===<br />
*{{thcrap TL include|th07/Reimu's Endings}}<br />
*{{thcrap TL include|th07/Marisa's Endings}}<br />
*{{thcrap TL include|th07/Sakuya's Endings}}<br />
==={{thcrap TL include|th07/Spell cards}}===<br />
==={{thcrap TL include|th07/Music}}===<br />
==={{thcrap TL include|th07/Images|Images}}===<br />
===Outside the game===<br />
*{{thcrap TL include|th07/HTML Manual}}<br />
*{{thcrap TL include|th07/characters setting.txt}}<br />
*{{thcrap TL include|th07/omake.txt}}<br />
*{{thcrap TL include|th07/omake (trial).txt}}<br />
<section end=th07 /><br />
<br />
{{thcrap Game|th075}}<br />
<section begin=th075 /><br />
===Main Story===<br />
*{{thcrap TL include|th075/Reimu's Scenario}}<br />
*{{thcrap TL include|th075/Marisa's Scenario}}<br />
*{{thcrap TL include|th075/Sakuya's Scenario}}<br />
*{{thcrap TL include|th075/Alice's Scenario}}<br />
*{{thcrap TL include|th075/Pachouli's Scenario}}<br />
*{{thcrap TL include|th075/Youmu's Scenario}}<br />
*{{thcrap TL include|th075/Remilia's Scenario}}<br />
*{{thcrap TL include|th075/Yuyuko's Scenario}}<br />
*{{thcrap TL include|th075/Yukari's Scenario}}<br />
*{{thcrap TL include|th075/Suika's Scenario}}<br />
*{{thcrap TL include|th075/Meiling's Scenario}}<br />
===Endings===<br />
*{{thcrap TL include|th075/Reimu's Ending}}<br />
*{{thcrap TL include|th075/Marisa's Ending}}<br />
*{{thcrap TL include|th075/Sakuya's Ending}}<br />
*{{thcrap TL include|th075/Alice's Ending}}<br />
*{{thcrap TL include|th075/Pachouli's Ending}}<br />
*{{thcrap TL include|th075/Youmu's Ending}}<br />
*{{thcrap TL include|th075/Remilia's Ending}}<br />
*{{thcrap TL include|th075/Yuyuko's Ending}}<br />
*{{thcrap TL include|th075/Yukari's Ending}}<br />
*{{thcrap TL include|th075/Suika's Ending}}<br />
*{{thcrap TL include|th075/Meiling's Ending}}<br />
===VS Match Scripts===<br />
*{{thcrap TL include|th075/Reimu's Script}}<br />
*{{thcrap TL include|th075/Marisa's Script}}<br />
*{{thcrap TL include|th075/Sakuya's Script}}<br />
*{{thcrap TL include|th075/Alice's Script}}<br />
*{{thcrap TL include|th075/Pachouli's Script}}<br />
*{{thcrap TL include|th075/Youmu's Script}}<br />
*{{thcrap TL include|th075/Remilia's Script}}<br />
*{{thcrap TL include|th075/Yuyuko's Script}}<br />
*{{thcrap TL include|th075/Yukari's Script}}<br />
*{{thcrap TL include|th075/Suika's Script}}<br />
*{{thcrap TL include|th075/Meiling's Script}}<br />
==={{thcrap TL include|th075/Music}}===<br />
==={{thcrap TL include|th075/Images|Images}}===<br />
*{{thcrap TL include|th075/Images-SpellCard}}<br />
===Outside the game===<br />
*{{thcrap TL include|th075/omake.txt}}<br />
<section end=th075 /><br />
<br />
{{thcrap Game|th08}}<br />
<section begin=th08 /><br />
===Main Story===<br />
*{{thcrap TL include|th08/Boundary Team's Scenario}}<br />
*{{thcrap TL include|th08/Magic Team's Scenario}}<br />
*{{thcrap TL include|th08/Scarlet Team's Scenario}}<br />
*{{thcrap TL include|th08/Ghost Team's Scenario}}<br />
===Extra Story===<br />
*{{thcrap TL include|th08/Boundary Team's Extra}}<br />
*{{thcrap TL include|th08/Magic Team's Extra}}<br />
*{{thcrap TL include|th08/Scarlet Team's Extra}}<br />
*{{thcrap TL include|th08/Ghost Team's Extra}}<br />
===Endings===<br />
*{{thcrap TL include|th08/Boundary Team's Endings}}<br />
*{{thcrap TL include|th08/Magic Team's Endings}}<br />
*{{thcrap TL include|th08/Scarlet Team's Endings}}<br />
*{{thcrap TL include|th08/Ghost Team's Endings}}<br />
==={{thcrap TL include|th08/Spell cards}}===<br />
==={{thcrap TL include|th08/Music}}===<br />
==={{thcrap TL include|th08/Images|Images}}===<br />
===Outside the game===<br />
*{{thcrap TL include|th08/HTML Manual}}<br />
*{{thcrap TL include|th08/characters setting.txt}}<br />
*{{thcrap TL include|th08/omake.txt}}<br />
*{{thcrap TL include|th08/omake (trial).txt}}<br />
<section end=th08 /><br />
<br />
{{thcrap Game|th09}}<br />
<section begin=th09 /><br />
===Main Story===<br />
*{{thcrap TL include|th09/Reimu's Scenario}}<br />
*{{thcrap TL include|th09/Marisa's Scenario}}<br />
*{{thcrap TL include|th09/Sakuya's Scenario}}<br />
*{{thcrap TL include|th09/Youmu's Scenario}}<br />
*{{thcrap TL include|th09/Reisen's Scenario}}<br />
*{{thcrap TL include|th09/Cirno's Scenario}}<br />
*{{thcrap TL include|th09/Lyrica's Scenario}}<br />
*{{thcrap TL include|th09/Mystia's Scenario}}<br />
*{{thcrap TL include|th09/Tewi's Scenario}}<br />
*{{thcrap TL include|th09/Aya's Scenario}}<br />
*{{thcrap TL include|th09/Medicine's Scenario}}<br />
*{{thcrap TL include|th09/Yuuka's Scenario}}<br />
*{{thcrap TL include|th09/Komachi's Scenario}}<br />
*{{thcrap TL include|th09/Eiki's Scenario}}<br />
===VS Match Scripts===<br />
*{{thcrap TL include|th09/Reimu's Script}}<br />
*{{thcrap TL include|th09/Marisa's Script}}<br />
*{{thcrap TL include|th09/Sakuya's Script}}<br />
*{{thcrap TL include|th09/Youmu's Script}}<br />
*{{thcrap TL include|th09/Reisen's Script}}<br />
*{{thcrap TL include|th09/Cirno's Script}}<br />
*{{thcrap TL include|th09/Lyrica's Script}}<br />
*{{thcrap TL include|th09/Mystia's Script}}<br />
*{{thcrap TL include|th09/Tewi's Script}}<br />
*{{thcrap TL include|th09/Aya's Script}}<br />
*{{thcrap TL include|th09/Medicine's Script}}<br />
*{{thcrap TL include|th09/Yuuka's Script}}<br />
*{{thcrap TL include|th09/Komachi's Script}}<br />
*{{thcrap TL include|th09/Eiki's Script}}<br />
*{{thcrap TL include|th09/Merlin's Script}}<br />
*{{thcrap TL include|th09/Lunasa's Script}}<br />
===Endings===<br />
*{{thcrap TL include|th09/Reimu's Endings}}<br />
*{{thcrap TL include|th09/Marisa's Endings}}<br />
*{{thcrap TL include|th09/Sakuya's Endings}}<br />
*{{thcrap TL include|th09/Youmu's Endings}}<br />
*{{thcrap TL include|th09/Reisen's Endings}}<br />
*{{thcrap TL include|th09/Cirno's Endings}}<br />
*{{thcrap TL include|th09/Lyrica's Endings}}<br />
*{{thcrap TL include|th09/Mystia's Endings}}<br />
*{{thcrap TL include|th09/Tewi's Endings}}<br />
*{{thcrap TL include|th09/Aya's Endings}}<br />
*{{thcrap TL include|th09/Medicine's Endings}}<br />
*{{thcrap TL include|th09/Yuuka's Endings}}<br />
*{{thcrap TL include|th09/Komachi's Endings}}<br />
*{{thcrap TL include|th09/Eiki's Endings}}<br />
==={{thcrap TL include|th09/Spell cards}}===<br />
==={{thcrap TL include|th09/Music}}===<br />
==={{thcrap TL include|th09/Images|Images}}===<br />
===Outside the game===<br />
*{{thcrap TL include|th09/HTML Manual}}<br />
*{{thcrap TL include|th09/characters setting.txt}}<br />
*{{thcrap TL include|th09/omake.txt}}<br />
*{{thcrap TL include|th09/omake (trial).txt}}<br />
<section end=th09 /><br />
<br />
{{thcrap Game|th095}}<br />
<section begin=th095 /><br />
==={{thcrap TL include|th095/Spell cards}}===<br />
==={{thcrap TL include|th095/Aya's mission comments}}===<br />
==={{thcrap TL include|th095/Music}}===<br />
==={{thcrap TL include|th095/Help messages}}===<br />
==={{thcrap TL include|th095/Images|Images}}===<br />
===Outside the game===<br />
*{{thcrap TL include|th095/omake.txt}}<br />
<section end=th095 /><br />
<br />
{{thcrap Game|th10}}<br />
<section begin=th10 /><br />
===Main Story===<br />
*{{thcrap TL include|th10/Reimu's Scenario}}<br />
*{{thcrap TL include|th10/Marisa's Scenario}}<br />
===Endings===<br />
*{{thcrap TL include|th10/Reimu's Endings}}<br />
*{{thcrap TL include|th10/Marisa's Endings}}<br />
===Extra Story===<br />
*{{thcrap TL include|th10/Reimu's Extra}}<br />
*{{thcrap TL include|th10/Marisa's Extra}}<br />
==={{thcrap TL include|th10/Spell cards}}===<br />
==={{thcrap TL include|th10/Music}}===<br />
==={{thcrap TL include|th10/Images|Images}}===<br />
===Outside the game===<br />
*{{thcrap TL include|th10/HTML Manual}}<br />
*{{thcrap TL include|th10/characters setting.txt}}<br />
*{{thcrap TL include|th10/omake.txt}}<br />
<section end=th10 /><br />
<br />
{{thcrap Game|alcostg}}<br />
<section begin=alcostg/><br />
==={{thcrap TL include|alcostg/Spell cards}}===<br />
==={{thcrap TL include|alcostg/Images|Images}}===<br />
<section end=alcostg /><br />
<br />
{{thcrap Game|th105}}<br />
<section begin=th105 /><br />
===Main Story===<br />
*{{thcrap TL include|th105/Reimu's Scenario}}<br />
*{{thcrap TL include|th105/Marisa's Scenario}}<br />
*{{thcrap TL include|th105/Sakuya's Scenario}}<br />
*{{thcrap TL include|th105/Alice's Scenario}}<br />
*{{thcrap TL include|th105/Patchouli's Scenario}}<br />
*{{thcrap TL include|th105/Youmu's Scenario}}<br />
*{{thcrap TL include|th105/Remilia's Scenario}}<br />
*{{thcrap TL include|th105/Yuyuko's Scenario}}<br />
*{{thcrap TL include|th105/Yukari's Scenario}}<br />
*{{thcrap TL include|th105/Suika's Scenario}}<br />
*{{thcrap TL include|th105/Reisen's Scenario}}<br />
*{{thcrap TL include|th105/Aya's Scenario}}<br />
*{{thcrap TL include|th105/Komachi's Scenario}}<br />
*{{thcrap TL include|th105/Iku's Scenario}}<br />
*{{thcrap TL include|th105/Tenshi's Scenario}}<br />
===Endings===<br />
*{{thcrap TL include|th105/Reimu's Endings}}<br />
*{{thcrap TL include|th105/Marisa's Endings}}<br />
*{{thcrap TL include|th105/Sakuya's Endings}}<br />
*{{thcrap TL include|th105/Alice's Endings}}<br />
*{{thcrap TL include|th105/Patchouli's Endings}}<br />
*{{thcrap TL include|th105/Youmu's Endings}}<br />
*{{thcrap TL include|th105/Remilia's Endings}}<br />
*{{thcrap TL include|th105/Yuyuko's Endings}}<br />
*{{thcrap TL include|th105/Yukari's Endings}}<br />
*{{thcrap TL include|th105/Suika's Endings}}<br />
*{{thcrap TL include|th105/Reisen's Endings}}<br />
*{{thcrap TL include|th105/Aya's Endings}}<br />
*{{thcrap TL include|th105/Komachi's Endings}}<br />
*{{thcrap TL include|th105/Iku's Endings}}<br />
*{{thcrap TL include|th105/Tenshi's Endings}}<br />
===Win quotes===<br />
*{{thcrap TL include|th105/Reimu's Win Quotes}}<br />
*{{thcrap TL include|th105/Marisa's Win Quotes}}<br />
*{{thcrap TL include|th105/Sakuya's Win Quotes}}<br />
*{{thcrap TL include|th105/Alice's Win Quotes}}<br />
*{{thcrap TL include|th105/Patchouli's Win Quotes}}<br />
*{{thcrap TL include|th105/Youmu's Win Quotes}}<br />
*{{thcrap TL include|th105/Remilia's Win Quotes}}<br />
*{{thcrap TL include|th105/Yuyuko's Win Quotes}}<br />
*{{thcrap TL include|th105/Yukari's Win Quotes}}<br />
*{{thcrap TL include|th105/Suika's Win Quotes}}<br />
*{{thcrap TL include|th105/Reisen's Win Quotes}}<br />
*{{thcrap TL include|th105/Aya's Win Quotes}}<br />
*{{thcrap TL include|th105/Komachi's Win Quotes}}<br />
*{{thcrap TL include|th105/Iku's Win Quotes}}<br />
*{{thcrap TL include|th105/Tenshi's Win Quotes}}<br />
==={{thcrap TL include|th105/Spell cards}}===<br />
===[https://www.thpatch.net/wiki/Special:Translate?taction=translate&group=themedb Music titles translation]===<br />
==={{thcrap TL include|th105/Images|Images}}===<br />
==={{thcrap TL include|th105/Images-Menu|Images Menus}}===<br />
===Outside the game===<br />
*{{thcrap TL include|th105/omake.txt}}<br />
<section end=th105 /><br />
<br />
{{thcrap Game|th11}}<br />
<section begin=th11 /><br />
===Main Story===<br />
*{{thcrap TL include|th11/Reimu and Yukari's Scenario}}<br />
*{{thcrap TL include|th11/Reimu and Suika's Scenario}}<br />
*{{thcrap TL include|th11/Reimu and Aya's Scenario}}<br />
*{{thcrap TL include|th11/Marisa and Alice's Scenario}}<br />
*{{thcrap TL include|th11/Marisa and Patchouli's Scenario}}<br />
*{{thcrap TL include|th11/Marisa and Nitori's Scenario}}<br />
===Endings===<br />
*{{thcrap TL include|th11/Reimu's Endings}}<br />
*{{thcrap TL include|th11/Marisa's Endings}}<br />
===Extra Story===<br />
*{{thcrap TL include|th11/Reimu and Yukari's Extra}}<br />
*{{thcrap TL include|th11/Reimu and Suika's Extra}}<br />
*{{thcrap TL include|th11/Reimu and Aya's Extra}}<br />
*{{thcrap TL include|th11/Marisa and Alice's Extra}}<br />
*{{thcrap TL include|th11/Marisa and Patchouli's Extra}}<br />
*{{thcrap TL include|th11/Marisa and Nitori's Extra}}<br />
==={{thcrap TL include|th11/Spell cards}}===<br />
==={{thcrap TL include|th11/Music}}===<br />
==={{thcrap TL include|th11/Images|Images}}===<br />
===Outside the game===<br />
*{{thcrap TL include|th11/HTML Manual}}<br />
*{{thcrap TL include|th11/characters setting.txt}}<br />
*{{thcrap TL include|th11/omake.txt}}<br />
<section end=th11 /><br />
<br />
{{thcrap Game|th12}}<br />
<section begin=th12 /><br />
===Main Story===<br />
*{{thcrap TL include|th12/Reimu A's Scenario}}<br />
*{{thcrap TL include|th12/Reimu B's Scenario}}<br />
*{{thcrap TL include|th12/Marisa A's Scenario}}<br />
*{{thcrap TL include|th12/Marisa B's Scenario}}<br />
*{{thcrap TL include|th12/Sanae A's Scenario}}<br />
*{{thcrap TL include|th12/Sanae B's Scenario}}<br />
===Endings===<br />
*{{thcrap TL include|th12/Reimu's Endings}}<br />
*{{thcrap TL include|th12/Marisa's Endings}}<br />
*{{thcrap TL include|th12/Sanae's Endings}}<br />
===Extra Story===<br />
*{{thcrap TL include|th12/Reimu A's Extra}}<br />
*{{thcrap TL include|th12/Reimu B's Extra}}<br />
*{{thcrap TL include|th12/Marisa A's Extra}}<br />
*{{thcrap TL include|th12/Marisa B's Extra}}<br />
*{{thcrap TL include|th12/Sanae A's Extra}}<br />
*{{thcrap TL include|th12/Sanae B's Extra}}<br />
==={{thcrap TL include|th12/Spell cards}}===<br />
==={{thcrap TL include|th12/Music}}===<br />
==={{thcrap TL include|th12/Images|Images}}===<br />
===Outside the game===<br />
*{{thcrap TL include|th12/HTML Manual}}<br />
*{{thcrap TL include|th12/characters setting and extra story.txt}}<br />
*{{thcrap TL include|th12/omake.txt}}<br />
<section end=th12 /><br />
<br />
{{thcrap Game|th123}}<br />
<section begin=th123 /><br />
===Main Story===<br />
*{{thcrap TL include|th123/Sanae's Scenario}}<br />
*{{thcrap TL include|th123/Cirno's Scenario}}<br />
*{{thcrap TL include|th123/Meiling's Scenario}}<br />
===Endings===<br />
*{{thcrap TL include|th123/Sanae's Endings}}<br />
*{{thcrap TL include|th123/Cirno's Endings}}<br />
*{{thcrap TL include|th123/Meiling's Endings}}<br />
===Win quotes===<br />
*{{thcrap TL include|th123/Reimu's Win Quotes}}<br />
*{{thcrap TL include|th123/Marisa's Win Quotes}}<br />
*{{thcrap TL include|th123/Sakuya's Win Quotes}}<br />
*{{thcrap TL include|th123/Alice's Win Quotes}}<br />
*{{thcrap TL include|th123/Patchouli's Win Quotes}}<br />
*{{thcrap TL include|th123/Youmu's Win Quotes}}<br />
*{{thcrap TL include|th123/Remilia's Win Quotes}}<br />
*{{thcrap TL include|th123/Yuyuko's Win Quotes}}<br />
*{{thcrap TL include|th123/Yukari's Win Quotes}}<br />
*{{thcrap TL include|th123/Suika's Win Quotes}}<br />
*{{thcrap TL include|th123/Reisen's Win Quotes}}<br />
*{{thcrap TL include|th123/Aya's Win Quotes}}<br />
*{{thcrap TL include|th123/Komachi's Win Quotes}}<br />
*{{thcrap TL include|th123/Iku's Win Quotes}}<br />
*{{thcrap TL include|th123/Tenshi's Win Quotes}}<br />
*{{thcrap TL include|th123/Sanae's Win Quotes}}<br />
*{{thcrap TL include|th123/Cirno's Win Quotes}}<br />
*{{thcrap TL include|th123/Meiling's Win Quotes}}<br />
*{{thcrap TL include|th123/Utsuho's Win Quotes}}<br />
*{{thcrap TL include|th123/Suwako's Win Quotes}}<br />
==={{thcrap TL include|th123/Spell cards}}===<br />
===[https://www.thpatch.net/wiki/Special:Translate?taction=translate&group=themedb Music titles translation]===<br />
==={{thcrap TL include|th123/Images|Images}}===<br />
==={{thcrap TL include|th123/Images-Menu|Menu Images}}===<br />
==={{thcrap TL include|th123/Images-105|Th10.5 Duplicate Images}}===<br />
===Outside the game===<br />
*{{thcrap TL include|th123/HTML Manual}}<br />
<section end=th123 /><br />
<br />
{{thcrap Game|th125}}<br />
<section begin=th125 /><br />
==={{thcrap TL include|th125/Spoiler Stage}}===<br />
==={{thcrap TL include|th125/Spell cards}}===<br />
===Mission comments===<br />
*{{thcrap TL include|th125/Aya's mission comments}}<br />
*{{thcrap TL include|th125/Hatate's mission comments}}<br />
<br />
==={{thcrap TL include|th125/Music}}===<br />
==={{thcrap TL include|th125/Help messages}}===<br />
==={{thcrap TL include|th125/Images|Images}}===<br />
===Outside the game===<br />
*{{thcrap TL include|th125/omake.txt}}<br />
<section end=th125 /><br />
<br />
{{thcrap Game|th128}}<br />
<section begin=th128 /><br />
===Main Story===<br />
*{{thcrap TL include|th128/Route A}}<br />
*{{thcrap TL include|th128/Route B}}<br />
*{{thcrap TL include|th128/Route C}}<br />
*{{thcrap TL include|th128/Endings}}<br />
*{{thcrap TL include|th128/Extra}}<br />
==={{thcrap TL include|th128/Spell cards}}===<br />
==={{thcrap TL include|th128/Music}}===<br />
==={{thcrap TL include|th128/Images|Images}}===<br />
===Outside the game===<br />
*{{thcrap TL include|th128/omake.txt}}<br />
<section end=th128 /><br />
<br />
{{thcrap Game|th13}}<br />
<section begin=th13 /><br />
===Main Story===<br />
*{{thcrap TL include|th13/Reimu's Scenario}}<br />
*{{thcrap TL include|th13/Marisa's Scenario}}<br />
*{{thcrap TL include|th13/Sanae's Scenario}}<br />
*{{thcrap TL include|th13/Youmu's Scenario}}<br />
===Endings===<br />
*{{thcrap TL include|th13/Reimu's Endings}}<br />
*{{thcrap TL include|th13/Marisa's Endings}}<br />
*{{thcrap TL include|th13/Sanae's Endings}}<br />
*{{thcrap TL include|th13/Youmu's Endings}}<br />
===Extra Story===<br />
*{{thcrap TL include|th13/Reimu's Extra}}<br />
*{{thcrap TL include|th13/Marisa's Extra}}<br />
*{{thcrap TL include|th13/Sanae's Extra}}<br />
*{{thcrap TL include|th13/Youmu's Extra}}<br />
==={{thcrap TL include|th13/Spell cards}}===<br />
==={{thcrap TL include|th13/Music}}===<br />
==={{thcrap TL include|th13/Images|Images}}===<br />
===Outside the game===<br />
*{{thcrap TL include|th13/HTML Manual}}<br />
*{{thcrap TL include|th13/characters setting and extra story.txt}}<br />
*{{thcrap TL include|th13/omake.txt}}<br />
<section end=th13 /><br />
<br />
{{thcrap Game|th135}}<br />
<section begin=th135 /><br />
==={{thcrap TL include|th135/Summary}}===<br />
===Main Story===<br />
*{{thcrap TL include|th135/Reimu's Scenario}}<br />
*{{thcrap TL include|th135/Marisa's Scenario}}<br />
*{{thcrap TL include|th135/Byakuren's Scenario}}<br />
*{{thcrap TL include|th135/Miko's Scenario}}<br />
*{{thcrap TL include|th135/Ichirin's Scenario}}<br />
*{{thcrap TL include|th135/Futo's Scenario}}<br />
*{{thcrap TL include|th135/Nitori's Scenario}}<br />
*{{thcrap TL include|th135/Koishi's Scenario}}<br />
*{{thcrap TL include|th135/Mamizou's Scenario}}<br />
*{{thcrap TL include|th135/Kokoro's Scenario}}<br />
===Main Story - Spell cards===<br />
*{{thcrap TL include|th135/Reimu's Scenario - Spell cards}}<br />
*{{thcrap TL include|th135/Marisa's Scenario - Spell cards}}<br />
*{{thcrap TL include|th135/Byakuren's Scenario - Spell cards}}<br />
*{{thcrap TL include|th135/Miko's Scenario - Spell cards}}<br />
*{{thcrap TL include|th135/Ichirin's Scenario - Spell cards}}<br />
*{{thcrap TL include|th135/Futo's Scenario - Spell cards}}<br />
*{{thcrap TL include|th135/Nitori's Scenario - Spell cards}}<br />
*{{thcrap TL include|th135/Koishi's Scenario - Spell cards}}<br />
*{{thcrap TL include|th135/Mamizou's Scenario - Spell cards}}<br />
*{{thcrap TL include|th135/Kokoro's Scenario - Spell cards}}<br />
===Endings===<br />
*{{thcrap TL include|th135/Reimu's Endings}}<br />
*{{thcrap TL include|th135/Marisa's Endings}}<br />
*{{thcrap TL include|th135/Byakuren's Endings}}<br />
*{{thcrap TL include|th135/Miko's Endings}}<br />
*{{thcrap TL include|th135/Ichirin's Endings}}<br />
*{{thcrap TL include|th135/Futo's Endings}}<br />
*{{thcrap TL include|th135/Nitori's Endings}}<br />
*{{thcrap TL include|th135/Koishi's Endings}}<br />
*{{thcrap TL include|th135/Mamizou's Endings}}<br />
*{{thcrap TL include|th135/Kokoro's Endings}}<br />
===Win quotes===<br />
*{{thcrap TL include|th135/Reimu's Win Quotes}}<br />
*{{thcrap TL include|th135/Marisa's Win Quotes}}<br />
*{{thcrap TL include|th135/Byakuren's Win Quotes}}<br />
*{{thcrap TL include|th135/Miko's Win Quotes}}<br />
*{{thcrap TL include|th135/Ichirin's Win Quotes}}<br />
*{{thcrap TL include|th135/Futo's Win Quotes}}<br />
*{{thcrap TL include|th135/Nitori's Win Quotes}}<br />
*{{thcrap TL include|th135/Koishi's Win Quotes}}<br />
*{{thcrap TL include|th135/Mamizou's Win Quotes}}<br />
*{{thcrap TL include|th135/Kokoro's Win Quotes}}<br />
==={{thcrap TL include|th135/Act_and_Nut_strings}}===<br />
==={{thcrap TL include|th135/Spell cards}}===<br />
==={{thcrap TL include|th135/Music}}===<br />
===Images===<br />
*{{thcrap TL include|th135/Images-Main|Images}}<br />
*{{thcrap TL include|th135/Images-Menus|Images - Menus}}<br />
*{{thcrap TL include|th135/Images-Newspaper1|Images - Newspaper 1}}<br />
*{{thcrap TL include|th135/Images-Newspaper2|Images - Newspaper 2}}<br />
===Outside the game===<br />
*{{thcrap TL include|th135/omake.txt}}<br />
<section end=th135 /><br />
<br />
{{thcrap Game|th14}}<br />
<section begin=th14 /><br />
===Main Story===<br />
*{{thcrap TL include|th14/Reimu A's Scenario}}<br />
*{{thcrap TL include|th14/Reimu B's Scenario}}<br />
*{{thcrap TL include|th14/Marisa A's Scenario}}<br />
*{{thcrap TL include|th14/Marisa B's Scenario}}<br />
*{{thcrap TL include|th14/Sakuya A's Scenario}}<br />
*{{thcrap TL include|th14/Sakuya B's Scenario}}<br />
===Endings===<br />
*{{thcrap TL include|th14/Reimu's Endings}}<br />
*{{thcrap TL include|th14/Marisa's Endings}}<br />
*{{thcrap TL include|th14/Sakuya's Endings}}<br />
===Extra Story===<br />
*{{thcrap TL include|th14/Reimu A's Extra}}<br />
*{{thcrap TL include|th14/Reimu B's Extra}}<br />
*{{thcrap TL include|th14/Marisa A's Extra}}<br />
*{{thcrap TL include|th14/Marisa B's Extra}}<br />
*{{thcrap TL include|th14/Sakuya A's Extra}}<br />
*{{thcrap TL include|th14/Sakuya B's Extra}}<br />
==={{thcrap TL include|th14/Spell cards}}===<br />
==={{thcrap TL include|th14/Music}}===<br />
==={{thcrap TL include|th14/Images|Images}}===<br />
===Outside the game===<br />
*{{thcrap TL include|th14/HTML Manual}}<br />
*{{thcrap TL include|th14/omake.txt}}<br />
<section end=th14 /><br />
<br />
{{thcrap Game|th143}}<br />
<section begin=th143 /><br />
==={{thcrap TL include|th143/Dialog}}===<br />
==={{thcrap TL include|th143/Spell cards}}===<br />
==={{thcrap TL include|th143/Music}}===<br />
==={{thcrap TL include|th143/Day descriptions}}===<br />
==={{thcrap TL include|th143/Trophies}}===<br />
==={{thcrap TL include|th143/Hints}}===<br />
==={{thcrap TL include|th143/Images|Images}}===<br />
===Outside the game===<br />
*{{thcrap TL include|th143/omake.txt}}<br />
<section end=th143 /><br />
<br />
{{thcrap Game|th145}}<br />
<section begin=th145 /><br />
==={{thcrap TL include|th145/Summary}}===<br />
===Main Story===<br />
*{{thcrap TL include|th145/Reimu's Intro}}<br />
*{{thcrap TL include|th145/Marisa's Scenario}}<br />
*{{thcrap TL include|th145/Kasen's Scenario}}<br />
*{{thcrap TL include|th145/Ichirin's Scenario}}<br />
*{{thcrap TL include|th145/Byakuren's Scenario}}<br />
*{{thcrap TL include|th145/Futo's Scenario}}<br />
*{{thcrap TL include|th145/Miko's Scenario}}<br />
*{{thcrap TL include|th145/Mamizou's Scenario}}<br />
*{{thcrap TL include|th145/Mokou's Scenario}}<br />
*{{thcrap TL include|th145/Shinmyoumaru's Scenario}}<br />
*{{thcrap TL include|th145/Nitori's Scenario}}<br />
*{{thcrap TL include|th145/Koishi's Scenario}}<br />
*{{thcrap TL include|th145/Kokoro's Scenario}}<br />
*{{thcrap TL include|th145/Sumireko's Scenario}}<br />
*{{thcrap TL include|th145/Reimu's Scenario}}<br />
===Main Story - Spell cards===<br />
*{{thcrap TL include|th145/Reimu's Intro - Spell cards}}<br />
*{{thcrap TL include|th145/Marisa's Scenario - Spell cards}}<br />
*{{thcrap TL include|th145/Kasen's Scenario - Spell cards}}<br />
*{{thcrap TL include|th145/Ichirin's Scenario - Spell cards}}<br />
*{{thcrap TL include|th145/Byakuren's Scenario - Spell cards}}<br />
*{{thcrap TL include|th145/Futo's Scenario - Spell cards}}<br />
*{{thcrap TL include|th145/Miko's Scenario - Spell cards}}<br />
*{{thcrap TL include|th145/Mamizou's Scenario - Spell cards}}<br />
*{{thcrap TL include|th145/Mokou's Scenario - Spell cards}}<br />
*{{thcrap TL include|th145/Shinmyoumaru's Scenario - Spell cards}}<br />
*{{thcrap TL include|th145/Nitori's Scenario - Spell cards}}<br />
*{{thcrap TL include|th145/Koishi's Scenario - Spell cards}}<br />
*{{thcrap TL include|th145/Kokoro's Scenario - Spell cards}}<br />
*{{thcrap TL include|th145/Sumireko's Scenario - Spell cards}}<br />
*{{thcrap TL include|th145/Reimu's Scenario - Spell cards}}<br />
===Endings===<br />
*{{thcrap TL include|th145/Marisa's Endings}}<br />
*{{thcrap TL include|th145/Kasen's Endings}}<br />
*{{thcrap TL include|th145/Ichirin's Endings}}<br />
*{{thcrap TL include|th145/Byakuren's Endings}}<br />
*{{thcrap TL include|th145/Futo's Endings}}<br />
*{{thcrap TL include|th145/Miko's Endings}}<br />
*{{thcrap TL include|th145/Mamizou's Endings}}<br />
*{{thcrap TL include|th145/Mokou's Endings}}<br />
*{{thcrap TL include|th145/Shinmyoumaru's Endings}}<br />
*{{thcrap TL include|th145/Nitori's Endings}}<br />
*{{thcrap TL include|th145/Koishi's Endings}}<br />
*{{thcrap TL include|th145/Kokoro's Endings}}<br />
*{{thcrap TL include|th145/Sumireko's Endings}}<br />
*{{thcrap TL include|th145/Reimu's Endings}}<br />
===Win quotes===<br />
*{{thcrap TL include|th145/Reimu's Win Quotes}}<br />
*{{thcrap TL include|th145/Marisa's Win Quotes}}<br />
*{{thcrap TL include|th145/Kasen's Win Quotes}}<br />
*{{thcrap TL include|th145/Ichirin's Win Quotes}}<br />
*{{thcrap TL include|th145/Byakuren's Win Quotes}}<br />
*{{thcrap TL include|th145/Futo's Win Quotes}}<br />
*{{thcrap TL include|th145/Miko's Win Quotes}}<br />
*{{thcrap TL include|th145/Mamizou's Win Quotes}}<br />
*{{thcrap TL include|th145/Mokou's Win Quotes}}<br />
*{{thcrap TL include|th145/Shinmyoumaru's Win Quotes}}<br />
*{{thcrap TL include|th145/Nitori's Win Quotes}}<br />
*{{thcrap TL include|th145/Koishi's Win Quotes}}<br />
*{{thcrap TL include|th145/Kokoro's Win Quotes}}<br />
*{{thcrap TL include|th145/Sumireko's Win Quotes}}<br />
==={{thcrap TL include|th145/Act_and_Nut_strings}}===<br />
==={{thcrap TL include|th145/Spell cards}}===<br />
===[https://www.thpatch.net/wiki/Special:Translate?taction=translate&group=themedb Music titles translation]===<br />
==={{thcrap TL include|th145/Images|Images}}===<br />
===Outside the game===<br />
*{{thcrap TL include|th145/omake.txt}}<br />
<section end=th145 /><br />
<br />
{{thcrap Game|th15}}<br />
<section begin=th15 /><br />
===Main Story===<br />
*{{thcrap TL include|th15/Reimu's Scenario}}<br />
*{{thcrap TL include|th15/Marisa's Scenario}}<br />
*{{thcrap TL include|th15/Sanae's Scenario}}<br />
*{{thcrap TL include|th15/Reisen's Scenario}}<br />
===Endings===<br />
*{{thcrap TL include|th15/Reimu's Endings}}<br />
*{{thcrap TL include|th15/Marisa's Endings}}<br />
*{{thcrap TL include|th15/Sanae's Endings}}<br />
*{{thcrap TL include|th15/Reisen's Endings}}<br />
===Extra Story===<br />
*{{thcrap TL include|th15/Reimu's Extra}}<br />
*{{thcrap TL include|th15/Marisa's Extra}}<br />
*{{thcrap TL include|th15/Sanae's Extra}}<br />
*{{thcrap TL include|th15/Reisen's Extra}}<br />
==={{thcrap TL include|th15/Spell cards}}===<br />
==={{thcrap TL include|th15/Music}}===<br />
==={{thcrap TL include|th15/Images|Images}}===<br />
===Outside the game===<br />
*{{thcrap TL include|th15/omake.txt}}<br />
<section end=th15 /><br />
<br />
{{thcrap Game|th155}}<br />
<section begin=th155 /><br />
===Main Story===<br />
*{{thcrap TL include|th155/Reimu's Scenario}}<br />
*{{thcrap TL include|th155/Marisa's Scenario}}<br />
*{{thcrap TL include|th155/Nitori's Scenario}}<br />
*{{thcrap TL include|th155/Mamizou's Scenario}}<br />
*{{thcrap TL include|th155/Miko's Scenario}}<br />
*{{thcrap TL include|th155/Futo's Scenario}}<br />
*{{thcrap TL include|th155/Reisen's Scenario}}<br />
*{{thcrap TL include|th155/Sumireko's Scenario}}<br />
*{{thcrap TL include|th155/Tenshi's Scenario}}<br />
*{{thcrap TL include|th155/Yukari's Scenario}}<br />
*{{thcrap TL include|th155/Joon's Scenario}}<br />
===Endings===<br />
*{{thcrap TL include|th155/Marisa's Endings}}<br />
*{{thcrap TL include|th155/Nitori's Endings}}<br />
*{{thcrap TL include|th155/Mamizou's Endings}}<br />
*{{thcrap TL include|th155/Miko's Endings}}<br />
*{{thcrap TL include|th155/Futo's Endings}}<br />
*{{thcrap TL include|th155/Reisen's Endings}}<br />
*{{thcrap TL include|th155/Sumireko's Endings}}<br />
*{{thcrap TL include|th155/Tenshi's Endings}}<br />
*{{thcrap TL include|th155/Yukari's Endings}}<br />
*{{thcrap TL include|th155/Joon's Endings}}<br />
===Win quotes===<br />
*{{thcrap TL include|th155/Reimu's Win Quotes}}<br />
*{{thcrap TL include|th155/Marisa's Win Quotes}}<br />
*{{thcrap TL include|th155/Kasen's Win Quotes}}<br />
*{{thcrap TL include|th155/Ichirin's Win Quotes}}<br />
*{{thcrap TL include|th155/Byakuren's Win Quotes}}<br />
*{{thcrap TL include|th155/Futo's Win Quotes}}<br />
*{{thcrap TL include|th155/Miko's Win Quotes}}<br />
*{{thcrap TL include|th155/Mamizou's Win Quotes}}<br />
*{{thcrap TL include|th155/Mokou's Win Quotes}}<br />
*{{thcrap TL include|th155/Shinmyoumaru's Win Quotes}}<br />
*{{thcrap TL include|th155/Nitori's Win Quotes}}<br />
*{{thcrap TL include|th155/Koishi's Win Quotes}}<br />
*{{thcrap TL include|th155/Kokoro's Win Quotes}}<br />
*{{thcrap TL include|th155/Sumireko's Win Quotes}}<br />
*{{thcrap TL include|th155/Reisen's Win Quotes}}<br />
*{{thcrap TL include|th155/Doremy's Win Quotes}}<br />
*{{thcrap TL include|th155/Yukari's Win Quotes}}<br />
*{{thcrap TL include|th155/Tenshi's Win Quotes}}<br />
*{{thcrap TL include|th155/Joon's Win Quotes}}<br />
==={{thcrap TL include|th155/Spell cards}}===<br />
==={{thcrap TL include|th155/Nut and Csv strings|Nut and CSV strings}}===<br />
==={{thcrap TL include|th155/Music}}===<br />
==={{thcrap TL include|th155/Images|Images}}===<br />
==={{thcrap TL include|th155/Images-Characters|Character Name Images}}===<br />
===Outside the game===<br />
*{{thcrap TL include|th155/HTML Manual}}<br />
*{{thcrap TL include|th155/omake.txt}}<br />
<section end=th155 /><br />
<br />
{{thcrap Game|th16}}<br />
<section begin=th16 /><br />
===Main Story===<br />
*{{thcrap TL include|th16/Reimu's Scenario}}<br />
*{{thcrap TL include|th16/Cirno's Scenario}}<br />
*{{thcrap TL include|th16/Aya's Scenario}}<br />
*{{thcrap TL include|th16/Marisa's Scenario}}<br />
<br />
===Endings===<br />
*{{thcrap TL include|th16/Reimu's Endings}}<br />
*{{thcrap TL include|th16/Cirno's Endings}}<br />
*{{thcrap TL include|th16/Aya's Endings}}<br />
*{{thcrap TL include|th16/Marisa's Endings}}<br />
<br />
===Extra Story===<br />
*{{thcrap TL include|th16/Reimu's Extra}}<br />
*{{thcrap TL include|th16/Cirno's Extra}}<br />
*{{thcrap TL include|th16/Aya's Extra}}<br />
*{{thcrap TL include|th16/Marisa's Extra}}<br />
<br />
==={{thcrap TL include|th16/Spell cards}}===<br />
==={{thcrap TL include|th16/Music}}===<br />
==={{thcrap TL include|th16/Images|Images}}===<br />
===Outside the game===<br />
*{{thcrap TL include|th16/omake.txt}}<br />
<section end=th16 /><br />
<br />
{{thcrap Game|th165}}<br />
<section begin=th165 /><br />
<br />
==={{thcrap TL include|th165/Dialog}}===<br />
==={{thcrap TL include|th165/Spell cards}}===<br />
==={{thcrap TL include|th165/Dream comments}}===<br />
==={{thcrap TL include|th165/Trophies}}===<br />
==={{thcrap TL include|th165/Music}}===<br />
==={{thcrap TL include|th165/Images|Images}}===<br />
===Outside the game===<br />
*{{thcrap TL include|th165/omake.txt}}<br />
<section end=th165 /><br />
<br />
{{thcrap Game|th17}}<br />
<section begin=th17 /><br />
===Main Story===<br />
*{{thcrap TL include|th17/Reimu A's Scenario}}<br />
*{{thcrap TL include|th17/Reimu B's Scenario}}<br />
*{{thcrap TL include|th17/Reimu C's Scenario}}<br />
<br />
*{{thcrap TL include|th17/Marisa A's Scenario}}<br />
*{{thcrap TL include|th17/Marisa B's Scenario}}<br />
*{{thcrap TL include|th17/Marisa C's Scenario}}<br />
<br />
*{{thcrap TL include|th17/Youmu A's Scenario}}<br />
*{{thcrap TL include|th17/Youmu B's Scenario}}<br />
*{{thcrap TL include|th17/Youmu C's Scenario}}<br />
<br />
===Endings===<br />
*{{thcrap TL include|th17/Reimu's Endings}}<br />
*{{thcrap TL include|th17/Marisa's Endings}}<br />
*{{thcrap TL include|th17/Youmu's Endings}}<br />
<br />
===Extra Story===<br />
*{{thcrap TL include|th17/Reimu A's Extra}}<br />
*{{thcrap TL include|th17/Reimu B's Extra}}<br />
*{{thcrap TL include|th17/Reimu C's Extra}}<br />
<br />
*{{thcrap TL include|th17/Marisa A's Extra}}<br />
*{{thcrap TL include|th17/Marisa B's Extra}}<br />
*{{thcrap TL include|th17/Marisa C's Extra}}<br />
<br />
*{{thcrap TL include|th17/Youmu A's Extra}}<br />
*{{thcrap TL include|th17/Youmu B's Extra}}<br />
*{{thcrap TL include|th17/Youmu C's Extra}}<br />
<br />
==={{thcrap TL include|th17/Spell cards}}===<br />
==={{thcrap TL include|th17/Music}}===<br />
==={{thcrap TL include|th17/Trophies}}===<br />
{{thcrap TL include|th17/Trophies (Trial)}}<br />
==={{thcrap TL include|th17/Images|Images}}===<br />
===Outside the game===<br />
*{{thcrap TL include|th17/omake.txt}}<br />
<section end=th17 /><br />
<br />
{{thcrap Game|th175}}<br />
<section begin=th175 /><br />
===Main Scenario===<br />
*{{thcrap TL include|th175/Reimu's Scenario}}<br />
*{{thcrap TL include|th175/Marisa's Scenario}}<br />
*{{thcrap TL include|th175/Kanako's Scenario}}<br />
*{{thcrap TL include|th175/Minamitsu's Scenario}}<br />
*{{thcrap TL include|th175/Joon and Shion's Scenario}}<br />
*{{thcrap TL include|th175/Flandre's Scenario}}<br />
*{{thcrap TL include|th175/Yuuma's Scenario}}<br />
<br />
===Endings===<br />
*{{thcrap TL include|th175/Reimu's Endings}}<br />
*{{thcrap TL include|th175/Marisa's Endings}}<br />
*{{thcrap TL include|th175/Kanako's Endings}}<br />
*{{thcrap TL include|th175/Minamitsu's Endings}}<br />
*{{thcrap TL include|th175/Joon and Shion's Endings}}<br />
*{{thcrap TL include|th175/Flandre's Endings}}<br />
*{{thcrap TL include|th175/Yuuma's Endings}}<br />
<br />
==={{thcrap TL include|th175/Spell cards}}===<br />
==={{thcrap TL include|th175/Trophies}}===<br />
==={{thcrap TL include|th175/Nut strings|Nut strings}}===<br />
==={{thcrap TL include|th175/Images|Images}}===<br />
===Outside the game===<br />
*{{thcrap TL include|th175/omake.txt}}<br />
<section end=th175 /><br />
<br />
{{thcrap Game|th18}}<br />
<section begin=th18 /><br />
===Main Story===<br />
*{{thcrap TL include|th18/Reimu's Scenario}}<br />
*{{thcrap TL include|th18/Marisa's Scenario}}<br />
*{{thcrap TL include|th18/Sakuya's Scenario}}<br />
*{{thcrap TL include|th18/Sanae's Scenario}}<br />
===Endings===<br />
*{{thcrap TL include|th18/Reimu's Endings}}<br />
*{{thcrap TL include|th18/Marisa's Endings}}<br />
*{{thcrap TL include|th18/Sakuya's Endings}}<br />
*{{thcrap TL include|th18/Sanae's Endings}}<br />
===Extra Story===<br />
*{{thcrap TL include|th18/Reimu's Extra}}<br />
*{{thcrap TL include|th18/Marisa's Extra}}<br />
*{{thcrap TL include|th18/Sakuya's Extra}}<br />
*{{thcrap TL include|th18/Sanae's Extra}}<br />
==={{thcrap TL include|th18/Spell cards}}===<br />
==={{thcrap TL include|th18/Music}}===<br />
==={{thcrap TL include|th18/Trophies}}===<br />
{{thcrap TL include|th18/Trophies (Trial)}}<br />
==={{thcrap TL include|th18/Abilities}}===<br />
{{thcrap TL include|th18/Abilities (Trial)}}<br />
==={{thcrap TL include|th18/Images|Images}}===<br />
===Outside the game===<br />
*{{thcrap TL include|th18/omake.txt}}<br />
<section end=th18 /><br />
<br />
{{thcrap Game|th185}}<br />
<section begin=th185 /><br />
==={{thcrap TL include|th185/Dialog}}===<br />
==={{thcrap TL include|th185/Spell cards}}===<br />
==={{thcrap TL include|th185/Music}}===<br />
==={{thcrap TL include|th185/Trophies}}===<br />
==={{thcrap TL include|th185/Abilities}}===<br />
==={{thcrap TL include|th185/Market comments}}===<br />
<br />
==={{thcrap TL include|th185/Images|Images}}===<br />
===Outside the game===<br />
*{{thcrap TL include|th185/omake.txt}}<br />
<section end=th185 /><br />
<br />
{{thcrap Game|th19}}<br />
<section begin=th19 /><br />
===Main Story===<br />
*{{thcrap TL include|th19/Reimu's Scenario}}<br />
*{{thcrap TL include|th19/Marisa's Scenario}}<br />
*{{thcrap TL include|th19/Sanae's Scenario}}<br />
*{{thcrap TL include|th19/Ran's Scenario}}<br />
*{{thcrap TL include|th19/Aun's Scenario}}<br />
*{{thcrap TL include|th19/Nazrin's Scenario}}<br />
*{{thcrap TL include|th19/Seiran's Scenario}}<br />
*{{thcrap TL include|th19/Rin's Scenario}}<br />
*{{thcrap TL include|th19/Tsukasa's Scenario}}<br />
*{{thcrap TL include|th19/Mamizou's Scenario}}<br />
*{{thcrap TL include|th19/Yachie's Scenario}}<br />
*{{thcrap TL include|th19/Saki's Scenario}}<br />
*{{thcrap TL include|th19/Yuuma's Scenario}}<br />
*{{thcrap TL include|th19/Suika's Scenario}}<br />
*{{thcrap TL include|th19/Biten's Scenario}}<br />
*{{thcrap TL include|th19/Enoko's Scenario}}<br />
*{{thcrap TL include|th19/Chiyari's Scenario}}<br />
*{{thcrap TL include|th19/Hisami's Scenario}}<br />
*{{thcrap TL include|th19/Zanmu's Scenario}}<br />
<br />
===VS Match Scripts===<br />
*{{thcrap TL include|th19/Reimu's Script}}<br />
*{{thcrap TL include|th19/Marisa's Script}}<br />
*{{thcrap TL include|th19/Sanae's Script}}<br />
*{{thcrap TL include|th19/Ran's Script}}<br />
*{{thcrap TL include|th19/Aun's Script}}<br />
*{{thcrap TL include|th19/Nazrin's Script}}<br />
*{{thcrap TL include|th19/Seiran's Script}}<br />
*{{thcrap TL include|th19/Rin's Script}}<br />
*{{thcrap TL include|th19/Tsukasa's Script}}<br />
*{{thcrap TL include|th19/Mamizou's Script}}<br />
*{{thcrap TL include|th19/Yachie's Script}}<br />
*{{thcrap TL include|th19/Saki's Script}}<br />
*{{thcrap TL include|th19/Yuuma's Script}}<br />
*{{thcrap TL include|th19/Suika's Script}}<br />
*{{thcrap TL include|th19/Biten's Script}}<br />
*{{thcrap TL include|th19/Enoko's Script}}<br />
*{{thcrap TL include|th19/Chiyari's Script}}<br />
*{{thcrap TL include|th19/Hisami's Script}}<br />
*{{thcrap TL include|th19/Zanmu's Script}}<br />
<br />
===Endings===<br />
*{{thcrap TL include|th19/Reimu's Ending}}<br />
*{{thcrap TL include|th19/Marisa's Ending}}<br />
*{{thcrap TL include|th19/Sanae's Ending}}<br />
*{{thcrap TL include|th19/Ran's Ending}}<br />
*{{thcrap TL include|th19/Aun's Ending}}<br />
*{{thcrap TL include|th19/Nazrin's Ending}}<br />
*{{thcrap TL include|th19/Seiran's Ending}}<br />
*{{thcrap TL include|th19/Rin's Ending}}<br />
*{{thcrap TL include|th19/Tsukasa's Ending}}<br />
*{{thcrap TL include|th19/Mamizou's Ending}}<br />
*{{thcrap TL include|th19/Yachie's Ending}}<br />
*{{thcrap TL include|th19/Saki's Ending}}<br />
*{{thcrap TL include|th19/Yuuma's Ending}}<br />
*{{thcrap TL include|th19/Suika's Ending}}<br />
*{{thcrap TL include|th19/Biten's Ending}}<br />
*{{thcrap TL include|th19/Enoko's Ending}}<br />
*{{thcrap TL include|th19/Chiyari's Ending}}<br />
*{{thcrap TL include|th19/Hisami's Ending}}<br />
*{{thcrap TL include|th19/Zanmu's Ending}}<br />
<br />
===Main Story (Trial)===<br />
*{{thcrap TL include|th19/Reimu's Scenario (Trial)}}<br />
*{{thcrap TL include|th19/Marisa's Scenario (Trial)}}<br />
*{{thcrap TL include|th19/Aun's Scenario (Trial)}}<br />
*{{thcrap TL include|th19/Nazrin's Scenario (Trial)}}<br />
*{{thcrap TL include|th19/Seiran's Scenario (Trial)}}<br />
<br />
===VS Match Scripts (Trial)===<br />
*{{thcrap TL include|th19/Reimu's Script (Trial)}}<br />
*{{thcrap TL include|th19/Marisa's Script (Trial)}}<br />
*{{thcrap TL include|th19/Aun's Script (Trial)}}<br />
*{{thcrap TL include|th19/Nazrin's Script (Trial)}}<br />
*{{thcrap TL include|th19/Seiran's Script (Trial)}}<br />
<br />
==={{thcrap TL include|th19/Spell cards}}===<br />
==={{thcrap TL include|th19/Music}}===<br />
==={{thcrap TL include|th19/Trophies}}===<br />
==={{thcrap TL include|th19/Abilities}}===<br />
{{thcrap TL include|th19/Abilities (Trial)}}<br />
==={{thcrap TL include|th19/Title screen messages}}===<br />
==={{thcrap TL include|th19/Images|Images}}===<br />
===Outside the game===<br />
*{{thcrap TL include|th19/omake.txt}}<br />
<section end=th19 /><br />
<br />
{{thcrap Game|nsml}}<br />
<section begin=nsml /><br />
==={{thcrap TL include|nsml/Images|Images}}===<br />
<section end=nsml /><br />
<br />
{{thcrap Game|megamari}}<br />
<section begin=megamari /><br />
==={{thcrap TL include|megamari/Images|Images}}===<br />
<section end=megamari /><br />
<br />
{{thcrap Game|marilega}}<br />
<section begin=marilega /><br />
==={{thcrap TL include|marilega/Images|Images}}===<br />
==={{thcrap TL include|marilega/Nut and Csv strings|Nut and CSV strings}}===<br />
<section end=marilega /></div>
Egor
https://www.thpatch.net/w/index.php?title=Patch:Lang_uk&diff=2586200
Patch:Lang uk
2023-10-13T16:05:53Z
<p>Egor: remove the hard patched endings links (which were never used anyway)</p>
<hr />
<div>{{thcrap Patch Info<br />
|title=Ukrainian language pack<br />
|dependencies=nmlgc/base_tsa, nmlgc/base_tasofro, nmlgc/script_latin, nmlgc/western_name_order<br />
}}<br />
== Шрифти ==<br />
*{{thcrap Include|File:PT_Sans-Narrow.ttf|game=th09}}<br />
<br />
{{thcrap Include|File:lang_uk-th09.json|target=th09.js|TH09 font setting}}</div>
Egor
https://www.thpatch.net/w/index.php?title=Patch:Translatable_content&diff=2570275
Patch:Translatable content
2023-10-08T08:09:31Z
<p>Egor: th075: add Images and Images-SpellCard</p>
<hr />
<div>{{Locked patch page note}}<br />
==Supported languages==<br />
{{Rellink|This section is transcluded from [[Patch:Supported languages]].}}<br />
{{Patch:Supported languages}}<br />
<br />
== Global content ==<br />
==={{thcrap TL include|Hardcoded strings}} ===<br />
==={{thcrap TL include|Hardcoded ASCII strings}} ===<br />
==={{thcrap TL include|Game titles}} ===<br />
<br />
{{thcrap Game|th06}}<br />
<section begin=th06 /><br />
*{{thcrap TL include|th06/Stage titles}}<br />
===Main Story===<br />
*{{thcrap TL include|th06/Reimu's Scenario}}<br />
*{{thcrap TL include|th06/Marisa's Scenario}}<br />
===Extra Story===<br />
*{{thcrap TL include|th06/Reimu's Extra}}<br />
*{{thcrap TL include|th06/Marisa's Extra}}<br />
===Endings===<br />
*{{thcrap TL include|th06/Reimu's Endings}}<br />
*{{thcrap TL include|th06/Marisa's Endings}}<br />
==={{thcrap TL include|th06/Spell cards}}===<br />
==={{thcrap TL include|th06/Music}}===<br />
==={{thcrap TL include|th06/Images|Images}}===<br />
===Outside the game===<br />
*{{thcrap TL include|th06/HTML Manual}}<br />
*{{thcrap TL include|th06/omake.txt}}<br />
<section end=th06 /><br />
<br />
{{thcrap Game|th07}}<br />
<section begin=th07 /><br />
===Main Story===<br />
*{{thcrap TL include|th07/Reimu's Scenario}}<br />
*{{thcrap TL include|th07/Marisa's Scenario}}<br />
*{{thcrap TL include|th07/Sakuya's Scenario}}<br />
===Extra and Phantasm Story===<br />
*{{thcrap TL include|th07/Reimu's Extra and Phantasm}}<br />
*{{thcrap TL include|th07/Marisa's Extra and Phantasm}}<br />
*{{thcrap TL include|th07/Sakuya's Extra and Phantasm}}<br />
===Endings===<br />
*{{thcrap TL include|th07/Reimu's Endings}}<br />
*{{thcrap TL include|th07/Marisa's Endings}}<br />
*{{thcrap TL include|th07/Sakuya's Endings}}<br />
==={{thcrap TL include|th07/Spell cards}}===<br />
==={{thcrap TL include|th07/Music}}===<br />
==={{thcrap TL include|th07/Images|Images}}===<br />
===Outside the game===<br />
*{{thcrap TL include|th07/HTML Manual}}<br />
*{{thcrap TL include|th07/characters setting.txt}}<br />
*{{thcrap TL include|th07/omake.txt}}<br />
*{{thcrap TL include|th07/omake (trial).txt}}<br />
<section end=th07 /><br />
<br />
{{thcrap Game|th075}}<br />
<section begin=th075 /><br />
==={{thcrap TL include|th075/Images|Images}}===<br />
*{{thcrap TL include|th075/Images-SpellCard}}<br />
===Outside the game===<br />
*{{thcrap TL include|th075/omake.txt}}<br />
<section end=th075 /><br />
<br />
{{thcrap Game|th08}}<br />
<section begin=th08 /><br />
===Main Story===<br />
*{{thcrap TL include|th08/Boundary Team's Scenario}}<br />
*{{thcrap TL include|th08/Magic Team's Scenario}}<br />
*{{thcrap TL include|th08/Scarlet Team's Scenario}}<br />
*{{thcrap TL include|th08/Ghost Team's Scenario}}<br />
===Extra Story===<br />
*{{thcrap TL include|th08/Boundary Team's Extra}}<br />
*{{thcrap TL include|th08/Magic Team's Extra}}<br />
*{{thcrap TL include|th08/Scarlet Team's Extra}}<br />
*{{thcrap TL include|th08/Ghost Team's Extra}}<br />
===Endings===<br />
*{{thcrap TL include|th08/Boundary Team's Endings}}<br />
*{{thcrap TL include|th08/Magic Team's Endings}}<br />
*{{thcrap TL include|th08/Scarlet Team's Endings}}<br />
*{{thcrap TL include|th08/Ghost Team's Endings}}<br />
==={{thcrap TL include|th08/Spell cards}}===<br />
==={{thcrap TL include|th08/Music}}===<br />
==={{thcrap TL include|th08/Images|Images}}===<br />
===Outside the game===<br />
*{{thcrap TL include|th08/HTML Manual}}<br />
*{{thcrap TL include|th08/characters setting.txt}}<br />
*{{thcrap TL include|th08/omake.txt}}<br />
*{{thcrap TL include|th08/omake (trial).txt}}<br />
<section end=th08 /><br />
<br />
{{thcrap Game|th09}}<br />
<section begin=th09 /><br />
===Main Story===<br />
*{{thcrap TL include|th09/Reimu's Scenario}}<br />
*{{thcrap TL include|th09/Marisa's Scenario}}<br />
*{{thcrap TL include|th09/Sakuya's Scenario}}<br />
*{{thcrap TL include|th09/Youmu's Scenario}}<br />
*{{thcrap TL include|th09/Reisen's Scenario}}<br />
*{{thcrap TL include|th09/Cirno's Scenario}}<br />
*{{thcrap TL include|th09/Lyrica's Scenario}}<br />
*{{thcrap TL include|th09/Mystia's Scenario}}<br />
*{{thcrap TL include|th09/Tewi's Scenario}}<br />
*{{thcrap TL include|th09/Aya's Scenario}}<br />
*{{thcrap TL include|th09/Medicine's Scenario}}<br />
*{{thcrap TL include|th09/Yuuka's Scenario}}<br />
*{{thcrap TL include|th09/Komachi's Scenario}}<br />
*{{thcrap TL include|th09/Eiki's Scenario}}<br />
===VS Match Scripts===<br />
*{{thcrap TL include|th09/Reimu's Script}}<br />
*{{thcrap TL include|th09/Marisa's Script}}<br />
*{{thcrap TL include|th09/Sakuya's Script}}<br />
*{{thcrap TL include|th09/Youmu's Script}}<br />
*{{thcrap TL include|th09/Reisen's Script}}<br />
*{{thcrap TL include|th09/Cirno's Script}}<br />
*{{thcrap TL include|th09/Lyrica's Script}}<br />
*{{thcrap TL include|th09/Mystia's Script}}<br />
*{{thcrap TL include|th09/Tewi's Script}}<br />
*{{thcrap TL include|th09/Aya's Script}}<br />
*{{thcrap TL include|th09/Medicine's Script}}<br />
*{{thcrap TL include|th09/Yuuka's Script}}<br />
*{{thcrap TL include|th09/Komachi's Script}}<br />
*{{thcrap TL include|th09/Eiki's Script}}<br />
*{{thcrap TL include|th09/Merlin's Script}}<br />
*{{thcrap TL include|th09/Lunasa's Script}}<br />
===Endings===<br />
*{{thcrap TL include|th09/Reimu's Endings}}<br />
*{{thcrap TL include|th09/Marisa's Endings}}<br />
*{{thcrap TL include|th09/Sakuya's Endings}}<br />
*{{thcrap TL include|th09/Youmu's Endings}}<br />
*{{thcrap TL include|th09/Reisen's Endings}}<br />
*{{thcrap TL include|th09/Cirno's Endings}}<br />
*{{thcrap TL include|th09/Lyrica's Endings}}<br />
*{{thcrap TL include|th09/Mystia's Endings}}<br />
*{{thcrap TL include|th09/Tewi's Endings}}<br />
*{{thcrap TL include|th09/Aya's Endings}}<br />
*{{thcrap TL include|th09/Medicine's Endings}}<br />
*{{thcrap TL include|th09/Yuuka's Endings}}<br />
*{{thcrap TL include|th09/Komachi's Endings}}<br />
*{{thcrap TL include|th09/Eiki's Endings}}<br />
==={{thcrap TL include|th09/Spell cards}}===<br />
==={{thcrap TL include|th09/Music}}===<br />
==={{thcrap TL include|th09/Images|Images}}===<br />
===Outside the game===<br />
*{{thcrap TL include|th09/HTML Manual}}<br />
*{{thcrap TL include|th09/characters setting.txt}}<br />
*{{thcrap TL include|th09/omake.txt}}<br />
*{{thcrap TL include|th09/omake (trial).txt}}<br />
<section end=th09 /><br />
<br />
{{thcrap Game|th095}}<br />
<section begin=th095 /><br />
==={{thcrap TL include|th095/Spell cards}}===<br />
==={{thcrap TL include|th095/Aya's mission comments}}===<br />
==={{thcrap TL include|th095/Music}}===<br />
==={{thcrap TL include|th095/Help messages}}===<br />
==={{thcrap TL include|th095/Images|Images}}===<br />
===Outside the game===<br />
*{{thcrap TL include|th095/omake.txt}}<br />
<section end=th095 /><br />
<br />
{{thcrap Game|th10}}<br />
<section begin=th10 /><br />
===Main Story===<br />
*{{thcrap TL include|th10/Reimu's Scenario}}<br />
*{{thcrap TL include|th10/Marisa's Scenario}}<br />
===Endings===<br />
*{{thcrap TL include|th10/Reimu's Endings}}<br />
*{{thcrap TL include|th10/Marisa's Endings}}<br />
===Extra Story===<br />
*{{thcrap TL include|th10/Reimu's Extra}}<br />
*{{thcrap TL include|th10/Marisa's Extra}}<br />
==={{thcrap TL include|th10/Spell cards}}===<br />
==={{thcrap TL include|th10/Music}}===<br />
==={{thcrap TL include|th10/Images|Images}}===<br />
===Outside the game===<br />
*{{thcrap TL include|th10/HTML Manual}}<br />
*{{thcrap TL include|th10/characters setting.txt}}<br />
*{{thcrap TL include|th10/omake.txt}}<br />
<section end=th10 /><br />
<br />
{{thcrap Game|alcostg}}<br />
<section begin=alcostg/><br />
==={{thcrap TL include|alcostg/Spell cards}}===<br />
==={{thcrap TL include|alcostg/Images|Images}}===<br />
<section end=alcostg /><br />
<br />
{{thcrap Game|th105}}<br />
<section begin=th105 /><br />
===Main Story===<br />
*{{thcrap TL include|th105/Reimu's Scenario}}<br />
*{{thcrap TL include|th105/Marisa's Scenario}}<br />
*{{thcrap TL include|th105/Sakuya's Scenario}}<br />
*{{thcrap TL include|th105/Alice's Scenario}}<br />
*{{thcrap TL include|th105/Patchouli's Scenario}}<br />
*{{thcrap TL include|th105/Youmu's Scenario}}<br />
*{{thcrap TL include|th105/Remilia's Scenario}}<br />
*{{thcrap TL include|th105/Yuyuko's Scenario}}<br />
*{{thcrap TL include|th105/Yukari's Scenario}}<br />
*{{thcrap TL include|th105/Suika's Scenario}}<br />
*{{thcrap TL include|th105/Reisen's Scenario}}<br />
*{{thcrap TL include|th105/Aya's Scenario}}<br />
*{{thcrap TL include|th105/Komachi's Scenario}}<br />
*{{thcrap TL include|th105/Iku's Scenario}}<br />
*{{thcrap TL include|th105/Tenshi's Scenario}}<br />
===Endings===<br />
*{{thcrap TL include|th105/Reimu's Endings}}<br />
*{{thcrap TL include|th105/Marisa's Endings}}<br />
*{{thcrap TL include|th105/Sakuya's Endings}}<br />
*{{thcrap TL include|th105/Alice's Endings}}<br />
*{{thcrap TL include|th105/Patchouli's Endings}}<br />
*{{thcrap TL include|th105/Youmu's Endings}}<br />
*{{thcrap TL include|th105/Remilia's Endings}}<br />
*{{thcrap TL include|th105/Yuyuko's Endings}}<br />
*{{thcrap TL include|th105/Yukari's Endings}}<br />
*{{thcrap TL include|th105/Suika's Endings}}<br />
*{{thcrap TL include|th105/Reisen's Endings}}<br />
*{{thcrap TL include|th105/Aya's Endings}}<br />
*{{thcrap TL include|th105/Komachi's Endings}}<br />
*{{thcrap TL include|th105/Iku's Endings}}<br />
*{{thcrap TL include|th105/Tenshi's Endings}}<br />
===Win quotes===<br />
*{{thcrap TL include|th105/Reimu's Win Quotes}}<br />
*{{thcrap TL include|th105/Marisa's Win Quotes}}<br />
*{{thcrap TL include|th105/Sakuya's Win Quotes}}<br />
*{{thcrap TL include|th105/Alice's Win Quotes}}<br />
*{{thcrap TL include|th105/Patchouli's Win Quotes}}<br />
*{{thcrap TL include|th105/Youmu's Win Quotes}}<br />
*{{thcrap TL include|th105/Remilia's Win Quotes}}<br />
*{{thcrap TL include|th105/Yuyuko's Win Quotes}}<br />
*{{thcrap TL include|th105/Yukari's Win Quotes}}<br />
*{{thcrap TL include|th105/Suika's Win Quotes}}<br />
*{{thcrap TL include|th105/Reisen's Win Quotes}}<br />
*{{thcrap TL include|th105/Aya's Win Quotes}}<br />
*{{thcrap TL include|th105/Komachi's Win Quotes}}<br />
*{{thcrap TL include|th105/Iku's Win Quotes}}<br />
*{{thcrap TL include|th105/Tenshi's Win Quotes}}<br />
==={{thcrap TL include|th105/Spell cards}}===<br />
===[https://www.thpatch.net/wiki/Special:Translate?taction=translate&group=themedb Music titles translation]===<br />
==={{thcrap TL include|th105/Images|Images}}===<br />
==={{thcrap TL include|th105/Images-Menu|Images Menus}}===<br />
===Outside the game===<br />
*{{thcrap TL include|th105/omake.txt}}<br />
<section end=th105 /><br />
<br />
{{thcrap Game|th11}}<br />
<section begin=th11 /><br />
===Main Story===<br />
*{{thcrap TL include|th11/Reimu and Yukari's Scenario}}<br />
*{{thcrap TL include|th11/Reimu and Suika's Scenario}}<br />
*{{thcrap TL include|th11/Reimu and Aya's Scenario}}<br />
*{{thcrap TL include|th11/Marisa and Alice's Scenario}}<br />
*{{thcrap TL include|th11/Marisa and Patchouli's Scenario}}<br />
*{{thcrap TL include|th11/Marisa and Nitori's Scenario}}<br />
===Endings===<br />
*{{thcrap TL include|th11/Reimu's Endings}}<br />
*{{thcrap TL include|th11/Marisa's Endings}}<br />
===Extra Story===<br />
*{{thcrap TL include|th11/Reimu and Yukari's Extra}}<br />
*{{thcrap TL include|th11/Reimu and Suika's Extra}}<br />
*{{thcrap TL include|th11/Reimu and Aya's Extra}}<br />
*{{thcrap TL include|th11/Marisa and Alice's Extra}}<br />
*{{thcrap TL include|th11/Marisa and Patchouli's Extra}}<br />
*{{thcrap TL include|th11/Marisa and Nitori's Extra}}<br />
==={{thcrap TL include|th11/Spell cards}}===<br />
==={{thcrap TL include|th11/Music}}===<br />
==={{thcrap TL include|th11/Images|Images}}===<br />
===Outside the game===<br />
*{{thcrap TL include|th11/HTML Manual}}<br />
*{{thcrap TL include|th11/characters setting.txt}}<br />
*{{thcrap TL include|th11/omake.txt}}<br />
<section end=th11 /><br />
<br />
{{thcrap Game|th12}}<br />
<section begin=th12 /><br />
===Main Story===<br />
*{{thcrap TL include|th12/Reimu A's Scenario}}<br />
*{{thcrap TL include|th12/Reimu B's Scenario}}<br />
*{{thcrap TL include|th12/Marisa A's Scenario}}<br />
*{{thcrap TL include|th12/Marisa B's Scenario}}<br />
*{{thcrap TL include|th12/Sanae A's Scenario}}<br />
*{{thcrap TL include|th12/Sanae B's Scenario}}<br />
===Endings===<br />
*{{thcrap TL include|th12/Reimu's Endings}}<br />
*{{thcrap TL include|th12/Marisa's Endings}}<br />
*{{thcrap TL include|th12/Sanae's Endings}}<br />
===Extra Story===<br />
*{{thcrap TL include|th12/Reimu A's Extra}}<br />
*{{thcrap TL include|th12/Reimu B's Extra}}<br />
*{{thcrap TL include|th12/Marisa A's Extra}}<br />
*{{thcrap TL include|th12/Marisa B's Extra}}<br />
*{{thcrap TL include|th12/Sanae A's Extra}}<br />
*{{thcrap TL include|th12/Sanae B's Extra}}<br />
==={{thcrap TL include|th12/Spell cards}}===<br />
==={{thcrap TL include|th12/Music}}===<br />
==={{thcrap TL include|th12/Images|Images}}===<br />
===Outside the game===<br />
*{{thcrap TL include|th12/HTML Manual}}<br />
*{{thcrap TL include|th12/characters setting and extra story.txt}}<br />
*{{thcrap TL include|th12/omake.txt}}<br />
<section end=th12 /><br />
<br />
{{thcrap Game|th123}}<br />
<section begin=th123 /><br />
===Main Story===<br />
*{{thcrap TL include|th123/Sanae's Scenario}}<br />
*{{thcrap TL include|th123/Cirno's Scenario}}<br />
*{{thcrap TL include|th123/Meiling's Scenario}}<br />
===Endings===<br />
*{{thcrap TL include|th123/Sanae's Endings}}<br />
*{{thcrap TL include|th123/Cirno's Endings}}<br />
*{{thcrap TL include|th123/Meiling's Endings}}<br />
===Win quotes===<br />
*{{thcrap TL include|th123/Reimu's Win Quotes}}<br />
*{{thcrap TL include|th123/Marisa's Win Quotes}}<br />
*{{thcrap TL include|th123/Sakuya's Win Quotes}}<br />
*{{thcrap TL include|th123/Alice's Win Quotes}}<br />
*{{thcrap TL include|th123/Patchouli's Win Quotes}}<br />
*{{thcrap TL include|th123/Youmu's Win Quotes}}<br />
*{{thcrap TL include|th123/Remilia's Win Quotes}}<br />
*{{thcrap TL include|th123/Yuyuko's Win Quotes}}<br />
*{{thcrap TL include|th123/Yukari's Win Quotes}}<br />
*{{thcrap TL include|th123/Suika's Win Quotes}}<br />
*{{thcrap TL include|th123/Reisen's Win Quotes}}<br />
*{{thcrap TL include|th123/Aya's Win Quotes}}<br />
*{{thcrap TL include|th123/Komachi's Win Quotes}}<br />
*{{thcrap TL include|th123/Iku's Win Quotes}}<br />
*{{thcrap TL include|th123/Tenshi's Win Quotes}}<br />
*{{thcrap TL include|th123/Sanae's Win Quotes}}<br />
*{{thcrap TL include|th123/Cirno's Win Quotes}}<br />
*{{thcrap TL include|th123/Meiling's Win Quotes}}<br />
*{{thcrap TL include|th123/Utsuho's Win Quotes}}<br />
*{{thcrap TL include|th123/Suwako's Win Quotes}}<br />
==={{thcrap TL include|th123/Spell cards}}===<br />
===[https://www.thpatch.net/wiki/Special:Translate?taction=translate&group=themedb Music titles translation]===<br />
==={{thcrap TL include|th123/Images|Images}}===<br />
==={{thcrap TL include|th123/Images-Menu|Menu Images}}===<br />
==={{thcrap TL include|th123/Images-105|Th10.5 Duplicate Images}}===<br />
===Outside the game===<br />
*{{thcrap TL include|th123/HTML Manual}}<br />
<section end=th123 /><br />
<br />
{{thcrap Game|th125}}<br />
<section begin=th125 /><br />
==={{thcrap TL include|th125/Spoiler Stage}}===<br />
==={{thcrap TL include|th125/Spell cards}}===<br />
===Mission comments===<br />
*{{thcrap TL include|th125/Aya's mission comments}}<br />
*{{thcrap TL include|th125/Hatate's mission comments}}<br />
<br />
==={{thcrap TL include|th125/Music}}===<br />
==={{thcrap TL include|th125/Help messages}}===<br />
==={{thcrap TL include|th125/Images|Images}}===<br />
===Outside the game===<br />
*{{thcrap TL include|th125/omake.txt}}<br />
<section end=th125 /><br />
<br />
{{thcrap Game|th128}}<br />
<section begin=th128 /><br />
===Main Story===<br />
*{{thcrap TL include|th128/Route A}}<br />
*{{thcrap TL include|th128/Route B}}<br />
*{{thcrap TL include|th128/Route C}}<br />
*{{thcrap TL include|th128/Endings}}<br />
*{{thcrap TL include|th128/Extra}}<br />
==={{thcrap TL include|th128/Spell cards}}===<br />
==={{thcrap TL include|th128/Music}}===<br />
==={{thcrap TL include|th128/Images|Images}}===<br />
===Outside the game===<br />
*{{thcrap TL include|th128/omake.txt}}<br />
<section end=th128 /><br />
<br />
{{thcrap Game|th13}}<br />
<section begin=th13 /><br />
===Main Story===<br />
*{{thcrap TL include|th13/Reimu's Scenario}}<br />
*{{thcrap TL include|th13/Marisa's Scenario}}<br />
*{{thcrap TL include|th13/Sanae's Scenario}}<br />
*{{thcrap TL include|th13/Youmu's Scenario}}<br />
===Endings===<br />
*{{thcrap TL include|th13/Reimu's Endings}}<br />
*{{thcrap TL include|th13/Marisa's Endings}}<br />
*{{thcrap TL include|th13/Sanae's Endings}}<br />
*{{thcrap TL include|th13/Youmu's Endings}}<br />
===Extra Story===<br />
*{{thcrap TL include|th13/Reimu's Extra}}<br />
*{{thcrap TL include|th13/Marisa's Extra}}<br />
*{{thcrap TL include|th13/Sanae's Extra}}<br />
*{{thcrap TL include|th13/Youmu's Extra}}<br />
==={{thcrap TL include|th13/Spell cards}}===<br />
==={{thcrap TL include|th13/Music}}===<br />
==={{thcrap TL include|th13/Images|Images}}===<br />
===Outside the game===<br />
*{{thcrap TL include|th13/HTML Manual}}<br />
*{{thcrap TL include|th13/characters setting and extra story.txt}}<br />
*{{thcrap TL include|th13/omake.txt}}<br />
<section end=th13 /><br />
<br />
{{thcrap Game|th135}}<br />
<section begin=th135 /><br />
==={{thcrap TL include|th135/Summary}}===<br />
===Main Story===<br />
*{{thcrap TL include|th135/Reimu's Scenario}}<br />
*{{thcrap TL include|th135/Marisa's Scenario}}<br />
*{{thcrap TL include|th135/Byakuren's Scenario}}<br />
*{{thcrap TL include|th135/Miko's Scenario}}<br />
*{{thcrap TL include|th135/Ichirin's Scenario}}<br />
*{{thcrap TL include|th135/Futo's Scenario}}<br />
*{{thcrap TL include|th135/Nitori's Scenario}}<br />
*{{thcrap TL include|th135/Koishi's Scenario}}<br />
*{{thcrap TL include|th135/Mamizou's Scenario}}<br />
*{{thcrap TL include|th135/Kokoro's Scenario}}<br />
===Main Story - Spell cards===<br />
*{{thcrap TL include|th135/Reimu's Scenario - Spell cards}}<br />
*{{thcrap TL include|th135/Marisa's Scenario - Spell cards}}<br />
*{{thcrap TL include|th135/Byakuren's Scenario - Spell cards}}<br />
*{{thcrap TL include|th135/Miko's Scenario - Spell cards}}<br />
*{{thcrap TL include|th135/Ichirin's Scenario - Spell cards}}<br />
*{{thcrap TL include|th135/Futo's Scenario - Spell cards}}<br />
*{{thcrap TL include|th135/Nitori's Scenario - Spell cards}}<br />
*{{thcrap TL include|th135/Koishi's Scenario - Spell cards}}<br />
*{{thcrap TL include|th135/Mamizou's Scenario - Spell cards}}<br />
*{{thcrap TL include|th135/Kokoro's Scenario - Spell cards}}<br />
===Endings===<br />
*{{thcrap TL include|th135/Reimu's Endings}}<br />
*{{thcrap TL include|th135/Marisa's Endings}}<br />
*{{thcrap TL include|th135/Byakuren's Endings}}<br />
*{{thcrap TL include|th135/Miko's Endings}}<br />
*{{thcrap TL include|th135/Ichirin's Endings}}<br />
*{{thcrap TL include|th135/Futo's Endings}}<br />
*{{thcrap TL include|th135/Nitori's Endings}}<br />
*{{thcrap TL include|th135/Koishi's Endings}}<br />
*{{thcrap TL include|th135/Mamizou's Endings}}<br />
*{{thcrap TL include|th135/Kokoro's Endings}}<br />
===Win quotes===<br />
*{{thcrap TL include|th135/Reimu's Win Quotes}}<br />
*{{thcrap TL include|th135/Marisa's Win Quotes}}<br />
*{{thcrap TL include|th135/Byakuren's Win Quotes}}<br />
*{{thcrap TL include|th135/Miko's Win Quotes}}<br />
*{{thcrap TL include|th135/Ichirin's Win Quotes}}<br />
*{{thcrap TL include|th135/Futo's Win Quotes}}<br />
*{{thcrap TL include|th135/Nitori's Win Quotes}}<br />
*{{thcrap TL include|th135/Koishi's Win Quotes}}<br />
*{{thcrap TL include|th135/Mamizou's Win Quotes}}<br />
*{{thcrap TL include|th135/Kokoro's Win Quotes}}<br />
==={{thcrap TL include|th135/Act_and_Nut_strings}}===<br />
==={{thcrap TL include|th135/Spell cards}}===<br />
==={{thcrap TL include|th135/Music}}===<br />
===Images===<br />
*{{thcrap TL include|th135/Images-Main|Images}}<br />
*{{thcrap TL include|th135/Images-Menus|Images - Menus}}<br />
*{{thcrap TL include|th135/Images-Newspaper1|Images - Newspaper 1}}<br />
*{{thcrap TL include|th135/Images-Newspaper2|Images - Newspaper 2}}<br />
===Outside the game===<br />
*{{thcrap TL include|th135/omake.txt}}<br />
<section end=th135 /><br />
<br />
{{thcrap Game|th14}}<br />
<section begin=th14 /><br />
===Main Story===<br />
*{{thcrap TL include|th14/Reimu A's Scenario}}<br />
*{{thcrap TL include|th14/Reimu B's Scenario}}<br />
*{{thcrap TL include|th14/Marisa A's Scenario}}<br />
*{{thcrap TL include|th14/Marisa B's Scenario}}<br />
*{{thcrap TL include|th14/Sakuya A's Scenario}}<br />
*{{thcrap TL include|th14/Sakuya B's Scenario}}<br />
===Endings===<br />
*{{thcrap TL include|th14/Reimu's Endings}}<br />
*{{thcrap TL include|th14/Marisa's Endings}}<br />
*{{thcrap TL include|th14/Sakuya's Endings}}<br />
===Extra Story===<br />
*{{thcrap TL include|th14/Reimu A's Extra}}<br />
*{{thcrap TL include|th14/Reimu B's Extra}}<br />
*{{thcrap TL include|th14/Marisa A's Extra}}<br />
*{{thcrap TL include|th14/Marisa B's Extra}}<br />
*{{thcrap TL include|th14/Sakuya A's Extra}}<br />
*{{thcrap TL include|th14/Sakuya B's Extra}}<br />
==={{thcrap TL include|th14/Spell cards}}===<br />
==={{thcrap TL include|th14/Music}}===<br />
==={{thcrap TL include|th14/Images|Images}}===<br />
===Outside the game===<br />
*{{thcrap TL include|th14/HTML Manual}}<br />
*{{thcrap TL include|th14/omake.txt}}<br />
<section end=th14 /><br />
<br />
{{thcrap Game|th143}}<br />
<section begin=th143 /><br />
==={{thcrap TL include|th143/Dialog}}===<br />
==={{thcrap TL include|th143/Spell cards}}===<br />
==={{thcrap TL include|th143/Music}}===<br />
==={{thcrap TL include|th143/Day descriptions}}===<br />
==={{thcrap TL include|th143/Trophies}}===<br />
==={{thcrap TL include|th143/Hints}}===<br />
==={{thcrap TL include|th143/Images|Images}}===<br />
===Outside the game===<br />
*{{thcrap TL include|th143/omake.txt}}<br />
<section end=th143 /><br />
<br />
{{thcrap Game|th145}}<br />
<section begin=th145 /><br />
==={{thcrap TL include|th145/Summary}}===<br />
===Main Story===<br />
*{{thcrap TL include|th145/Reimu's Intro}}<br />
*{{thcrap TL include|th145/Marisa's Scenario}}<br />
*{{thcrap TL include|th145/Kasen's Scenario}}<br />
*{{thcrap TL include|th145/Ichirin's Scenario}}<br />
*{{thcrap TL include|th145/Byakuren's Scenario}}<br />
*{{thcrap TL include|th145/Futo's Scenario}}<br />
*{{thcrap TL include|th145/Miko's Scenario}}<br />
*{{thcrap TL include|th145/Mamizou's Scenario}}<br />
*{{thcrap TL include|th145/Mokou's Scenario}}<br />
*{{thcrap TL include|th145/Shinmyoumaru's Scenario}}<br />
*{{thcrap TL include|th145/Nitori's Scenario}}<br />
*{{thcrap TL include|th145/Koishi's Scenario}}<br />
*{{thcrap TL include|th145/Kokoro's Scenario}}<br />
*{{thcrap TL include|th145/Sumireko's Scenario}}<br />
*{{thcrap TL include|th145/Reimu's Scenario}}<br />
===Main Story - Spell cards===<br />
*{{thcrap TL include|th145/Reimu's Intro - Spell cards}}<br />
*{{thcrap TL include|th145/Marisa's Scenario - Spell cards}}<br />
*{{thcrap TL include|th145/Kasen's Scenario - Spell cards}}<br />
*{{thcrap TL include|th145/Ichirin's Scenario - Spell cards}}<br />
*{{thcrap TL include|th145/Byakuren's Scenario - Spell cards}}<br />
*{{thcrap TL include|th145/Futo's Scenario - Spell cards}}<br />
*{{thcrap TL include|th145/Miko's Scenario - Spell cards}}<br />
*{{thcrap TL include|th145/Mamizou's Scenario - Spell cards}}<br />
*{{thcrap TL include|th145/Mokou's Scenario - Spell cards}}<br />
*{{thcrap TL include|th145/Shinmyoumaru's Scenario - Spell cards}}<br />
*{{thcrap TL include|th145/Nitori's Scenario - Spell cards}}<br />
*{{thcrap TL include|th145/Koishi's Scenario - Spell cards}}<br />
*{{thcrap TL include|th145/Kokoro's Scenario - Spell cards}}<br />
*{{thcrap TL include|th145/Sumireko's Scenario - Spell cards}}<br />
*{{thcrap TL include|th145/Reimu's Scenario - Spell cards}}<br />
===Endings===<br />
*{{thcrap TL include|th145/Marisa's Endings}}<br />
*{{thcrap TL include|th145/Kasen's Endings}}<br />
*{{thcrap TL include|th145/Ichirin's Endings}}<br />
*{{thcrap TL include|th145/Byakuren's Endings}}<br />
*{{thcrap TL include|th145/Futo's Endings}}<br />
*{{thcrap TL include|th145/Miko's Endings}}<br />
*{{thcrap TL include|th145/Mamizou's Endings}}<br />
*{{thcrap TL include|th145/Mokou's Endings}}<br />
*{{thcrap TL include|th145/Shinmyoumaru's Endings}}<br />
*{{thcrap TL include|th145/Nitori's Endings}}<br />
*{{thcrap TL include|th145/Koishi's Endings}}<br />
*{{thcrap TL include|th145/Kokoro's Endings}}<br />
*{{thcrap TL include|th145/Sumireko's Endings}}<br />
*{{thcrap TL include|th145/Reimu's Endings}}<br />
===Win quotes===<br />
*{{thcrap TL include|th145/Reimu's Win Quotes}}<br />
*{{thcrap TL include|th145/Marisa's Win Quotes}}<br />
*{{thcrap TL include|th145/Kasen's Win Quotes}}<br />
*{{thcrap TL include|th145/Ichirin's Win Quotes}}<br />
*{{thcrap TL include|th145/Byakuren's Win Quotes}}<br />
*{{thcrap TL include|th145/Futo's Win Quotes}}<br />
*{{thcrap TL include|th145/Miko's Win Quotes}}<br />
*{{thcrap TL include|th145/Mamizou's Win Quotes}}<br />
*{{thcrap TL include|th145/Mokou's Win Quotes}}<br />
*{{thcrap TL include|th145/Shinmyoumaru's Win Quotes}}<br />
*{{thcrap TL include|th145/Nitori's Win Quotes}}<br />
*{{thcrap TL include|th145/Koishi's Win Quotes}}<br />
*{{thcrap TL include|th145/Kokoro's Win Quotes}}<br />
*{{thcrap TL include|th145/Sumireko's Win Quotes}}<br />
==={{thcrap TL include|th145/Act_and_Nut_strings}}===<br />
==={{thcrap TL include|th145/Spell cards}}===<br />
===[https://www.thpatch.net/wiki/Special:Translate?taction=translate&group=themedb Music titles translation]===<br />
==={{thcrap TL include|th145/Images|Images}}===<br />
===Outside the game===<br />
*{{thcrap TL include|th145/omake.txt}}<br />
<section end=th145 /><br />
<br />
{{thcrap Game|th15}}<br />
<section begin=th15 /><br />
===Main Story===<br />
*{{thcrap TL include|th15/Reimu's Scenario}}<br />
*{{thcrap TL include|th15/Marisa's Scenario}}<br />
*{{thcrap TL include|th15/Sanae's Scenario}}<br />
*{{thcrap TL include|th15/Reisen's Scenario}}<br />
===Endings===<br />
*{{thcrap TL include|th15/Reimu's Endings}}<br />
*{{thcrap TL include|th15/Marisa's Endings}}<br />
*{{thcrap TL include|th15/Sanae's Endings}}<br />
*{{thcrap TL include|th15/Reisen's Endings}}<br />
===Extra Story===<br />
*{{thcrap TL include|th15/Reimu's Extra}}<br />
*{{thcrap TL include|th15/Marisa's Extra}}<br />
*{{thcrap TL include|th15/Sanae's Extra}}<br />
*{{thcrap TL include|th15/Reisen's Extra}}<br />
==={{thcrap TL include|th15/Spell cards}}===<br />
==={{thcrap TL include|th15/Music}}===<br />
==={{thcrap TL include|th15/Images|Images}}===<br />
===Outside the game===<br />
*{{thcrap TL include|th15/omake.txt}}<br />
<section end=th15 /><br />
<br />
{{thcrap Game|th155}}<br />
<section begin=th155 /><br />
===Main Story===<br />
*{{thcrap TL include|th155/Reimu's Scenario}}<br />
*{{thcrap TL include|th155/Marisa's Scenario}}<br />
*{{thcrap TL include|th155/Nitori's Scenario}}<br />
*{{thcrap TL include|th155/Mamizou's Scenario}}<br />
*{{thcrap TL include|th155/Miko's Scenario}}<br />
*{{thcrap TL include|th155/Futo's Scenario}}<br />
*{{thcrap TL include|th155/Reisen's Scenario}}<br />
*{{thcrap TL include|th155/Sumireko's Scenario}}<br />
*{{thcrap TL include|th155/Tenshi's Scenario}}<br />
*{{thcrap TL include|th155/Yukari's Scenario}}<br />
*{{thcrap TL include|th155/Joon's Scenario}}<br />
===Endings===<br />
*{{thcrap TL include|th155/Marisa's Endings}}<br />
*{{thcrap TL include|th155/Nitori's Endings}}<br />
*{{thcrap TL include|th155/Mamizou's Endings}}<br />
*{{thcrap TL include|th155/Miko's Endings}}<br />
*{{thcrap TL include|th155/Futo's Endings}}<br />
*{{thcrap TL include|th155/Reisen's Endings}}<br />
*{{thcrap TL include|th155/Sumireko's Endings}}<br />
*{{thcrap TL include|th155/Tenshi's Endings}}<br />
*{{thcrap TL include|th155/Yukari's Endings}}<br />
*{{thcrap TL include|th155/Joon's Endings}}<br />
===Win quotes===<br />
*{{thcrap TL include|th155/Reimu's Win Quotes}}<br />
*{{thcrap TL include|th155/Marisa's Win Quotes}}<br />
*{{thcrap TL include|th155/Kasen's Win Quotes}}<br />
*{{thcrap TL include|th155/Ichirin's Win Quotes}}<br />
*{{thcrap TL include|th155/Byakuren's Win Quotes}}<br />
*{{thcrap TL include|th155/Futo's Win Quotes}}<br />
*{{thcrap TL include|th155/Miko's Win Quotes}}<br />
*{{thcrap TL include|th155/Mamizou's Win Quotes}}<br />
*{{thcrap TL include|th155/Mokou's Win Quotes}}<br />
*{{thcrap TL include|th155/Shinmyoumaru's Win Quotes}}<br />
*{{thcrap TL include|th155/Nitori's Win Quotes}}<br />
*{{thcrap TL include|th155/Koishi's Win Quotes}}<br />
*{{thcrap TL include|th155/Kokoro's Win Quotes}}<br />
*{{thcrap TL include|th155/Sumireko's Win Quotes}}<br />
*{{thcrap TL include|th155/Reisen's Win Quotes}}<br />
*{{thcrap TL include|th155/Doremy's Win Quotes}}<br />
*{{thcrap TL include|th155/Yukari's Win Quotes}}<br />
*{{thcrap TL include|th155/Tenshi's Win Quotes}}<br />
*{{thcrap TL include|th155/Joon's Win Quotes}}<br />
==={{thcrap TL include|th155/Spell cards}}===<br />
==={{thcrap TL include|th155/Nut and Csv strings|Nut and CSV strings}}===<br />
==={{thcrap TL include|th155/Music}}===<br />
==={{thcrap TL include|th155/Images|Images}}===<br />
==={{thcrap TL include|th155/Images-Characters|Character Name Images}}===<br />
===Outside the game===<br />
*{{thcrap TL include|th155/HTML Manual}}<br />
*{{thcrap TL include|th155/omake.txt}}<br />
<section end=th155 /><br />
<br />
{{thcrap Game|th16}}<br />
<section begin=th16 /><br />
===Main Story===<br />
*{{thcrap TL include|th16/Reimu's Scenario}}<br />
*{{thcrap TL include|th16/Cirno's Scenario}}<br />
*{{thcrap TL include|th16/Aya's Scenario}}<br />
*{{thcrap TL include|th16/Marisa's Scenario}}<br />
<br />
===Endings===<br />
*{{thcrap TL include|th16/Reimu's Endings}}<br />
*{{thcrap TL include|th16/Cirno's Endings}}<br />
*{{thcrap TL include|th16/Aya's Endings}}<br />
*{{thcrap TL include|th16/Marisa's Endings}}<br />
<br />
===Extra Story===<br />
*{{thcrap TL include|th16/Reimu's Extra}}<br />
*{{thcrap TL include|th16/Cirno's Extra}}<br />
*{{thcrap TL include|th16/Aya's Extra}}<br />
*{{thcrap TL include|th16/Marisa's Extra}}<br />
<br />
==={{thcrap TL include|th16/Spell cards}}===<br />
==={{thcrap TL include|th16/Music}}===<br />
==={{thcrap TL include|th16/Images|Images}}===<br />
===Outside the game===<br />
*{{thcrap TL include|th16/omake.txt}}<br />
<section end=th16 /><br />
<br />
{{thcrap Game|th165}}<br />
<section begin=th165 /><br />
<br />
==={{thcrap TL include|th165/Dialog}}===<br />
==={{thcrap TL include|th165/Spell cards}}===<br />
==={{thcrap TL include|th165/Dream comments}}===<br />
==={{thcrap TL include|th165/Trophies}}===<br />
==={{thcrap TL include|th165/Music}}===<br />
==={{thcrap TL include|th165/Images|Images}}===<br />
===Outside the game===<br />
*{{thcrap TL include|th165/omake.txt}}<br />
<section end=th165 /><br />
<br />
{{thcrap Game|th17}}<br />
<section begin=th17 /><br />
===Main Story===<br />
*{{thcrap TL include|th17/Reimu A's Scenario}}<br />
*{{thcrap TL include|th17/Reimu B's Scenario}}<br />
*{{thcrap TL include|th17/Reimu C's Scenario}}<br />
<br />
*{{thcrap TL include|th17/Marisa A's Scenario}}<br />
*{{thcrap TL include|th17/Marisa B's Scenario}}<br />
*{{thcrap TL include|th17/Marisa C's Scenario}}<br />
<br />
*{{thcrap TL include|th17/Youmu A's Scenario}}<br />
*{{thcrap TL include|th17/Youmu B's Scenario}}<br />
*{{thcrap TL include|th17/Youmu C's Scenario}}<br />
<br />
===Endings===<br />
*{{thcrap TL include|th17/Reimu's Endings}}<br />
*{{thcrap TL include|th17/Marisa's Endings}}<br />
*{{thcrap TL include|th17/Youmu's Endings}}<br />
<br />
===Extra Story===<br />
*{{thcrap TL include|th17/Reimu A's Extra}}<br />
*{{thcrap TL include|th17/Reimu B's Extra}}<br />
*{{thcrap TL include|th17/Reimu C's Extra}}<br />
<br />
*{{thcrap TL include|th17/Marisa A's Extra}}<br />
*{{thcrap TL include|th17/Marisa B's Extra}}<br />
*{{thcrap TL include|th17/Marisa C's Extra}}<br />
<br />
*{{thcrap TL include|th17/Youmu A's Extra}}<br />
*{{thcrap TL include|th17/Youmu B's Extra}}<br />
*{{thcrap TL include|th17/Youmu C's Extra}}<br />
<br />
==={{thcrap TL include|th17/Spell cards}}===<br />
==={{thcrap TL include|th17/Music}}===<br />
==={{thcrap TL include|th17/Trophies}}===<br />
{{thcrap TL include|th17/Trophies (Trial)}}<br />
==={{thcrap TL include|th17/Images|Images}}===<br />
===Outside the game===<br />
*{{thcrap TL include|th17/omake.txt}}<br />
<section end=th17 /><br />
<br />
{{thcrap Game|th175}}<br />
<section begin=th175 /><br />
===Main Scenario===<br />
*{{thcrap TL include|th175/Reimu's Scenario}}<br />
*{{thcrap TL include|th175/Marisa's Scenario}}<br />
*{{thcrap TL include|th175/Kanako's Scenario}}<br />
*{{thcrap TL include|th175/Minamitsu's Scenario}}<br />
*{{thcrap TL include|th175/Joon and Shion's Scenario}}<br />
*{{thcrap TL include|th175/Flandre's Scenario}}<br />
*{{thcrap TL include|th175/Yuuma's Scenario}}<br />
<br />
===Endings===<br />
*{{thcrap TL include|th175/Reimu's Endings}}<br />
*{{thcrap TL include|th175/Marisa's Endings}}<br />
*{{thcrap TL include|th175/Kanako's Endings}}<br />
*{{thcrap TL include|th175/Minamitsu's Endings}}<br />
*{{thcrap TL include|th175/Joon and Shion's Endings}}<br />
*{{thcrap TL include|th175/Flandre's Endings}}<br />
*{{thcrap TL include|th175/Yuuma's Endings}}<br />
<br />
==={{thcrap TL include|th175/Spell cards}}===<br />
==={{thcrap TL include|th175/Trophies}}===<br />
==={{thcrap TL include|th175/Nut strings|Nut strings}}===<br />
==={{thcrap TL include|th175/Images|Images}}===<br />
===Outside the game===<br />
*{{thcrap TL include|th175/omake.txt}}<br />
<section end=th175 /><br />
<br />
{{thcrap Game|th18}}<br />
<section begin=th18 /><br />
===Main Story===<br />
*{{thcrap TL include|th18/Reimu's Scenario}}<br />
*{{thcrap TL include|th18/Marisa's Scenario}}<br />
*{{thcrap TL include|th18/Sakuya's Scenario}}<br />
*{{thcrap TL include|th18/Sanae's Scenario}}<br />
===Endings===<br />
*{{thcrap TL include|th18/Reimu's Endings}}<br />
*{{thcrap TL include|th18/Marisa's Endings}}<br />
*{{thcrap TL include|th18/Sakuya's Endings}}<br />
*{{thcrap TL include|th18/Sanae's Endings}}<br />
===Extra Story===<br />
*{{thcrap TL include|th18/Reimu's Extra}}<br />
*{{thcrap TL include|th18/Marisa's Extra}}<br />
*{{thcrap TL include|th18/Sakuya's Extra}}<br />
*{{thcrap TL include|th18/Sanae's Extra}}<br />
==={{thcrap TL include|th18/Spell cards}}===<br />
==={{thcrap TL include|th18/Music}}===<br />
==={{thcrap TL include|th18/Trophies}}===<br />
{{thcrap TL include|th18/Trophies (Trial)}}<br />
==={{thcrap TL include|th18/Abilities}}===<br />
{{thcrap TL include|th18/Abilities (Trial)}}<br />
==={{thcrap TL include|th18/Images|Images}}===<br />
===Outside the game===<br />
*{{thcrap TL include|th18/omake.txt}}<br />
<section end=th18 /><br />
<br />
{{thcrap Game|th185}}<br />
<section begin=th185 /><br />
==={{thcrap TL include|th185/Dialog}}===<br />
==={{thcrap TL include|th185/Spell cards}}===<br />
==={{thcrap TL include|th185/Music}}===<br />
==={{thcrap TL include|th185/Trophies}}===<br />
==={{thcrap TL include|th185/Abilities}}===<br />
==={{thcrap TL include|th185/Market comments}}===<br />
<br />
==={{thcrap TL include|th185/Images|Images}}===<br />
===Outside the game===<br />
*{{thcrap TL include|th185/omake.txt}}<br />
<section end=th185 /><br />
<br />
{{thcrap Game|th19}}<br />
<section begin=th19 /><br />
===Main Story===<br />
*{{thcrap TL include|th19/Reimu's Scenario}}<br />
*{{thcrap TL include|th19/Marisa's Scenario}}<br />
*{{thcrap TL include|th19/Sanae's Scenario}}<br />
*{{thcrap TL include|th19/Ran's Scenario}}<br />
*{{thcrap TL include|th19/Aun's Scenario}}<br />
*{{thcrap TL include|th19/Nazrin's Scenario}}<br />
*{{thcrap TL include|th19/Seiran's Scenario}}<br />
*{{thcrap TL include|th19/Rin's Scenario}}<br />
*{{thcrap TL include|th19/Tsukasa's Scenario}}<br />
*{{thcrap TL include|th19/Mamizou's Scenario}}<br />
*{{thcrap TL include|th19/Yachie's Scenario}}<br />
*{{thcrap TL include|th19/Saki's Scenario}}<br />
*{{thcrap TL include|th19/Yuuma's Scenario}}<br />
*{{thcrap TL include|th19/Suika's Scenario}}<br />
*{{thcrap TL include|th19/Biten's Scenario}}<br />
*{{thcrap TL include|th19/Enoko's Scenario}}<br />
*{{thcrap TL include|th19/Chiyari's Scenario}}<br />
*{{thcrap TL include|th19/Hisami's Scenario}}<br />
*{{thcrap TL include|th19/Zanmu's Scenario}}<br />
<br />
===VS Match Scripts===<br />
*{{thcrap TL include|th19/Reimu's Script}}<br />
*{{thcrap TL include|th19/Marisa's Script}}<br />
*{{thcrap TL include|th19/Sanae's Script}}<br />
*{{thcrap TL include|th19/Ran's Script}}<br />
*{{thcrap TL include|th19/Aun's Script}}<br />
*{{thcrap TL include|th19/Nazrin's Script}}<br />
*{{thcrap TL include|th19/Seiran's Script}}<br />
*{{thcrap TL include|th19/Rin's Script}}<br />
*{{thcrap TL include|th19/Tsukasa's Script}}<br />
*{{thcrap TL include|th19/Mamizou's Script}}<br />
*{{thcrap TL include|th19/Yachie's Script}}<br />
*{{thcrap TL include|th19/Saki's Script}}<br />
*{{thcrap TL include|th19/Yuuma's Script}}<br />
*{{thcrap TL include|th19/Suika's Script}}<br />
*{{thcrap TL include|th19/Biten's Script}}<br />
*{{thcrap TL include|th19/Enoko's Script}}<br />
*{{thcrap TL include|th19/Chiyari's Script}}<br />
*{{thcrap TL include|th19/Hisami's Script}}<br />
*{{thcrap TL include|th19/Zanmu's Script}}<br />
<br />
===Endings===<br />
*{{thcrap TL include|th19/Reimu's Ending}}<br />
*{{thcrap TL include|th19/Marisa's Ending}}<br />
*{{thcrap TL include|th19/Sanae's Ending}}<br />
*{{thcrap TL include|th19/Ran's Ending}}<br />
*{{thcrap TL include|th19/Aun's Ending}}<br />
*{{thcrap TL include|th19/Nazrin's Ending}}<br />
*{{thcrap TL include|th19/Seiran's Ending}}<br />
*{{thcrap TL include|th19/Rin's Ending}}<br />
*{{thcrap TL include|th19/Tsukasa's Ending}}<br />
*{{thcrap TL include|th19/Mamizou's Ending}}<br />
*{{thcrap TL include|th19/Yachie's Ending}}<br />
*{{thcrap TL include|th19/Saki's Ending}}<br />
*{{thcrap TL include|th19/Yuuma's Ending}}<br />
*{{thcrap TL include|th19/Suika's Ending}}<br />
*{{thcrap TL include|th19/Biten's Ending}}<br />
*{{thcrap TL include|th19/Enoko's Ending}}<br />
*{{thcrap TL include|th19/Chiyari's Ending}}<br />
*{{thcrap TL include|th19/Hisami's Ending}}<br />
*{{thcrap TL include|th19/Zanmu's Ending}}<br />
<br />
===Main Story (Trial)===<br />
*{{thcrap TL include|th19/Reimu's Scenario (Trial)}}<br />
*{{thcrap TL include|th19/Marisa's Scenario (Trial)}}<br />
*{{thcrap TL include|th19/Aun's Scenario (Trial)}}<br />
*{{thcrap TL include|th19/Nazrin's Scenario (Trial)}}<br />
*{{thcrap TL include|th19/Seiran's Scenario (Trial)}}<br />
<br />
===VS Match Scripts (Trial)===<br />
*{{thcrap TL include|th19/Reimu's Script (Trial)}}<br />
*{{thcrap TL include|th19/Marisa's Script (Trial)}}<br />
*{{thcrap TL include|th19/Aun's Script (Trial)}}<br />
*{{thcrap TL include|th19/Nazrin's Script (Trial)}}<br />
*{{thcrap TL include|th19/Seiran's Script (Trial)}}<br />
<br />
==={{thcrap TL include|th19/Spell cards}}===<br />
==={{thcrap TL include|th19/Music}}===<br />
==={{thcrap TL include|th19/Trophies}}===<br />
==={{thcrap TL include|th19/Abilities}}===<br />
{{thcrap TL include|th19/Abilities (Trial)}}<br />
==={{thcrap TL include|th19/Title screen messages}}===<br />
==={{thcrap TL include|th19/Images|Images}}===<br />
===Outside the game===<br />
*{{thcrap TL include|th19/omake.txt}}<br />
<section end=th19 /><br />
<br />
{{thcrap Game|nsml}}<br />
<section begin=nsml /><br />
==={{thcrap TL include|nsml/Images|Images}}===<br />
<section end=nsml /><br />
<br />
{{thcrap Game|megamari}}<br />
<section begin=megamari /><br />
==={{thcrap TL include|megamari/Images|Images}}===<br />
<section end=megamari /><br />
<br />
{{thcrap Game|marilega}}<br />
<section begin=marilega /><br />
==={{thcrap TL include|marilega/Images|Images}}===<br />
==={{thcrap TL include|marilega/Nut and Csv strings|Nut and CSV strings}}===<br />
<section end=marilega /></div>
Egor
https://www.thpatch.net/w/index.php?title=User:DalekCraft&diff=2512421
User:DalekCraft
2023-09-11T04:23:27Z
<p>Egor: /* Things what I want to fix but can not due to lack of wiki permissions */ did the page deletions</p>
<hr />
<div>{{#babel:en-N|es-2}}<br />
<br />
I am mainly here not to translate, but to tidy up stuff and fix broken things because I am a perfectionist.<br />
<br />
I have taken Spanish classes before, but I rarely use Spanish now, so it's a bit rusty.<br />
<br />
== Things what I plan to do ==<br />
<br />
* I am going to make a root category.<br />
* <s>I think updating the marked translation revisions of all pages caused the commented lines at the tops of all Th06, Th07, Th08, and Th09 ending pages to have their unit names changed, <s>so I will have to either change the names back or manually re-add the translations for each language by checking the page histories.</s> I am changing the unit names to "1", marking the pages for translation, and copying over the original unit translations from the "-1" units. I have thus far finished Th07, Th08, and Th09.</s> Finished all of them.<br />
* Add docs to all templates (after studying how each one works, obviously).<br />
<br />
== Things what I do not know how to fix ==<br />
<br />
* Figure out why [[Th16/Images]] is considered a broken page in [[Special:PageTranslation]]. <s>I am assuming that it is some sort of syntax error.</s> Copying the source onto this page gives the option to mark it for translation, meaning the source is not the issue. <s>I wonder whether it would be fixed if it was removed from translation and then added again, but I would not do that before getting the okay from some staff member.</s> Forget that idea; that would probably delete all of the pages in the "Translations" namespace for Th16/Images. Though, I could copy all of the unit translations to somewhere before removing it from translation, and add them back manually afterward.<br />
* Several pages, like [[Th105/Images/en-literal]], [[Th105/Images/sr-literal]], [[Th145/Images/en-literal]], and [[Th145/Images/sr-literal]], are listed in [[Special:UncategorizedPages]], even though they ''do'' have categories.<br />
* Where the hell are those remaining usages of the nonexistent [[Template:Intlang]]? The wiki says there are 48 usages, but not all of them have the template on the page itself; they simply inherit it from some other page. I think.<br />
<br />
== Things what I want to fix but can not due to lack of wiki permissions ==<br />
<br />
* <s>[[MediaWiki:Common.css]] reports using the nonexistent template "Thcrap image" because the "i" is not capitalized, even though the usage is inside a comment. This bothers me.</s> Fixed by making a redirect.<br />
*: fixed --[[User:Egor|Egor]] ([[User talk:Egor|talk]]) 02:41, 11 September 2023 (UTC)<br />
* [[Template:Thcrap Format]] is missing and has a bit of usage (specifically on [[Patch:Base TSA/Formats]]), but I do not know what the source of the template was when it still existed. However, [[Patch:Base TSA/Formats]] seems to be unused and pretty outdated, so maybe the page should just be deleted.<br />
*: The template never existed, and the hook has been [https://github.com/thpatch/TouhouPatchCenter/commit/4acf2e8397a6f28ef7f64a6a30f27e8ec8ee6798 removed in 2013]. All the Base TSA and binary hack pages are actually extremely outdated, and we only keep them around for historical purposes. I created a very basic template for this page, so that it displays properly. --[[User:Egor|Egor]] ([[User talk:Egor|talk]]) 02:41, 11 September 2023 (UTC)<br />
* I marked a bunch of pages with [[Template:Delete]] (after remaking said template) because I can not delete them. They are listed in [[:Category:Candidates for deletion]].<br />
*: done --[[User:Egor|Egor]] ([[User talk:Egor|talk]]) 04:23, 11 September 2023 (UTC)<br />
* <s>Can't add some TH games to [[:Category:Games]] because some pages are locked. I would add it to [[Template:Thcrap Game info]] instead, but some Portal page uses that template too, so that would put that portal into the Games category.</s> Did this on the same day I started this list.<br />
*: fixed --[[User:Egor|Egor]] ([[User talk:Egor|talk]]) 02:41, 11 September 2023 (UTC)<br />
* <s>The "Target" in [[Template:Thcrap Target]] is not capitalized in a few pages, which makes them non-functional, and I can not fix those pages because they are locked. (For ease of access, this makes the link Template:Thcrap target.)</s> Screw it; I made a redirect for it.<br />
*: fixed --[[User:Egor|Egor]] ([[User talk:Egor|talk]]) 02:41, 11 September 2023 (UTC)<br />
* [[Touhou_Patch_Central:Persönlicher_Aufruf]] uses [[Template:Documentation/start box2]] and [[Template:Documentation/end box2]], which both do not exist. However, that page has been locked, so I can not remove them.<br />
** And no, I can not make those pages into redirects for "start box" and "end box", because neither of ''those'' exist, either.<br />
**: fixed by grabbing the necessary parts from German touhouwiki --[[User:Egor|Egor]] ([[User talk:Egor|talk]]) 02:41, 11 September 2023 (UTC)<br />
* All of the "Binary hacks" subpages for pages in [[:Category:Games]] lack the SubpageCategory template, but I can not add it to them because they are locked.<br />
*: fixed --[[User:Egor|Egor]] ([[User talk:Egor|talk]]) 02:41, 11 September 2023 (UTC)<br />
* [[Development notes/The month before Reitaisai 11]] also suffers from the above issue.<br />
*: fixed --[[User:Egor|Egor]] ([[User talk:Egor|talk]]) 02:41, 11 September 2023 (UTC)<br />
<hr /><br />
* [[Template:Navbox]] does not work because we do not have the necessary Modules for it.<br />
* Ensure that all of the wiki's software on [[Special:Version]] are up-to-date. I can technically check these with my current permissions, but I can't do anything about any outdated software.</div>
Egor
https://www.thpatch.net/w/index.php?title=User:%E0%B8%8A%E0%B8%B4%E0%B8%A5%E0%B9%82%E0%B8%99%E0%B9%88&diff=2512420
User:ชิลโน่
2023-09-11T04:07:39Z
<p>Egor: redirect to contribs</p>
<hr />
<div>#REDIRECT [[Special:Contributions/Suntanned Cirno]]</div>
Egor
https://www.thpatch.net/w/index.php?title=User:Egor&diff=2512411
User:Egor
2023-09-11T03:32:39Z
<p>Egor: remove extraneous } from template purger</p>
<hr />
<div>{{#css:<br />
.mw-babel-box-N{transform:rotate(180deg);text-decoration:line-through}<br />
}}<br />
{{#babel: ru-N | uk-4 | en-5 | ja-1}}<br />
Subpages:<br />
* [[/end6]]<br />
* [[/How to add a language]]<br />
* [[/How to add a patch server]]<br />
* [[/How to move a page]]<br />
* [[/Wiki namespaces]]<br />
* [[/Steam]]<br />
* [[/Glossary]]<br />
* [[/Message Groups]]<br />
<br />
Tools:<br />
* <span class="plainlinks">[{{fullurl:Special:LanguageStats|language=en&action=purge}} Purge Special:LanguageStats]</span> (use responsibly)<br />
* Evaltitle bookmarklet:<br />
<pre<includeonly></includeonly> style="overflow:auto; white-space:pre; width:auto;"><nowiki>javascript:(function(){new mw.Api().postWithToken('csrf',{action:'evaltitle',title:mw.config.get('wgPageName')}).always(console.log).done(()=>alert('ok!')).fail((...a)=>alert(JSON.stringify(a)));})()</nowiki></pre><br />
* Show ruby markup bookmarklet:<br />
<pre<includeonly></includeonly> style="overflow:auto; white-space:pre; width:auto;"><nowiki>javascript:(function(){const s=document.createElement('style');s.textContent='rb,rt{border:solid black 1px}';document.head.appendChild(s);})()</nowiki></pre><br />
* Purge template transclusions:<br />
<pre<includeonly></includeonly> style="overflow:auto; white-space:pre; width:auto;"><nowiki> new mw.Api().post({action:'purge',generator:'embeddedin',geititle:'Template:Thcrap_Image',geilimit:'max',format:'json'}).done((data)=>console.log(data))</nowiki></pre></div>
Egor
https://www.thpatch.net/w/index.php?title=User:DalekCraft&diff=2512227
User:DalekCraft
2023-09-11T02:42:55Z
<p>Egor: /* Things what I want to fix but can not due to lack of wiki permissions */ move stuff that still needs to be fixed to the bottom</p>
<hr />
<div>{{#babel:en-N|es-2}}<br />
<br />
I am mainly here not to translate, but to tidy up stuff and fix broken things because I am a perfectionist.<br />
<br />
I have taken Spanish classes before, but I rarely use Spanish now, so it's a bit rusty.<br />
<br />
== Things what I plan to do ==<br />
<br />
* I am going to make a root category.<br />
* <s>I think updating the marked translation revisions of all pages caused the commented lines at the tops of all Th06, Th07, Th08, and Th09 ending pages to have their unit names changed, <s>so I will have to either change the names back or manually re-add the translations for each language by checking the page histories.</s> I am changing the unit names to "1", marking the pages for translation, and copying over the original unit translations from the "-1" units. I have thus far finished Th07, Th08, and Th09.</s> Finished all of them.<br />
* Add docs to all templates (after studying how each one works, obviously).<br />
<br />
== Things what I do not know how to fix ==<br />
<br />
* Figure out why [[Th16/Images]] is considered a broken page in [[Special:PageTranslation]]. <s>I am assuming that it is some sort of syntax error.</s> Copying the source onto this page gives the option to mark it for translation, meaning the source is not the issue. <s>I wonder whether it would be fixed if it was removed from translation and then added again, but I would not do that before getting the okay from some staff member.</s> Forget that idea; that would probably delete all of the pages in the "Translations" namespace for Th16/Images. Though, I could copy all of the unit translations to somewhere before removing it from translation, and add them back manually afterward.<br />
* Several pages, like [[Th105/Images/en-literal]], [[Th105/Images/sr-literal]], [[Th145/Images/en-literal]], and [[Th145/Images/sr-literal]], are listed in [[Special:UncategorizedPages]], even though they ''do'' have categories.<br />
* Where the hell are those remaining usages of the nonexistent [[Template:Intlang]]? The wiki says there are 48 usages, but not all of them have the template on the page itself; they simply inherit it from some other page. I think.<br />
<br />
== Things what I want to fix but can not due to lack of wiki permissions ==<br />
<br />
* <s>[[MediaWiki:Common.css]] reports using the nonexistent template "Thcrap image" because the "i" is not capitalized, even though the usage is inside a comment. This bothers me.</s> Fixed by making a redirect.<br />
*: fixed --[[User:Egor|Egor]] ([[User talk:Egor|talk]]) 02:41, 11 September 2023 (UTC)<br />
* [[Template:Thcrap Format]] is missing and has a bit of usage (specifically on [[Patch:Base TSA/Formats]]), but I do not know what the source of the template was when it still existed. However, [[Patch:Base TSA/Formats]] seems to be unused and pretty outdated, so maybe the page should just be deleted.<br />
*: The template never existed, and the hook has been [https://github.com/thpatch/TouhouPatchCenter/commit/4acf2e8397a6f28ef7f64a6a30f27e8ec8ee6798 removed in 2013]. All the Base TSA and binary hack pages are actually extremely outdated, and we only keep them around for historical purposes. I created a very basic template for this page, so that it displays properly. --[[User:Egor|Egor]] ([[User talk:Egor|talk]]) 02:41, 11 September 2023 (UTC)<br />
* <s>Can't add some TH games to [[:Category:Games]] because some pages are locked. I would add it to [[Template:Thcrap Game info]] instead, but some Portal page uses that template too, so that would put that portal into the Games category.</s> Did this on the same day I started this list.<br />
*: fixed --[[User:Egor|Egor]] ([[User talk:Egor|talk]]) 02:41, 11 September 2023 (UTC)<br />
* <s>The "Target" in [[Template:Thcrap Target]] is not capitalized in a few pages, which makes them non-functional, and I can not fix those pages because they are locked. (For ease of access, this makes the link Template:Thcrap target.)</s> Screw it; I made a redirect for it.<br />
*: fixed --[[User:Egor|Egor]] ([[User talk:Egor|talk]]) 02:41, 11 September 2023 (UTC)<br />
* [[Touhou_Patch_Central:Persönlicher_Aufruf]] uses [[Template:Documentation/start box2]] and [[Template:Documentation/end box2]], which both do not exist. However, that page has been locked, so I can not remove them.<br />
** And no, I can not make those pages into redirects for "start box" and "end box", because neither of ''those'' exist, either.<br />
**: fixed by grabbing the necessary parts from German touhouwiki --[[User:Egor|Egor]] ([[User talk:Egor|talk]]) 02:41, 11 September 2023 (UTC)<br />
* All of the "Binary hacks" subpages for pages in [[:Category:Games]] lack the SubpageCategory template, but I can not add it to them because they are locked.<br />
*: fixed --[[User:Egor|Egor]] ([[User talk:Egor|talk]]) 02:41, 11 September 2023 (UTC)<br />
* [[Development notes/The month before Reitaisai 11]] also suffers from the above issue.<br />
*: fixed --[[User:Egor|Egor]] ([[User talk:Egor|talk]]) 02:41, 11 September 2023 (UTC)<br />
<hr /><br />
* [[Template:Navbox]] does not work because we do not have the necessary Modules for it.<br />
* I marked a bunch of pages with [[Template:Delete]] (after remaking said template) because I can not delete them. They are listed in [[:Category:Candidates for deletion]].<br />
* Ensure that all of the wiki's software on [[Special:Version]] are up-to-date. I can technically check these with my current permissions, but I can't do anything about any outdated software.</div>
Egor
https://www.thpatch.net/w/index.php?title=User:DalekCraft&diff=2512216
User:DalekCraft
2023-09-11T02:41:01Z
<p>Egor: /* Things what I want to fix but can not due to lack of wiki permissions */ fixed a bunch of stuff</p>
<hr />
<div>{{#babel:en-N|es-2}}<br />
<br />
I am mainly here not to translate, but to tidy up stuff and fix broken things because I am a perfectionist.<br />
<br />
I have taken Spanish classes before, but I rarely use Spanish now, so it's a bit rusty.<br />
<br />
== Things what I plan to do ==<br />
<br />
* I am going to make a root category.<br />
* <s>I think updating the marked translation revisions of all pages caused the commented lines at the tops of all Th06, Th07, Th08, and Th09 ending pages to have their unit names changed, <s>so I will have to either change the names back or manually re-add the translations for each language by checking the page histories.</s> I am changing the unit names to "1", marking the pages for translation, and copying over the original unit translations from the "-1" units. I have thus far finished Th07, Th08, and Th09.</s> Finished all of them.<br />
* Add docs to all templates (after studying how each one works, obviously).<br />
<br />
== Things what I do not know how to fix ==<br />
<br />
* Figure out why [[Th16/Images]] is considered a broken page in [[Special:PageTranslation]]. <s>I am assuming that it is some sort of syntax error.</s> Copying the source onto this page gives the option to mark it for translation, meaning the source is not the issue. <s>I wonder whether it would be fixed if it was removed from translation and then added again, but I would not do that before getting the okay from some staff member.</s> Forget that idea; that would probably delete all of the pages in the "Translations" namespace for Th16/Images. Though, I could copy all of the unit translations to somewhere before removing it from translation, and add them back manually afterward.<br />
* Several pages, like [[Th105/Images/en-literal]], [[Th105/Images/sr-literal]], [[Th145/Images/en-literal]], and [[Th145/Images/sr-literal]], are listed in [[Special:UncategorizedPages]], even though they ''do'' have categories.<br />
* Where the hell are those remaining usages of the nonexistent [[Template:Intlang]]? The wiki says there are 48 usages, but not all of them have the template on the page itself; they simply inherit it from some other page. I think.<br />
<br />
== Things what I want to fix but can not due to lack of wiki permissions ==<br />
<br />
* <s>[[MediaWiki:Common.css]] reports using the nonexistent template "Thcrap image" because the "i" is not capitalized, even though the usage is inside a comment. This bothers me.</s> Fixed by making a redirect.<br />
*: fixed --[[User:Egor|Egor]] ([[User talk:Egor|talk]]) 02:41, 11 September 2023 (UTC)<br />
* [[Template:Navbox]] does not work because we do not have the necessary Modules for it.<br />
* [[Template:Thcrap Format]] is missing and has a bit of usage (specifically on [[Patch:Base TSA/Formats]]), but I do not know what the source of the template was when it still existed. However, [[Patch:Base TSA/Formats]] seems to be unused and pretty outdated, so maybe the page should just be deleted.<br />
*: The template never existed, and the hook has been [https://github.com/thpatch/TouhouPatchCenter/commit/4acf2e8397a6f28ef7f64a6a30f27e8ec8ee6798 removed in 2013]. All the Base TSA and binary hack pages are actually extremely outdated, and we only keep them around for historical purposes. I created a very basic template for this page, so that it displays properly. --[[User:Egor|Egor]] ([[User talk:Egor|talk]]) 02:41, 11 September 2023 (UTC)<br />
* I marked a bunch of pages with [[Template:Delete]] (after remaking said template) because I can not delete them. They are listed in [[:Category:Candidates for deletion]].<br />
* <s>Can't add some TH games to [[:Category:Games]] because some pages are locked. I would add it to [[Template:Thcrap Game info]] instead, but some Portal page uses that template too, so that would put that portal into the Games category.</s> Did this on the same day I started this list.<br />
*: fixed --[[User:Egor|Egor]] ([[User talk:Egor|talk]]) 02:41, 11 September 2023 (UTC)<br />
* <s>The "Target" in [[Template:Thcrap Target]] is not capitalized in a few pages, which makes them non-functional, and I can not fix those pages because they are locked. (For ease of access, this makes the link Template:Thcrap target.)</s> Screw it; I made a redirect for it.<br />
*: fixed --[[User:Egor|Egor]] ([[User talk:Egor|talk]]) 02:41, 11 September 2023 (UTC)<br />
* [[Touhou_Patch_Central:Persönlicher_Aufruf]] uses [[Template:Documentation/start box2]] and [[Template:Documentation/end box2]], which both do not exist. However, that page has been locked, so I can not remove them.<br />
** And no, I can not make those pages into redirects for "start box" and "end box", because neither of ''those'' exist, either.<br />
**: fixed by grabbing the necessary parts from German touhouwiki --[[User:Egor|Egor]] ([[User talk:Egor|talk]]) 02:41, 11 September 2023 (UTC)<br />
* All of the "Binary hacks" subpages for pages in [[:Category:Games]] lack the SubpageCategory template, but I can not add it to them because they are locked.<br />
*: fixed --[[User:Egor|Egor]] ([[User talk:Egor|talk]]) 02:41, 11 September 2023 (UTC)<br />
* [[Development notes/The month before Reitaisai 11]] also suffers from the above issue.<br />
*: fixed --[[User:Egor|Egor]] ([[User talk:Egor|talk]]) 02:41, 11 September 2023 (UTC)<br />
* Ensure that all of the wiki's software on [[Special:Version]] are up-to-date. I can technically check these with my current permissions, but I can't do anything about any outdated software.</div>
Egor
https://www.thpatch.net/w/index.php?title=Development_notes/The_month_before_Reitaisai_11&diff=2512209
Development notes/The month before Reitaisai 11
2023-09-11T02:39:52Z
<p>Egor: add SubpageCategory</p>
<hr />
<div>== The situation ==<br />
On April 12, 2014, ZUN announced the release of Touhou 14.3, '''弾幕アマノジャク ~ Impossible Spell Card''', at Reitaisai 11 on May 11. From the [https://www.youtube.com/watch?v=S2XZ1w-vvwI official announcement trailer], it technically looks similar to the photography games.<br />
<br />
To prepare for this, I'll probably need all of the remaining 4 weeks. I do ''not'' want to get into the same situation I was in during the {{GameLabel|th14}} full version release, where a lack of sleep, care and practice left the patched game broken for 15 hours on Day 1, and it took 2 more days to make all the data available for translation. This project is supposed to reward early adopters with a gradual translation and not punish them, but last time, I did exactly the opposite.<br />
<br />
== The schedule ==<br />
In particular, the things that still need to be done are as follows, and will be done in this order:<br />
<br />
* Get the next Windows release done by adding ZIP support and cryptographically secure automatic updates. Both features have been roughly planned out and only need to be implemented, which won't be that easy. A lot of the work here is necessary for the DOS port as well: We'll need ZIP support to work around the 8.3 file name limitation, and the automatic update feature will move stuff out of the main engine that won't be necessary in DOS. '''<span style="color:#008000">[✔ Done]</span>'''<br />
<br />
* Move the base patches, including the "Japanese translation", away from the wiki into a Git repository. It's about time we stopped using that needless wrapper around the actual patch data, it has long become a maintenance nightmare. This further decentralization will also be the main focus of our #newtouhou advertising campaign this time around. With this, it will be made even easier to [[Project:Servers#Building_your_own_patch_server|set up a patch server]] and provide translations without going through {{ns:4}}. In fact, I would be delighted if a third party provided a complete translation of the new game ''before'' {{ns:4}}. Of course, this means that there are still some translators hiding out there that are able to use alien technology like, um, "[http://json.org JSON]"... and [[File:Python.svg|16px]] "Python"... and [[File:Dropbox.png|16px]] "Dropbox"... '''<span style="color:#f08000">[Almost done]</span>'''<br />
<br />
<br />
* Write a new set of scripts to dump game data to the formats thcrap uses, and ''from there'' to the wiki formats. This, again, will emphasize the fact that {{ns:4}} no longer receives special treatment in the patching process. Maybe I'll even get someone else (inb4: Nazeo) to operate the latter scripts to further distance the engine from the wiki.<br />
<br />
* Write a script to replace the contents of a patch file with random Unicode garbage, for the sake of testing the patch functionality without having to wait for translations or copy-pasting Lorem Ipsum manually. ^^ '''<span style="color:#f08000">[Almost done]</span>'''<br />
<br />
<br />
* Take another look at the Latin script font and trying to twist it in such a way that it looks good with ZUN's custom anti-aliasing filter without requiring game-specific hacks.<br />
<br />
<br />
[[File:th14 Support Speedrun.png|thumb|242px|right|{{File:th14 Support Speedrun.png}}]]<br />
* A number of practice speedruns where I'll be recreating thcrap support for {{GameLabel|th14}} and {{GameLabel|th125}} from scratch. These will probably be livestreamed.<br />
<br />
* If there's still time left before the release, I'll take a look at Steam integration for the configuration tool - that is, adding the shortcuts to run the patched games directly to the list of Steam games if Steam is installed.<br />
<br />
* During release day, remove all the cruft that ensures backwards compatibility with very ancient builds. :-P<br />
<br />
== Further plans after th143 support has been completed ==<br />
* Move the self-updater to a stand-alone executable in an attempt to silence Norton (and to get rid of the firewall warnings).<br />
** '''This is also very important because of zipfile support.''' Zip is both a terrible and loosely defined standard, with very broad and fuzzy boundaries as to what still constitutes as a "valid ZIP file". Add a custom implementation on top of that (I don't like that MiniZip thing that is bundled with zlib) and bugs are most likely inevitable. Running all the zip code in a stand-alone executable at least keeps potential crashes away from the game itself. :/<br />
<br />
* <s>If we're getting a Phantasmagoria game: Finish thcrap support for {{GameLabel|th09}} (it's still missing spell card translation).</s><br />
* Finish thcrap support for {{GameLabel|th095}} and {{GameLabel|th125}} - these are still missing translation of the mission descriptions.<br />
<br />
== The decentralization ==<br />
With thcrap being an open-source project, there might be some misunderstanding about what the ''decentralization'' aspect is all about - perhaps suggesting that a lot of people will be starting to independently hack around in some code base, eventually ending in complete chaos. In fact, nothing could be further from the truth.<br />
<br />
I will still remain the main developer of [https://github.com/nmlgc/thpatch-git the core data that provides the abstraction layer between the patch engine and the individual games], and the [http://srv.thpatch.net/lang_ja/ Japanese patch that provides the boilerplate for all the other languages]. As such, my job is to make sure that every instance of text in the game can be replaced. I call this "patch support": This is what I'll be working on immediately after having acquired the game, and what I'll be speedrunning for practice in a few weeks. Note that no translation patch is created, or even necessary, during this step - this is only possible after patch support has been completed at least partly.<br />
<br />
This highly intricate, technical step is not what I intend to decentralize. '''Instead, it's translation.'''<br />
<br />
Basically, this means that I no longer sell {{ns:4}} as the only way to create patches using the thcrap engine. While this site will still remain open and continue to serve translations based on the community consensus, I'm going to place emphasis on custom edits of the [http://srv.thpatch.net/lang_en/ thcrap translation files that are read by the patch engine itself]. If you haven't known, '''this''' is the only thing the patch actually sees and inserts into the game - it doesn't even know that there is a wiki.<br />
<br />
All it needs to turn these custom edits into a thcrap patch repository on its own is a script that has been included in the thcrap package since the 2014-01-26 build. Together with the dependency system introduced earlier, the translators '''won't even have to bother about any patch development''' at all, which is exactly the point. All they have do is:<br />
* clone the "Japanese patch"<br />
* edit the text and images as they please<br />
* specify some additional dependencies [[Project:Servers#Dependencies|as outlined here]]<br />
* test the patch locally<br />
* run the aforementioned script<br />
* upload it to some kind of server (which can even be on Dropbox or GitHub) ''whenever they like'' (everything can self-update, after all)<br />
* and send me a mail to get listed in the neighbor repository list of Touhou Patch Center, and thus in everyone's patch configuration menu.<br />
<br />
All of this dramatically reduces the entry level required to create a game translation, down to only having to worry about JSON markup. This is as simple as editing {{ns:4}}, but gives a translator full control over their translation. <br />
<br />
Take a look at <tt>wobuffet3</tt>'s patch for an example where this same system is already used in practice, albeit not for something you would consider a "translation".<br />
<br />
== Regarding the requests for a "finished product" ==<br />
Once the engine can self-update, things will ''appear'' to be a lot more stable. Still, there is a reason why the thcrap builds are identified by the day of their release instead of using smart things like [http://semver.org/ semantic versioning]: At this point of development, I want to reserve myself the right to break and redesign any part of the patch data formats and configurations with every release. Thus, we're still far away from thcrap version 1.0.<br />
<br />
But I know, that's not what you are asking for. You want something with a nice and friendly interface that's intuitive to use and nicely integrates into your system, your Steam library, and that Windows 8 start screen you could not escape from when buying your latest PC.<br />
<br />
However, my past experiences with Music Room Interface made me really dislike GUI coding, and there are '''a lot''' of things I would rather do for this project - finishing the support for the older games including their trial versions, Git protocol support for updating patches, [[issue:18|BGM modding]], PC-98, Seihou - heck, I'd rather write a new web page to replace this terrible, sluggish MediaWiki and serve as a better translation front-end, despite having zero experience in that field.<br />
<br />
The point is: I refuse to click together a half-assed GUI just because popular opinion demands me to. This fanbase deserves something better and fancier for a project that has invariably become the present - and future - of Touhou patching. If you're serious about wanting a quality product, you probably share this opinion.<br />
<br />
We've now had our [[Project:Artwork|"money for quality artwork" offer]] up for over two months. Unique artwork would give me a clear design vision and thus motivate me a lot to start working on a GUI. But during all that time, we haven't heard from any artist so far (<small>except for one case where someone tried to pass off sprites from fangames as their own work</small>). Please tell me - what more can I possibly offer besides all of my money and the promise of immediately starting work on the GUI after having received sufficient artwork?<br />
<br />
I mean, it doesn't even have to be Touhou-related. Any kind of artwork that somehow suits a project like this one would fit. But as long as I don't see at least an attempt, I'll invest my efforts into things that matter to '''me'''.<br />
<br />
'''No art, no GUI, no polish.'''<br />
<br />
Sorry.<br />
<br />
--[[User:NamelessLegacy|NamelessLegacy]] ([[User talk:NamelessLegacy|talk]]) 01:57, 12 April 2014 (UTC)<br />
{{SubpageCategory}}</div>
Egor
https://www.thpatch.net/w/index.php?title=Th08/Binary_hacks&diff=2512198
Th08/Binary hacks
2023-09-11T02:37:45Z
<p>Egor: add Github note and Subpage category</p>
<hr />
<div>{{GitHub note}}<br />
{{Locked patch page note}}<br />
=== Bugs ===<br />
{{thcrap Binhack<br />
|id=sprintf_call<br />
|title=Safe sprintf (call)<br />
|addr={{thcrap_ver|ver=v1.00d|0x4663d7, 0x4664ed}}<br />
|desc=<br />
[[th07/Binary hacks#msg_overflow|Same hack as for th07.]] Almost binary identical, even.<br />
|dasm=<br />
push eax<br />
call [strings_vsprintf]<br />
mov dword ptr ss:[ebp-88],eax<br />
|code=<br />
50<br />
e8 [strings_vsprintf]<br />
8985 78ffffff<br />
}}<br />
{{thcrap Binhack<br />
|id=sprintf_rep<br />
|title=Safe sprintf (replace pointer)<br />
|addr={{thcrap_ver|ver=v1.00d|0x466407, 0x4665c7}}<br />
|desc=<br />
[[th07/Binary hacks#msg_overflow|Same hack as for th07.]] Almost binary identical, even.<br />
<br />
Adding a <tt>push eax</tt> so that we can re-use it for spell cards.<br />
|dasm=<br />
mov eax,dword ptr ss:[ebp-88]<br />
push eax<br />
|code=<br />
8b85 78ffffff<br />
50<br />
}}<br />
<br />
== Spells ==<br />
{{thcrap Binhack<br />
|id=spell_align<br />
|title=Spell card alignment<br />
|desc=Same as the [[th07/Binary hacks#boss_title_align|th07 version]].<br />
|addr={{thcrap_ver|ver=v1.00d|0x466585}}<br />
|code=<br />
ffb5 78ffffff<br />
e8 [GetTextExtent]<br />
83c0 04<br />
50<br />
db04e4<br />
58<br />
90 90 90 90 90 90<br />
90 90 90 90 90<br />
|dasm=<br />
push dword ptr ss:[ebp-88]<br />
call [GetTextExtent]<br />
add eax, 4<br />
push eax<br />
fild dword ptr ss:[esp]<br />
pop eax<br />
nop (*0xb)<br />
}}<br />
== Music Room ==<br />
{{thcrap Binhack<br />
|id=music_title_prepare<br />
|title=Prepare Music Room title fetching<br />
|addr={{thcrap_ver|ver=v1.00d|0x449ac4}}<br />
|desc=<br />
Before the address of the title string is calculated, the game checks the music unlock table for that track. By merely changing the target register for the track number used in this comparison, it is kept there until the end of the function. Why should we have two or more breakpoints, then?<br />
|dasm=<br />
mov edx,dword ptr ss:[ebp-0x10]<br />
mov ecx,dword ptr ss:[ebp-0x30]<br />
cmp dword ptr ds:[edx*4+ecx+0x0c],0<br />
|code=<br />
8b55 f0<br />
8b4d d0<br />
837c91 0c 00<br />
}}<br />
{{thcrap Binhack<br />
|id=music_title_nowplaying_prepare<br />
|title=Prepare Music Room title fetching ("Now playing")<br />
|addr={{thcrap_ver|ver=v1.00d|0x4490ce}}<br />
|desc=<br />
Same here.<br />
|dasm=<br />
mov edx,dword ptr ds:[eax+0x74]<br />
imul eax,edx,0x292<br />
|code=<br />
8b50 74<br />
69c2 92020000<br />
}}<br />
{{thcrap Binhack<br />
|id=music_cmt_rewrite<br />
|title=Rewrite Music Room comment render calls<br />
|addr={{thcrap_ver|ver=v1.00d|0x448eec}}<br />
|desc=<br />
The easy way of just inserting three breakpoints, one for each parameter, doesn't really work here. We would either overwrite the spoiler message as well, or be limited to 64 bytes due to the <tt>strncpy</tt>. We cannot remove that either, because at least track #6 has one line that's exactly 64 bytes long, with no terminating null byte. This would cause a slight glitch, displaying two lines in one.<br />
<br />
<br />
Thus, a rewrite is needed. This only removes the copy of the spoiler message so that thcrap's string lookup can work as expected.<br />
|code=<br />
53<br />
8b9d 58ffffff<br />
8b43 74<br />
8b55 f8<br />
3b43 78<br />
74 07<br />
837c83 0c 00<br />
74 28<br />
69f0 92020000<br />
03b3 84000000<br />
6bca 42<br />
8db431 82000000<br />
6a 10<br />
59<br />
8d7d b0<br />
f3:a5<br />
8d7d b0<br />
9090909090<br />
eb 07<br />
8b3c95 ac7a4c00<br />
69c2 a4020000<br />
838c03 00570000 02<br />
89f8<br />
5b<br />
eb 4f<br />
9090909090909090<br />
9090909090909090<br />
9090909090909090<br />
9090909090909090<br />
9090909090909090<br />
9090909090909090<br />
9090909090909090<br />
9090909090909090<br />
9090909090909090<br />
90909090909090<br />
|dasm=<br />
push ebx ; Turn EBX into a scratch register<br />
mov ebx,dword ptr ss:[ebp-0x0a8] ; EBX = structure<br />
mov eax,dword ptr ds:[ebx+0x74] ; EAX = track<br />
mov edx,dword ptr ss:[ebp-8] ; EDX = line<br />
cmp eax,dword ptr ds:[ebx+0x78]<br />
je +7<br />
cmp dword ptr ds:[eax*4+ebx+0x0c],0 ; Unlocked?<br />
je +0x28 ; No<br />
imul esi,eax,0x292 ; ESI = track offset<br />
add esi,dword ptr ds:[ebx+0x84]<br />
imul ecx,edx,0x42 ; ECX = line offset<br />
lea esi,[esi+ecx+0x82] ; ESI = original comment string<br />
push 10<br />
pop ecx ; ECX = 10<br />
lea edi,[ebp-0x50]<br />
rep movs [edi], [esi] ; strncpy(edi, esi, 0x40)<br />
lea edi,[ebp-0x50] ; Reset EDI<br />
nop (*5) ; Insert breakpoint here<br />
jmp +7<br />
mov edi,dword ptr ds:[edx*4+0x4c7aac] ; EDI = spoiler message<br />
imul eax,edx,0x2a4 ; OR something<br />
or dword ptr ds:[eax+ebx+0x5700],2<br />
mov eax,edi ; Clean up<br />
pop ebx<br />
jmp short +0x4f<br />
nop (*0x4f)<br />
}}<br />
=== Compatibility ===<br />
{{thcrap Binhack<br />
|id=unpatch_font<br />
|title=Reset English patch font size<br />
|addr={{thcrap_ver|ver=v1.00d|Rx3fa07}}<br />
|dasm=<br />
lea eax, [eax+eax-2]<br />
|code=<br />
8d4400 fe<br />
}}<br />
{{SubpageCategory}}</div>
Egor
https://www.thpatch.net/w/index.php?title=Th128/Binary_hacks&diff=2512197
Th128/Binary hacks
2023-09-11T02:37:33Z
<p>Egor: add Github note and Subpage category</p>
<hr />
<div>{{GitHub note}}<br />
{{Locked patch page note}}<br />
== Bugs ==<br />
{{thcrap Binhack<br />
|id=sprintf_call_1<br />
|title=Safe sprintf (call #1)<br />
|addr={{thcrap_ver|ver=v1.00a|0x46639f}}<br />
|dasm=<br />
push eax<br />
call [strings_vsprintf]<br />
mov dword ptr ss:[ebp-0x84],eax<br />
mov dword ptr ss:[ebp-0x88],edi<br />
|code=<br />
50<br />
e8 [strings_vsprintf]<br />
8985 7cffffff<br />
89bd 78ffffff<br />
}}<br />
<br />
{{thcrap Binhack<br />
|id=sprintf_call_2<br />
|title=Safe sprintf (call #2)<br />
|addr={{thcrap_ver|ver=v1.00a|0x466234}}<br />
|dasm=<br />
push eax<br />
call [strings_vsprintf]<br />
mov dword ptr ss:[ebp-0x88],eax<br />
|code=<br />
50<br />
e8 [strings_vsprintf]<br />
8985 78ffffff<br />
}}<br />
<br />
{{thcrap Binhack<br />
|id=sprintf_call_3<br />
|title=Safe sprintf (call #3)<br />
|addr={{thcrap_ver|ver=v1.00a|0x4662cf}}<br />
|dasm=<br />
push eax<br />
call [strings_vsprintf]<br />
mov dword ptr ss:[ebp-0x8c],eax<br />
|code=<br />
50<br />
e8 [strings_vsprintf]<br />
8985 74ffffff<br />
}}<br />
<br />
{{thcrap Binhack<br />
|id=sprintf_rep<br />
|title=Safe sprintf (replace pointer)<br />
|addr={{thcrap_ver|ver=v1.00a|0x466272, 0x466342, 0x46640f}}<br />
|dasm=<br />
mov ebx, dword ptr ss:[<br />
|code=<br />
8b<br />
}}<br />
== Logging ==<br />
{{thcrap Binhack<br />
|id=log_restore<br />
|title=Restore the game's built-in logging<br />
|addr={{thcrap_ver|ver=v1.00a|0x46c320}}<br />
|desc=Very useful for debugging.<br />
|code=e9 [log_printf]<br />
|dasm=jmp [log_printf]<br />
}}<br />
<br />
== Textbox size ==<br />
{{thcrap Binhack<br />
|id=fw_textbox_size<br />
|title=Correct text length calculation for Fairy Wars-style text boxes<br />
|addr=<br />
{{thcrap_ver|ver=v1.00a|0x423960, 0x423b20}}<br />
|desc=This replaces the basic text box length calculation (string length * 8) with a call to GetTextExtent.<br />
<br />
To apply these for later games, do an instruction search for:<br />
<syntaxhighlight lang="asm" line><br />
sub eax, edx<br />
lea ecx,[eax*8]<br />
and ecx,fffffff0<br />
</syntaxhighlight><br />
and don't forget to change the <code>PUSH</code> opcode to reflect the register with the string buffer address (<code>EDI</code> in this case).<br />
|dasm=<br />
push dword ptr ds:[th128.4d2abc]<br />
push edi<br />
call [GetTextExtentForFont]<br />
mov ecx,eax<br />
nop (*3)<br />
|code=<br />
ff35 bc2a4d00<br />
57<br />
e8 [GetTextExtentForFont]<br />
89c1<br />
90 90 90<br />
}}<br />
<br />
== Spells ==<br />
{{thcrap Binhack<br />
|id=spell_align<br />
|title=Spell card alignment<br />
|addr={{thcrap_ver|ver=v1.00a|0x466307}}<br />
|desc=In this game, the fonts for dialog and spell cards have different sizes. For this reason, we would have to reset the font after the <tt>SelectObject</tt> setup - otherwise, dialog text width calculation would use the wrong font for the rest of the game.<br />
<br />
Thus, <tt>GetTextExtentForFont</tt> is used, which takes the font for the calculation as a parameter and does temporary font selection on its own.<br />
|code=<br />
c1e9 04<br />
83e1 01<br />
51<br />
ff75 0c<br />
ff75 08<br />
ff35 cc2a4d00<br />
ff75 18<br />
e8 [GetTextExtentForFont]<br />
50<br />
db04e4<br />
58<br />
90 90 90<br />
|dasm=<br />
shr ecx, 4<br />
and ecx, 00000001<br />
push ecx<br />
push dword ptr ss:[ebp+0C]<br />
push dword ptr ss:[ebp+8]<br />
push dword ptr ds:[th128.004d2acc]<br />
push dword ptr ss:[ebp+18]<br />
call [GetTextExtentForFont]<br />
push eax<br />
fild dword ptr ss:[esp]<br />
pop eax<br />
nop (*3)<br />
}}<br />
<br />
== Player data ==<br />
{{thcrap Binhack<br />
|id=result_spell_align<br />
|title=Remove spell "alignment" in the result screen<br />
|addr={{thcrap_ver|ver=v1.00a|0x466409}}<br />
|code=<br />
31c0<br />
|dasm=<br />
xor eax,eax<br />
}}<br />
{{SubpageCategory}}</div>
Egor
https://www.thpatch.net/w/index.php?title=Th125/Binary_hacks&diff=2512196
Th125/Binary hacks
2023-09-11T02:37:30Z
<p>Egor: add Github note and Subpage category</p>
<hr />
<div>{{GitHub note}}<br />
{{Locked patch page note}}<br />
== Bugs ==<br />
{{thcrap Binhack<br />
|id=sprintf_call<br />
|title=Safe sprintf (call)<br />
|addr={{thcrap_ver|ver=v1.00a|Rx5f8dc}}<br />
|dasm=<br />
push eax<br />
call [strings_vsprintf]<br />
mov dword ptr ss:[esp+0x14],eax<br />
|code=<br />
50<br />
e8 [strings_vsprintf]<br />
8944e4 14<br />
}}<br />
{{thcrap Binhack<br />
|id=sprintf_rep<br />
|title=Safe sprintf (replace pointer)<br />
|addr={{thcrap_ver|ver=v1.00a|Rx5f903}}<br />
|dasm=<br />
mov edx, dword ptr ss:[esp+<br />
|code=<br />
8b54e4<br />
}}<br />
== Logging ==<br />
{{thcrap Binhack<br />
|id=log_restore<br />
|title=Restore the game's built-in logging<br />
|addr={{thcrap_ver|ver=v1.00a|0x4653c0}}<br />
|desc=Very useful for debugging.<br />
|code=e9 [log_printf]<br />
|dasm=jmp [log_printf]<br />
}}<br />
<br />
== Spells ==<br />
{{thcrap Binhack<br />
|id=spell_align<br />
|title=Spell card alignment<br />
|addr={{thcrap_ver|ver=v1.00a|0x45f979}}<br />
|desc=... and fixing the buffer overflow bug while we're at it.<br />
|code=<br />
8b8e 88040000<br />
8bbe fc030000<br />
d947 38<br />
c1e9 04<br />
83e1 01<br />
51<br />
8b94e4 b0000000<br />
52<br />
ffb4e4 a8000000<br />
ffb4e4 a8000000<br />
ff35 08094d00<br />
52<br />
e8 [GetTextExtentForFont]<br />
50<br />
db04e4<br />
58<br />
eb 2e<br />
90 90 90 90 90 90 90 90<br />
90 90 90 90 90 90 90 90<br />
90 90 90 90 90 90 90 90<br />
90 90 90 90 90 90 90 90<br />
90 90 90 90 90 90 90 90<br />
90 90 90 90 90 90<br />
|dasm=<br />
mov ecx,dword ptr ds:[esi+488]<br />
mov edi,dword ptr ds:[esi+3FC]<br />
fld dword ptr ds:[edi+38]<br />
shr ecx,4<br />
and ecx,00000001<br />
push ecx<br />
mov edx,dword ptr ss:[esp+0B0]<br />
push edx<br />
push dword ptr ss:[esp+0A8]<br />
push dword ptr ss:[esp+0A8]<br />
push dword ptr ds:[th125.4d0908] ; spell font<br />
push edx<br />
call [GetTextExtentForFont]<br />
push eax<br />
fild dword ptr ss:[esp]<br />
pop eax<br />
jmp short +0x2e<br />
nop (*0x2e)<br />
}}<br />
<br />
== Compatibility ==<br />
{{thcrap Binhack<br />
|id=font_ruby_size<br />
|title=Ensure correct size of ruby font<br />
|desc=The English patch uses a larger size for the ruby text font. I don't know why, probably some leftover debugging code. This sets it back to its normal size.<br />
|addr=<br />
{{thcrap_ver|ver=v1.00a|0x44cfcb}}<br />
|dasm=<br />
push 0f<br />
| code =<br />
6a 0f<br />
}}<br />
== Ruby ==<br />
{{thcrap Binhack<br />
|id=skip_ruby_loop<br />
|title=Render ruby text in one pass<br />
|desc=[[th11/Binary hacks#skip_ruby_loop|Same hack as for th11.]]<br />
|addr={{thcrap_ver|ver=v1.00a|0x44d0e0}}<br />
|dasm=<br />
nop<br />
nop<br />
| code=<br />
90<br />
90<br />
}}<br />
{{SubpageCategory}}</div>
Egor
https://www.thpatch.net/w/index.php?title=Th12/Binary_hacks&diff=2512195
Th12/Binary hacks
2023-09-11T02:37:29Z
<p>Egor: add Github note and Subpage category</p>
<hr />
<div>{{GitHub note}}<br />
{{Locked patch page note}}<br />
== Bugs ==<br />
{{thcrap Binhack<br />
|id=fix_score_1<br />
|title=Score counter bugfix (jumps)<br />
|addr={{thcrap_ver|ver=v1.00b|0x401631, 0x40166a, 0x4016ab}}<br />
|desc=<br />
Original hack by [http://www.shrinemaiden.org/forum/index.php/topic,12254.0.html Nereid].<br />
<br />
Corrects the score display for scores exceeding 2<sup>31</sup> points by changing signed jumps and multiplications to unsigned ones.<br />
|code=73<br />
}}<br />
{{thcrap Binhack<br />
|id=fix_score_2<br />
|title=Score counter bugfix (multiplications)<br />
|addr={{thcrap_ver|ver=v1.00b|0x401651, 0x401699, 0x4016cf}}<br />
|desc=<br />
Original hack by [http://www.shrinemaiden.org/forum/index.php/topic,12254.0.html Nereid].<br />
<br />
Corrects the score display for scores exceeding 2<sup>31</sup> points by changing signed jumps and multiplications to unsigned ones.<br />
|code=e1<br />
}}<br />
{{thcrap Binhack<br />
|id=sprintf_call_1<br />
|title=Safe sprintf (call #1)<br />
|addr={{thcrap_ver|ver=v1.00b|0x46078d}}<br />
|dasm=<br />
push eax<br />
call [strings_vsprintf]<br />
mov dword ptr ss:[esp+0x14],eax<br />
|code=<br />
50<br />
e8 [strings_vsprintf]<br />
8944e4 14<br />
}}<br />
{{thcrap Binhack<br />
|id=sprintf_call_2<br />
|title=Safe sprintf (call #2)<br />
|addr={{thcrap_ver|ver=v1.00b|0x460839, 0x460929}}<br />
|dasm=<br />
push eax<br />
call [strings_vsprintf]<br />
mov dword ptr ss:[esp+0x1c],eax<br />
|code=<br />
50<br />
e8 [strings_vsprintf]<br />
8944e4 1c<br />
}}<br />
{{thcrap Binhack<br />
|id=sprintf_rep<br />
|title=Safe sprintf (replace pointer)<br />
|desc=The safe sprintf pointer is at a different ESP offset in both functions. Thus, we simply leave out the offset from this hack, as it's already at the same position in the original code.<br />
|addr={{thcrap_ver|ver=v1.00b|0x4608b7, 0x4607d4, 0x46099b}}<br />
|dasm=<br />
mov ebx, dword ptr ss:[esp+<br />
|code=<br />
8b5ce4<br />
}}<br />
<br />
== Spells ==<br />
{{thcrap Binhack<br />
|id=spell_align<br />
|title=Spell card alignment<br />
|addr={{thcrap_ver|ver=v1.00b|0x460867}}<br />
|desc=Same procedure as always. Don't forget that this one push indeed uses <tt>ESP</tt> (th12 was compiled with stack frames turned off), calculate the correct stack offset, and you're set.<br />
|dasm=<br />
mov edx,dword ptr ds:[esi+480]<br />
push ecx<br />
shr edx, 1<br />
and edx, 00000001<br />
push edx<br />
push dword ptr ss:[esp+0xa8]<br />
push dword ptr ss:[esp+0xa8]<br />
push dword ptr ds:[th12.4ce554]<br />
push ebx<br />
call [GetTextExtentForFont]<br />
add eax, 4<br />
push eax<br />
fild dword ptr ss:[esp]<br />
pop eax<br />
test eax, eax<br />
nop<br />
|code=<br />
8b96 80040000<br />
51<br />
d1ea<br />
83e2 01<br />
52<br />
ffb4e4 a8000000<br />
ffb4e4 a8000000<br />
ff35 54e54c00<br />
53<br />
e8 [GetTextExtentForFont]<br />
83c0 04<br />
50<br />
db04e4<br />
58<br />
85c0<br />
90<br />
}}<br />
== Player data ==<br />
{{thcrap Binhack<br />
|id=result_spell_align<br />
|title=Remove spell "alignment" in the result screen<br />
|addr={{thcrap_ver|ver=v1.00b|0x46098a}}<br />
|code=<br />
31c0<br />
|dasm=<br />
xor eax,eax<br />
}}<br />
{{SubpageCategory}}</div>
Egor
https://www.thpatch.net/w/index.php?title=Th11/Binary_hacks&diff=2512194
Th11/Binary hacks
2023-09-11T02:37:28Z
<p>Egor: add Github note and Subpage category</p>
<hr />
<div>{{GitHub note}}<br />
{{Locked patch page note}}<br />
== Bugs ==<br />
{{thcrap Binhack<br />
|id=sprintf_call_1<br />
|title=Safe sprintf (call #1)<br />
|addr={{thcrap_ver|ver=v1.00a|0x454c8d}}<br />
|dasm=<br />
push eax<br />
call [strings_vsprintf]<br />
mov dword ptr ss:[esp+0x14],eax<br />
|code=<br />
50<br />
e8 [strings_vsprintf]<br />
8944e4 14<br />
}}<br />
{{thcrap Binhack<br />
|id=sprintf_call_2<br />
|title=Safe sprintf (call #2)<br />
|addr={{thcrap_ver|ver=v1.00a|0x454d39, 0x454e19}}<br />
|dasm=<br />
push eax<br />
call [strings_vsprintf]<br />
mov dword ptr ss:[esp+0x1c],eax<br />
|code=<br />
50<br />
e8 [strings_vsprintf]<br />
8944e4 1c<br />
}}<br />
{{thcrap Binhack<br />
|id=sprintf_rep<br />
|title=Safe sprintf (replace pointer)<br />
|addr={{thcrap_ver|ver=v1.00a|0x454cd3, 0x454db6, 0x454e8a}}<br />
|dasm=<br />
mov ebx, dword ptr ss:[esp+<br />
|code=<br />
8b5ce4<br />
}}<br />
<br />
== Spells ==<br />
{{thcrap Binhack<br />
|id=spell_align<br />
|title=Spell card alignment<br />
|addr={{thcrap_ver|ver=v1.00a|0x454d67}}<br />
|code=<br />
8b96 08040000<br />
51<br />
d1ea<br />
83e2 01<br />
52<br />
ffb4e4 a8000000<br />
ffb4e4 a8000000<br />
ff35 ec2e4c00<br />
53<br />
e8 [GetTextExtentForFont]<br />
83c0 04<br />
50<br />
db04e4<br />
58<br />
85c0<br />
|dasm=<br />
mov edx, dword ptr ds:[esi+408]<br />
push ecx<br />
shr edx, 1<br />
and edx, 00000001<br />
push edx<br />
push dword ptr ss:[esp+0xa8]<br />
push dword ptr ss:[esp+0xa8]<br />
push dword ptr ds:[th11.004c2eec]<br />
push ebx<br />
call [GetTextExtentForFont]<br />
add eax, 4<br />
push eax<br />
fild dword ptr ss:[esp]<br />
pop eax<br />
test eax, eax<br />
}}<br />
== Player data ==<br />
{{thcrap Binhack<br />
|id=result_spell_align<br />
|title=Remove spell "alignment" in the result screen<br />
|addr={{thcrap_ver|ver=v1.00a|0x454e79}}<br />
|code=<br />
31c0<br />
|dasm=<br />
xor eax,eax<br />
}}<br />
<br />
== Compatibility ==<br />
{{thcrap Binhack<br />
|id=unpatch_font_assist<br />
|title=Reset English patch assist font width<br />
|addr={{thcrap_ver|ver=v1.00a|0x4445c5}}<br />
|dasm=<br />
push 0<br />
|code=<br />
6a 00<br />
}}<br />
{{SubpageCategory}}</div>
Egor
https://www.thpatch.net/w/index.php?title=Th10/Binary_hacks&diff=2512193
Th10/Binary hacks
2023-09-11T02:37:28Z
<p>Egor: add Github note and Subpage category</p>
<hr />
<div>{{GitHub note}}<br />
{{Locked patch page note}}<br />
== Bugs ==<br />
{{thcrap Binhack<br />
|id=sprintf_call_1<br />
|title=Safe sprintf (call #1)<br />
|addr={{thcrap_ver|ver=v1.00a|0x447a7e, 0x447be9}}<br />
|dasm=<br />
push eax<br />
call [strings_vsprintf]<br />
mov dword ptr ss:[esp+0x18],eax<br />
|code=<br />
50<br />
e8 [strings_vsprintf]<br />
8944e4 18<br />
}}<br />
{{thcrap Binhack<br />
|id=sprintf_call_2<br />
|title=Safe sprintf (call #2)<br />
|addr={{thcrap_ver|ver=v1.00a|0x447b19}}<br />
|dasm=<br />
push eax<br />
call [strings_vsprintf]<br />
mov dword ptr ss:[esp+0x1c],eax<br />
|code=<br />
50<br />
e8 [strings_vsprintf]<br />
8944e4 1c<br />
}}<br />
{{thcrap Binhack<br />
|id=sprintf_rep<br />
|title=Safe sprintf (replace pointer)<br />
|addr={{thcrap_ver|ver=v1.00a|0x447aab, 0x447b7a, 0x447c40}}<br />
|dasm=<br />
mov ebx, dword ptr ss:[esp+<br />
|code=<br />
8b5ce4<br />
}}<br />
<br />
== Text alignment ==<br />
{{thcrap Binhack<br />
|id=enemy_text_offset_1<br />
|title=Move enemy text to the left (line 1)<br />
|desc=From the English patch.<br />
|addr={{thcrap_ver|ver=v1.00a|0x41631a}}<br />
|code=8d75 60<br />
|dasm=lea esi, [ebp+60h]<br />
}}<br />
<br />
{{thcrap Binhack<br />
|id=enemy_text_offset_2<br />
|title=Move enemy text to the left (line 2)<br />
|desc=From the English patch.<br />
|addr={{thcrap_ver|ver=v1.00a|0x416335}}<br />
|code=83c0 07<br />
|dasm=add eax, 7<br />
}}<br />
<br />
== Spells ==<br />
{{thcrap Binhack<br />
|id=spell_align<br />
|title=Spell card alignment<br />
|desc=This time, it just can't be done without killing the <tt>strlen()</tt> as well. :(<br />
|addr={{thcrap_ver|ver=v1.00a|0x447b30}}<br />
|code=<br />
8b8e 60030000<br />
8bbe 94030000<br />
d1e9<br />
83e1 01<br />
51<br />
ffb4e4 a0000000<br />
ff35 a0184900<br />
ff74e4 1c<br />
e8 [GetTextExtentForFont]<br />
83c0 04<br />
50<br />
db04e4<br />
58<br />
90 90 90 90 90 90<br />
85c0<br />
|dasm=<br />
mov ecx,dword ptr ds:[esi+0x360]<br />
mov edi,dword ptr ds:[esi+0x394]<br />
shr ecx,1<br />
and ecx,00000001<br />
push ecx<br />
push dword ptr ss:[esp+0x0a0]<br />
push dword ptr ds:[th10.font_spell]<br />
push dword ptr ss:[esp+0x1c]<br />
call [GetTextExtentForFont]<br />
add eax,4<br />
push eax<br />
fild dword ptr ss:[esp]<br />
pop eax<br />
nop (*0x6)<br />
test eax,eax<br />
}}<br />
<br />
== Player data ==<br />
{{thcrap Binhack<br />
|id=result_spell_align<br />
|title=Remove spell "alignment" in the result screen<br />
|addr={{thcrap_ver|ver=v1.00a|0x447c39}}<br />
|code=<br />
31c0<br />
|dasm=<br />
xor eax,eax<br />
}}<br />
{{SubpageCategory}}</div>
Egor
https://www.thpatch.net/w/index.php?title=Th14/Binary_hacks&diff=2512192
Th14/Binary hacks
2023-09-11T02:37:27Z
<p>Egor: add Github note and Subpage category</p>
<hr />
<div>{{GitHub note}}<br />
{{Locked patch page note}}<br />
== Bugs ==<br />
{{thcrap Binhack<br />
|id=buffer_overflow_spell<br />
|title=Fix buffer overflow in spell name rendering (replace pointer)<br />
|addr={{thcrap_ver|ver=v0.01a|0x47a7a4}}{{thcrap_ver|ver=v0.01b|0x47a2f4}}{{thcrap_ver|ver=v1.00a|0x47de24}}{{thcrap_ver|ver=v1.00b|0x47dd24}}<br />
|desc=The <tt>strcpy</tt> is replaced by <tt>[[#spell_align|spell_align]]</tt>; this replaces the pointer accordingly.<br />
|dasm=<br />
mov eax, [ebp+0x20]<br />
nop<br />
|code=<br />
8b45 20<br />
90<br />
}}<br />
{{thcrap Binhack<br />
|id=sprintf_call<br />
|title=Safe sprintf (short, call)<br />
|addr={{thcrap_ver|ver=v0.01b|0x47a159, 0x47a379}}{{thcrap_ver|ver=v1.00a|0x47dc89, 0x47dea9}}{{thcrap_ver|ver=v1.00b|0x47db89, 0x47dda9}}<br />
|dasm=<br />
push eax<br />
call [strings_vsprintf]<br />
mov dword ptr ss:[esp+0x34],eax<br />
|code=<br />
50<br />
e8 [strings_vsprintf]<br />
8944e4 34<br />
}}<br />
{{thcrap Binhack<br />
|id=sprintf_long_call<br />
|title=Safe sprintf (long, call)<br />
|addr={{thcrap_ver|ver=v1.00b|0x40bb2e, 0x40bdde}}<br />
|dasm=<br />
push eax<br />
call [strings_vsprintf]<br />
mov dword ptr ss:[ebp-0x104],eax<br />
|code=<br />
50<br />
e8 [strings_vsprintf]<br />
8985 fcfeffff<br />
}}<br />
{{thcrap Binhack<br />
|id=sprintf_rep<br />
|title=Safe sprintf (short, replace pointer)<br />
|addr={{thcrap_ver|ver=v0.01b|0x47a1c8, 0x47a40b}}{{thcrap_ver|ver=v1.00a|0x47dcf8, 0x47df3b}}{{thcrap_ver|ver=v1.00b|0x47dbf8, 0x47de3b}}<br />
|dasm=<br />
mov eax,dword ptr ss:[esp+0x28]<br />
|code=<br />
8b44e4 28<br />
}}<br />
{{thcrap Binhack<br />
|id=sprintf_long_rep<br />
|title=Safe sprintf (long, replace pointer)<br />
|addr={{thcrap_ver|ver=v1.00b|0x40bb3d, 0x40bded}}<br />
|dasm=<br />
mov ???,dword ptr ss:[ebp-<br />
|code=<br />
8b<br />
}}<br />
<br />
== Logging ==<br />
{{thcrap Binhack<br />
|id=log_restore<br />
|title=Restore the game's built-in logging<br />
|addr={{thcrap_ver|ver=v0.01b|0x4075d0}}{{thcrap_ver|ver=v1.00b|0x4075c0}}<br />
|desc=Very useful for debugging.<br />
|code=e9 [log_printf]<br />
|dasm=jmp [log_printf]<br />
}}<br />
<br />
== Textbox size ==<br />
{{thcrap Binhack<br />
|id=ddc_textbox_size<br />
|title=Correct text length calculation for the DDC variety of Fairy Wars-style text boxes<br />
|addr={{thcrap_ver|ver=v0.01a|0x431590, 0x4317b0}}{{thcrap_ver|ver=v0.01b|0x430b70, 0x430d98}}<br />
|desc=In theory, this is the [[th128/Binary hacks#fw_textbox_size|same hack as for th128.]].<br />
<br />
However, th14 starts to use MMX instructions to calculate the size of the text box... and for some reason, thcrap's <tt>GetTextExtent</tt> clears out the <tt>xmm2</tt> register containing the multiplication factor, resulting a box with "length zero".<br />
<br />
After removing that unnecessary <tt>strlen()</tt>, we end up with plenty of space to read the value for <tt>xmm2</tt> back from the original, constant position in memory.<br />
<br />
This also leaves space for another fix. In case the text length calculation results in a width smaller than 28 pixels (this happens for example with Hime's "You!"), the original code would create an infinitely long text box, due to the width being treated as unsigned. Thus, we clear out <tt>eax</tt> in this case.<br />
|dasm=<br />
push ebx<br />
call [GetTextExtent]<br />
movss xmm2,dword ptr ds:[th14.4bead0]<br />
sub eax,1ch<br />
jae +3<br />
xor eax,eax<br />
nop<br />
|code=<br />
53<br />
e8 [GetTextExtent]<br />
f30f1015 {{thcrap_ver|ver=v0.01a|d0ea4b00}}{{thcrap_ver|ver=v0.01b|b8e64b00}}{{thcrap_ver|ver=v1.00a|882e4c00}}<br />
83e8 1c<br />
73 03<br />
31c0<br />
90<br />
}}<br />
{{thcrap Binhack<br />
|id=ddc_textbox_size_full<br />
|title=Correct text length calculation for the DDC variety of Fairy Wars-style text boxes<br />
|addr={{thcrap_ver|ver=v1.00a|0x4327f0, 0x4329e7}}{{thcrap_ver|ver=v1.00b|0x4327f0, 0x4329e7}}<br />
|desc=Same hack as for the trial, just using <tt>xmm1</tt> instead.<br />
|dasm=<br />
push ebx<br />
call [GetTextExtent]<br />
movss xmm1,dword ptr ds:[th14.4c2e88]<br />
sub eax,1ch<br />
jae +3<br />
xor eax,eax<br />
nop<br />
|code=<br />
53<br />
e8 [GetTextExtent]<br />
f30f100d {{thcrap_ver|ver=v1.00a|882e4c00}}{{thcrap_ver|ver=v1.00b|781a4c00}}<br />
83e8 1c<br />
73 03<br />
31c0<br />
90<br />
}}<br />
<br />
== Spells ==<br />
{{thcrap Binhack<br />
|id=spell_name_fetch<br />
|title=Prepare deferred spell name fetching<br />
|addr={{thcrap_ver|ver=v0.01a|0x41cc0b}}{{thcrap_ver|ver=v0.01b|0x41cd7b}}{{thcrap_ver|ver=v1.00a|0x41cefb}}{{thcrap_ver|ver=v1.00b|0x41cefb}}<br />
|code=<br />
8b4d 0c<br />
51<br />
31c9<br />
51<br />
51<br />
51<br />
|dasm=<br />
mov ecx, dword ptr ss:[ebp+0c]<br />
push ecx ; insert breakpoint here<br />
xor ecx<br />
push ecx<br />
push ecx<br />
push ecx<br />
}}<br />
<br />
{{thcrap Binhack<br />
|id=spell_align<br />
|title=Spell card alignment<br />
|addr={{thcrap_ver|ver=v0.01a|0x47a6f2}}{{thcrap_ver|ver=v0.01b|0x47a242}}{{thcrap_ver|ver=v1.00a|0x47dd72}}{{thcrap_ver|ver=v1.00b|0x47dc72}}<br />
|desc=Kill the <tt>strcpy</tt> (buffer overflow) and <tt>strlen</tt>, shift up/optimize part of the original code (because less code is always better), and fudge around so that it looks nice. Fairly straightforward.<br />
|dasm=<br />
mov eax, dword ptr ss:[ebp+1c]<br />
lea ebx, [eax+eax]<br />
mov eax, dword ptr ds:[esi+1c]<br />
shr eax, 0b<br />
and eax, 00000001<br />
mov dword ptr ss:[esp+14], eax<br />
push dword ptr ds:[th14.font_spell] ; spell font<br />
push dword ptr ss:[ebp+20]<br />
call [GetTextExtentForFont]<br />
add eax, 8<br />
shl eax, 1<br />
mov edx, dword ptr ds:[esi+2c]<br />
jmp short +0x1e<br />
nop (*0x1e)<br />
|code=<br />
8b45 1c<br />
8d1c00<br />
8b46 1c<br />
c1e8 0b<br />
83e0 01<br />
8944e4 14<br />
ff35 {{thcrap_ver|ver=v0.01a|3c8f4f00}}{{thcrap_ver|ver=v0.01b|209d4f00}}{{thcrap_ver|ver=v1.00a|fcf54f00}}{{thcrap_ver|ver=v1.00b|1cd64f00}}<br />
ff75 20<br />
e8 [GetTextExtentForFont]<br />
83c0 08<br />
d1e0<br />
8b56 2c<br />
eb 1e<br />
90 90 90 90 90 90 90 90<br />
90 90 90 90 90 90 90 90<br />
90 90 90 90 90 90 90 90<br />
90 90 90 90 90 90<br />
}}<br />
<br />
== Player data ==<br />
{{thcrap Binhack<br />
|id=result_spell_align<br />
|title=Remove spell "alignment" in the result screen<br />
|desc=For some reason, ZUN feels the need to do some alignment calculations based on the string length.<br />
<br />
Why.<br />
|addr={{thcrap_ver|ver=v0.01b|0x47a3ac}}{{thcrap_ver|ver=v1.00a|0x47dedc}}{{thcrap_ver|ver=v1.00b|0x47dddc}}<br />
|dasm=<br />
mov dword ptr ss:[esp+0x14], eax<br />
mov eax,dword ptr ds:[ebx+8]<br />
xor edx,edx<br />
jmp short +0x19<br />
nop (*0x19)<br />
|code=<br />
8944e4 14<br />
8b43 08<br />
31d2<br />
eb 19<br />
90 90 90 90 90<br />
90 90 90 90 90<br />
90 90 90 90 90<br />
90 90 90 90 90<br />
90 90 90 90 90<br />
}}<br />
== Music Room ==<br />
{{thcrap Binhack<br />
|id=music_title_prepare<br />
|title=Prepare music room title fetching<br />
|addr={{thcrap_ver|ver=v1.00b|0x46235d}}<br />
|desc=Oh no, a constant memory address. -.-<br />
|dasm=<br />
mov ecx,dword ptr ss:[esp+0x1c]<br />
push ecx ; insert breakpoint here<br />
xor eax,eax ; eax = theme number<br />
push eax ; ecx = theme string<br />
push eax<br />
push eax<br />
push eax<br />
push 0xffffff<br />
push esi<br />
push dword ptr ds:[th14.0x4f56cc]<br />
nop<br />
|code=<br />
8b4ce4 1c<br />
51<br />
31c0<br />
50<br />
50<br />
50<br />
50<br />
68 ffffff00<br />
56<br />
ff35 cc564f00<br />
90<br />
}}<br />
== Workaround for the broken update notification functionality in 2014-01-03 ==<br />
{{thcrap Binhack<br />
|id=thcrap_migrate_jump<br />
|title=Update notification for 2014-01-03 (jump)<br />
|addr={{thcrap_ver|ver=v1.00b|Rx87453}}<br />
|code=e9 599b0200<br />
|dasm=jmp th14.004b0fb1<br />
}}<br />
{{thcrap Binhack<br />
|id=thcrap_migrate_msg<br />
|title=Update notification for 2014-01-03 (check and message)<br />
|addr={{thcrap_ver|ver=v1.00b|Rxb0f3c}}<br />
|code=<br />
41206e65772076657273696f6e2028323031342d30312d32372920<br />
6f662074686520257320697320617661696c61626c652e0a<br />
0a<br />
49742063616e20626520646f776e6c6f616465642066726f6d0a<br />
0a<br />
09687474703a2f2f746870617463682e6e65742f<br />
50726f6a6563743a446f776e6c6f616400<br />
00<br />
<br />
e8 [PROJECT_VERSION]<br />
3d 27011420<br />
7d 17<br />
e8 [PROJECT_NAME]<br />
50<br />
68 3c0f4b00<br />
6a 40<br />
6a 00<br />
e8 [log_mboxf]<br />
83c4 10<br />
<br />
e8 6d1cfeff<br />
e9 7a64fdff<br />
|dasm=<br />
"A new version (2014-01-27) "<br />
"of the %s is available.\n"<br />
"\n"<br />
"It can be downloaded from\n"<br />
"\n"<br />
" http: //thpatch.net/"<br />
"Project:Download"<br />
<br />
<br />
call [PROJECT_VERSION]<br />
cmp eax, 0x20140127<br />
jge short +17<br />
call [PROJECT_NAME]<br />
push eax<br />
push th14.004b0f3c<br />
push 40<br />
push 0<br />
call [log_mboxf]<br />
add esp, 10<br />
; Original code below<br />
call th14.00492c46<br />
jmp th14.00487458<br />
}}<br />
{{SubpageCategory}}</div>
Egor
https://www.thpatch.net/w/index.php?title=Th07/Binary_hacks&diff=2512191
Th07/Binary hacks
2023-09-11T02:37:27Z
<p>Egor: add Github note and Subpage category</p>
<hr />
<div>{{GitHub note}}<br />
{{Locked patch page note}}<br />
=== Bugs ===<br />
{{thcrap Binhack<br />
|id=sprintf_call<br />
|title=Fix buffer overflows (safe sprintf)<br />
|addr={{thcrap_ver|ver=v1.00b|0x4542f1, 0x4543ee, 0x4545ee}}<br />
|dasm=<br />
push eax<br />
call [strings_vsprintf]<br />
mov dword ptr ss:[ebp-0x50],eax<br />
|code=<br />
50<br />
e8 [strings_vsprintf]<br />
8945 b0<br />
}}<br />
<br />
{{thcrap Binhack<br />
|id=sprintf_rep_eax<br />
|title=Safe sprintf (replace EAX)<br />
|addr={{thcrap_ver|ver=v1.00b|0x45431e, 0x454527, 0x45472d}}<br />
|desc=<br />
|dasm=<br />
mov eax, [ebp-0x50]<br />
|code=<br />
8b45 b0<br />
}}<br />
<br />
{{thcrap Binhack<br />
|id=sprintf_rep_ecx<br />
|title=Safe sprintf (replace ECX)<br />
|addr={{thcrap_ver|ver=v1.00b|0x454493}}<br />
|desc=<br />
|dasm=<br />
mov ecx, [ebp-0x50]<br />
|code=<br />
8b4d b0<br />
}}<br />
<br />
=== Text alignment ===<br />
{{thcrap Binhack<br />
|id=menu_desc_align<br />
|title=Menu description alignment<br />
|addr={{thcrap_ver|ver=v1.00b|0x454693}}<br />
|desc=Optimizing some stuff, we end up with 64 bytes to remove.<br />
|dasm=<br />
mov edx,dword ptr ss:[ebp+0x0c]<br />
mov edx,dword ptr ds:[edx+0x1e4]<br />
fld dword ptr ds:[edx+0x30]<br />
fmul dword ptr ds:[edx+0x34]<br />
fdiv dword ptr ds:[th07.498A70]<br />
fadd dword ptr ds:[edx+0x4]<br />
push dword ptr ss:[ebp-0x50]<br />
call [GetTextExtent]<br />
add eax, 4<br />
shr eax, 1<br />
push eax<br />
fild dword ptr ss:[esp]<br />
pop eax<br />
mov ecx,dword ptr ss:[ebp+0x0c]<br />
mov edx,dword ptr ds:[ecx+0x1e4]<br />
fmul dword ptr ds:[edx+0x34]<br />
jmp short +0x3e<br />
nop (*0x3e)<br />
|code=<br />
8b55 0c<br />
8b92 e4010000<br />
d942 30<br />
d84a 34<br />
d835 708a4900<br />
d842 04<br />
ff75 b0<br />
e8 [GetTextExtent]<br />
83c0 04<br />
d1e8<br />
50<br />
db04e4<br />
58<br />
8b4d 0c<br />
8b91 e4010000<br />
d84a 34<br />
eb 3e<br />
90 90 90 90 90 90 90 90<br />
90 90 90 90 90 90 90 90<br />
90 90 90 90 90 90 90 90<br />
90 90 90 90 90 90 90 90<br />
90 90 90 90 90 90 90 90<br />
90 90 90 90 90 90 90 90<br />
90 90 90 90 90 90 90 90<br />
90 90 90 90 90 90<br />
}}<br />
<br />
{{thcrap Binhack<br />
|id=boss_title_align<br />
|title=Boss title alignment<br />
|addr={{thcrap_ver|ver=v1.00b|0x4544eb}}<br />
|desc=<br />
Same as the [[th06/Binary hacks#boss_title_align|th06 version]], but NOPs out an additional FPU division at the end.<br />
|dasm=<br />
mov eax, [ebp-0x50]<br />
push eax<br />
call [GetTextExtent]<br />
add eax, 4<br />
push eax<br />
fild dword ptr ss:[esp]<br />
pop eax<br />
nop (*6)<br />
|code=<br />
8b 45 b0<br />
50<br />
e8 [GetTextExtent]<br />
83 c0 04<br />
50<br />
3e db 04 e4<br />
58<br />
90 90 90 90 90 90<br />
}}<br />
== Spell cards ==<br />
{{thcrap Binhack<br />
|id=spell_loop<br />
|title=Rewrite spell card name decryption loop<br />
|desc=... in order to squeeze in an instruction to fetch the spell card number from the stack.<br />
<br />
Because the game does not do this until it has long printed the spell card name.<br />
<br />
This is possible because the code, luckily, uses only three registers in the original. This hack replaces <tt>[ebp-4]</tt> with <tt>ESI</tt>, which is unused otherwise.<br />
<br />
This does not affect the result screen, though.<br />
|addr={{thcrap_ver|ver=v1.00b|0x40fcb1}}<br />
|code=<br />
31f6<br />
eb 07<br />
89f0<br />
83c0 01<br />
89c6<br />
83fe 30<br />
73 15<br />
89f1<br />
0fb6540d cc<br />
81f2 aa000000<br />
89f0<br />
885405 cc<br />
eb df<br />
8d4d cc<br />
90<br />
8b55 9c<br />
0fbf42 0e<br />
9090909090<br />
51<br />
|dasm=<br />
xor esi, esi<br />
jmp short +7h<br />
mov eax, esi<br />
add eax, 1<br />
mov esi, eax<br />
cmp esi, 30<br />
jae +15h<br />
mov ecx, esi<br />
movzx edx, byte ptr ss:[ecx+ebp-34]<br />
xor edx, aah<br />
mov eax,esi<br />
mov byte ptr ss:[eax+ebp-34], dl<br />
jmp short -21h<br />
lea ecx, [ebp-34] ; ECX = decrypted spell card name<br />
nop ; don't push it yet, though<br />
mov edx, dword ptr ss:[ebp-64]<br />
movsx eax, word ptr ds:[edx+0x0e] ; EAX = spell card number<br />
nop (*5) ; "Insert breakpoint here" - write pointer to translated spell name to ECX<br />
push ecx ; And away we go<br />
}}<br />
== Music Room ==<br />
{{thcrap Binhack<br />
|id=music_cmt_prepare<br />
|title=Prepare Music Room comment line number fetching<br />
|addr={{thcrap_ver|ver=v1.00b|0x43aa32}}<br />
|desc=<br />
So, in order to make enough room for the <tt>music_cmt#line_num</tt> breakpoint, we would need to somehow scrape together one more byte to be able to put it at the only position possible...<br />
<br />
Or we simply remove the initial jump to the looping condition, which would target to the final byte of the breakpoint call. Since this would skip the first loop (<tt>[ebp-8] == 0</tt>), we have to start out with (<tt>[ebp-8] == -1</tt>) instead... and this assignment just happens to fit into the space we're given.<br />
<br />
This is probably the most beautiful binary hack ever.<br />
|dasm=<br />
xor eax,eax<br />
dec eax<br />
mov dword ptr ss:[ebp-8],eax<br />
|code=<br />
31c0<br />
48<br />
8945 f8<br />
}}<br />
{{thcrap Binhack<br />
|id=music_cmt_prepare_first<br />
|title=Prepare Music Room comment line number fetching (first comment)<br />
|addr={{thcrap_ver|ver=v1.00b|0x43b30a}}<br />
|dasm=<br />
xor eax,eax<br />
dec eax<br />
mov dword ptr ss:[ebp-4],eax<br />
|code=<br />
31c0<br />
48<br />
8945 fc<br />
}}<br />
== Compatibility ==<br />
{{thcrap Binhack<br />
|id=unpatch_result_spell<br />
|title=Remove English patch spell translation lookup in the Result screen<br />
|addr={{thcrap_ver|ver=v1.00b|Rx467ea}}<br />
|code=<br />
8b45 fc<br />
6bc0 78<br />
05 b3626200<br />
|dasm=<br />
mov eax,dword ptr ss:[ebp-4]<br />
imul eax,eax,78<br />
add eax, 0x6262b3<br />
}}<br />
{{SubpageCategory}}</div>
Egor
https://www.thpatch.net/w/index.php?title=Th09/Binary_hacks&diff=2512190
Th09/Binary hacks
2023-09-11T02:37:26Z
<p>Egor: add Github note and Subpage category</p>
<hr />
<div>{{GitHub note}}<br />
{{Locked patch page note}}<br />
== Bugs ==<br />
{{thcrap Binhack<br />
|id=sprintf_call_1<br />
|title=Safe sprintf (first call)<br />
|addr={{thcrap_ver|ver=v1.50a|0x43bdde}}<br />
|dasm=<br />
push eax<br />
call [strings_vsprintf]<br />
mov dword ptr ss:[ebp-0x80],eax<br />
|code=<br />
50<br />
e8 [strings_vsprintf]<br />
8945 80<br />
}}<br />
{{thcrap Binhack<br />
|id=sprintf_call_2<br />
|title=Safe sprintf (second call)<br />
|addr={{thcrap_ver|ver=v1.50a|0x43be7d}}<br />
|dasm=<br />
push eax<br />
call [strings_vsprintf]<br />
mov dword ptr ss:[ebp-0x48],eax<br />
|code=<br />
50<br />
e8 [strings_vsprintf]<br />
8945 b8<br />
}}<br />
{{thcrap Binhack<br />
|id=sprintf_rep<br />
|title=Safe sprintf (replace pointer)<br />
|addr={{thcrap_ver|ver=v1.50a|0x43be01, 0x43beb2}}<br />
|dasm=<br />
mov ???,dword ptr ss:[ebp-<br />
|code=<br />
8b<br />
}}<br />
<br />
== Music Room ==<br />
{{thcrap Binhack<br />
|id=music_title_prepare<br />
|title=Prepare Music Room title parameter fetching<br />
|addr={{thcrap_ver|ver=v1.50a|0x42748a}}<br />
|desc=<br />
th09's code optimization certainly was better than those of earlier games, but there's still room for improvement. The original code calculates the same address twice. By optimizing this calculation and spilling the result to the stack, we save 13 bytes - enough to load both the track string and the track number into registers.<br />
|dasm=<br />
lea ecx,[ecx+edi+0x1a3dc] ; we'll need this address twice<br />
push ecx ; spill to stack<br />
push ebx<br />
push ecx<br />
mov ecx,dword ptr ds:[esi+0x11b90] ; yup, this is a function parameter<br />
call th09.00403e00<br />
pop ecx ; recover our address to the register expected later<br />
mov eax,dword ptr ss:[ebp-0x14]<br />
cmp byte ptr ds:[ebx+eax],0<br />
je short th09.004274d4<br />
lea edx,[ebx-0x9f] ; EDX = track number<br />
mov eax,dword ptr ss:[ebp-0x0c] ; EAX = string<br />
push eax ; insert breakpoint here<br />
push 0x302080<br />
push 0x0d0eff<br />
nop (*6)<br />
|code=<br />
8d8c0f dca30100<br />
51<br />
53<br />
51<br />
8b8e 901b0100<br />
e8 61c9fdff<br />
59<br />
8b45 ec<br />
803c18 00<br />
74 2b<br />
8d93 61ffffff<br />
8b45 f4<br />
50<br />
68 80203000<br />
68 ffe0d000<br />
90 90 90 90 90 90<br />
}}<br />
{{thcrap Binhack<br />
|id=music_cmt_rewrite<br />
|title=Rewrite Music Room comment render calls<br />
|addr={{thcrap_ver|ver=v1.50a|0x426e2a}}<br />
|desc=<br />
Because it would have been completely impossible to add music comment breakpoints to the original function with its [https://twitter.com/Nmlgc/status/383333816959381506 8 case statements, one for each comment line]. Turns out that all necessary structure offsets can be easily calculated and the switch statement isn't necessary at all. This removes a total of '''391 bytes''' from the function!<br />
|code=<br />
d1e8<br />
72 06<br />
48<br />
83f8 07<br />
76 05<br />
e9 ee010000<br />
69f8 a4020000<br />
c68437 029f0100 01<br />
8dbc37 049d0100<br />
8b9e 741b0100<br />
80bb ac814a00 00<br />
74 19<br />
6bd0 42<br />
69cb 92020000<br />
01ca<br />
8d8c32 b6c90000<br />
9090909090<br />
eb 07<br />
8b0c85 bc1d4a00<br />
89f8<br />
51<br />
31db<br />
e9 87010000<br />
90909090909090909090909090909090<br />
90909090909090909090909090909090<br />
90909090909090909090909090909090<br />
90909090909090909090909090909090<br />
90909090909090909090909090909090<br />
90909090909090909090909090909090<br />
90909090909090909090909090909090<br />
90909090909090909090909090909090<br />
90909090909090909090909090909090<br />
90909090909090909090909090909090<br />
90909090909090909090909090909090<br />
90909090909090909090909090909090<br />
90909090909090909090909090909090<br />
90909090909090909090909090909090<br />
90909090909090909090909090909090<br />
90909090909090909090909090909090<br />
90909090909090909090909090909090<br />
90909090909090909090909090909090<br />
90909090909090909090909090909090<br />
90909090909090909090909090909090<br />
90909090909090909090909090909090<br />
90909090909090909090909090909090<br />
90909090909090909090909090909090<br />
90909090909090909090909090909090<br />
90909090909090<br />
|dasm=<br />
shr eax,1 ; frame / 2<br />
jb short +6 ; Only display a line on even frames<br />
dec eax ; EAX = line number<br />
cmp eax,7 ; maximum of 8 lines<br />
jbe short +5<br />
jmp +0x1ee ; don't print anything<br />
imul edi,eax,0x2a4 ; prepare offset to something<br />
mov byte ptr ds:[esi+edi+0x19f02],1 ; set something to 1<br />
lea edi,[esi+edi+0x19d04] ; EDI = pointer to something<br />
mov ebx,dword ptr ds:[esi+0x11b74] ; EBX = track number<br />
cmp byte ptr ds:[ebx+th09.music_unlock_table],0 ; Unlocked?<br />
je short +0x19 ; No<br />
imul edx,eax,0x42 ; Yes; prepare line offset<br />
imul ecx,ebx,0x292 ; prepare track offset<br />
add edx,ecx<br />
lea ecx,[esi+edx+0x0c9b6] ; ECX = original string<br />
nop (*5) ; insert breakpoint here<br />
jmp short +7<br />
mov ecx,dword ptr ds:[eax*4+th09.music_spoiler_table] ; ECX = spoiler message<br />
mov eax,edi ; EAX = pointer to something<br />
push ecx ; Push string<br />
xor ebx,ebx ; reset EBX<br />
jmp +0x187<br />
nop (*0x187)<br />
}}<br />
{{SubpageCategory}}</div>
Egor
https://www.thpatch.net/w/index.php?title=Th06/Binary_hacks&diff=2512189
Th06/Binary hacks
2023-09-11T02:37:25Z
<p>Egor: add Github note and Subpage category</p>
<hr />
<div>{{GitHub note}}<br />
{{Locked patch page note}}<br />
== Bugs ==<br />
{{thcrap Binhack<br />
|id=buffer_overflow_rem<br />
|title=Fix buffer overflows (remove copy)<br />
|addr={{thcrap_ver|ver=v1.02h|0x434b85, 0x434c83, 0x434e63}}<br />
|desc=<br />
This is caused by needlessly copying the string argument to a local variable limited to 64 bytes. If the line exceeds this buffer, the game crashes.<br />
<br />
We fix it by removing the copy function and simply passing the pointer to the original text data.<br />
|dasm=<br />
jmp short +19h<br />
nop<br />
|code=<br />
eb 19<br />
90<br />
}}<br />
<br />
{{thcrap Binhack<br />
|id=buffer_overflow_rep_eax<br />
|title=Fix buffer overflows (replace EAX)<br />
|addr={{thcrap_ver|ver=v1.02h|0x434ba0, 0x434d8e, 0x434f74}}<br />
|dasm=<br />
mov eax, [ebp+18]<br />
|code=<br />
8b45 18<br />
}}<br />
<br />
{{thcrap Binhack<br />
|id=buffer_overflow_rep_ecx<br />
|title=Fix buffer overflows (replace ECX)<br />
|addr={{thcrap_ver|ver=v1.02h|0x434d17, 0x434ef7}}<br />
|dasm=<br />
mov ecx, [ebp+18]<br />
|code=<br />
8b4d 18<br />
}}<br />
<br />
== Text alignment ==<br />
{{thcrap Binhack<br />
|id=boss_title_align<br />
|title=Boss title alignment<br />
|addr={{thcrap_ver|ver=v1.02h|0x434d72}}<br />
|desc=<br />
* Call GetTextExtent on string to render<br />
* Add 4 to compensate for multiple TextOut layers<br />
* Convert to float<br />
|dasm=<br />
mov eax, [ebp+18]<br />
push eax<br />
call [GetTextExtent]<br />
add eax, 4<br />
push eax<br />
fild dword ptr ds:[esp]<br />
pop eax<br />
|code=<br />
8b 45 18<br />
50<br />
e8 [GetTextExtent]<br />
83 c0 04<br />
50<br />
3e db 04 e4<br />
58<br />
}}<br />
<br />
{{thcrap Binhack<br />
|id=spell_align<br />
|title=Spell card and bomb text alignment<br />
|addr={{thcrap_ver|ver=v1.02h|0x417b92, 0x417cc8}}<br />
|desc=The English patch has its own hackish text length calculation, replacing the original string length loop before the FPU operations. We don't need that loop anyway, so we jump over it.<br />
<br />
The rest is the same as above, just with different stack addresses and a jump over nonsensical calculations at the end.<br />
And yes, this is binarily identical for player bombs and enemy spells!<br />
|dasm=<br />
jmp +25h<br />
nop (*25h)<br />
<br />
<br />
mov eax, [ebp+c]<br />
push eax<br />
call [GetTextExtent]<br />
push eax<br />
fild dword ptr ds:[esp]<br />
pop eax<br />
jmp +0bh<br />
|code=<br />
eb 25<br />
90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90<br />
90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90<br />
90 90 90 90 90<br />
8b 45 0c<br />
50<br />
e8 [GetTextExtent]<br />
50<br />
3e db 04 e4<br />
58<br />
eb 0b<br />
}}<br />
<br />
{{thcrap Binhack<br />
|id=stage_title_align<br />
|title=Stage title alignment<br />
|addr={{thcrap_ver|ver=v1.02h|0x434f3c}}<br />
|desc=Same, except that we divide the width by 2 here.<br />
|dasm=<br />
mov eax, [ebp+18]<br />
push eax<br />
call [GetTextExtent]<br />
sar eax, 1<br />
add eax, 1<br />
push eax<br />
fild dword ptr ds:[esp]<br />
pop eax<br />
jmp short +18<br />
|code=<br />
8b 45 18<br />
50<br />
e8 [GetTextExtent]<br />
d1 f8<br />
83 c0 04<br />
50<br />
3e db 04 e4<br />
58<br />
eb 18<br />
}}<br />
<br />
{{thcrap Binhack<br />
|id=spell_align_sillyness<br />
|addr={{thcrap_ver|ver=v1.02h|0x41affc, 0x41b0b0}}<br />
|title=Fix spell align sillyness<br />
|desc=<br />
NOPing out a multiplication with 15 followed by a division by 16 correctly aligns spell card names as expected.<br />
<br />
Why ZUN did that is beyond me.<br />
|dasm=<br />
nop (*0bh)<br />
<br />
|code =<br />
90 90 90 90 90 90<br />
90 90 90 90 90 90<br />
}}<br />
<br />
== Spell cards ==<br />
{{thcrap Binhack<br />
|id=spell_prepare<br />
|title=Prepare ECL instruction register for spell ID fetching<br />
|desc=Loads ESI with a pointer to the ECL instruction structure and reorders a couple of assignments to not break the code.<br />
<br />
ESI is not read or modified between this hack and <tt>spell_fetch_id</tt> where we need it.<br />
|addr={{thcrap_ver|ver=v1.02h|0x407509}}<br />
|code=<br />
8b75 e4<br />
89f1<br />
83c1 0c<br />
894d e8<br />
0fbf46 04<br />
90<br />
|dasm=<br />
mov esi, dword ptr ss:[ebp-1c]<br />
mov ecx, esi<br />
add ecx, 0ch<br />
mov dword ptr ss:[ebp-18], ecx<br />
movsx eax, word ptr ds:[esi+4]<br />
nop<br />
}}<br />
{{thcrap Binhack<br />
|id=spell_fetch_id<br />
|title=Fetch spell ID<br />
|desc=With the ECL instruction structure in ESI, we can optimize the element accesses, and end up with just enough space to fetch the spell card number into ECX.<br />
<br />
(This crashes the game without <tt>spell_prepare</tt> applied, maybe we should do something about that.)<br />
|addr={{thcrap_ver|ver=v1.02h|0x409622}}<br />
|code=<br />
0fbf4e 0e<br />
89f0<br />
83c0 10<br />
50<br />
0fbf56 0c<br />
|dasm=<br />
movsx ecx, word ptr ds:[esi+0e] ; ECX = spell card number<br />
mov eax, esi<br />
add eax, 10 ; EAX = spell card name<br />
push eax ; insert breakpoint here<br />
movsx edx, word ptr ds:[esi+0c] ; EDX = face ID<br />
}}<br />
== Compatibility ==<br />
{{thcrap Binhack<br />
|id=unpatch_result_spell<br />
|title=Remove English patch spell translation lookup in the Result screen<br />
|desc=Necessary because we wouldn't be able to set any spell breakpoint, since the addresses we'd need differ between the original and the English patch.<br />
<br />
And since we have to do something about it anyway, we also keep the spell number in EAX to save one breakpoint.<br />
|addr={{thcrap_ver|ver=v1.02h|0x42e2a9}}<br />
|code=<br />
89c1<br />
c1e1 06<br />
81c1 e8bc6900<br />
51<br />
6a 00<br />
68 ffffff00<br />
|dasm=<br />
mov ecx,eax<br />
shl ecx,6<br />
add ecx,0x69bce8<br />
push ecx<br />
push 0<br />
push 0xffffff<br />
}}<br />
<br />
{{thcrap Game|th06_custom}}<br />
{{thcrap Binhack<br />
|id=translate_padinput<br />
|title=Translate pad input check<br />
|desc=<br />
|addr={{thcrap_ver|ver=v0.13|Rx16e1}}{{thcrap_ver|ver=v1.02h|Rx16fb}}<br />
|code=<br />
89c3<br />
6a 00<br />
e8 [strings_strclr]<br />
<br />
<br />
f6c3 10<br />
74 0e<br />
68 dc914000<br />
6a 00<br />
e8 [strings_strcat]<br />
59<br />
59<br />
<br />
<br />
f6c3 20<br />
74 0e<br />
68 d8914000<br />
6a 00<br />
e8 [strings_strcat]<br />
59<br />
59<br />
<br />
<br />
f6c3 40<br />
74 0e<br />
68 d4914000<br />
6a 00<br />
e8 [strings_strcat]<br />
59<br />
59<br />
<br />
<br />
f6c3 80<br />
74 0e<br />
68 d0914000<br />
6a 00<br />
e8 [strings_strcat]<br />
59<br />
59<br />
<br />
eb 1a<br />
90 90 90 90 90 90<br />
90 90 90 90 90 90<br />
90 90 90 90 90 90<br />
90 90 90 90 90 90<br />
90 90<br />
|dasm=<br />
mov ebx,eax<br />
push 0<br />
call [strings_strclr]<br />
<br />
; Up<br />
test bl,10<br />
je short +0xe<br />
push offset custom.004091DC<br />
push 0<br />
call [strings_strcat]<br />
pop ecx<br />
pop ecx<br />
<br />
; Down<br />
test bl,20<br />
je short +0xe<br />
push offset custom.004091D8<br />
push 0<br />
call [strings_strcat]<br />
pop ecx<br />
pop ecx<br />
<br />
; Left<br />
test bl,40<br />
je +0xe<br />
push offset custom.004091D4<br />
push 0<br />
call [strings_strcat]<br />
pop ecx<br />
pop ecx<br />
<br />
; Right<br />
test bl,80<br />
je +0xe<br />
push offset custom.004091D0<br />
push 0<br />
call [strings_strcat]<br />
pop ecx<br />
pop ecx<br />
<br />
jmp short +0x1a<br />
nop (*0x1a)<br />
}}<br />
{{SubpageCategory}}</div>
Egor
https://www.thpatch.net/w/index.php?title=Alcostg/Binary_hacks&diff=2512188
Alcostg/Binary hacks
2023-09-11T02:37:24Z
<p>Egor: add Github note and Subpage category</p>
<hr />
<div>{{GitHub note}}<br />
{{Locked patch page note}}<br />
== Bugs ==<br />
{{thcrap Binhack<br />
|id=overflow_spell_rep<br />
|title=Fix buffer overflow in spell name rendering (replace pointer)<br />
|desc=... taking advantage of the fact that <tt>EBX</tt> still contains the original pointer.<br />
|addr={{thcrap_ver|ver=v1.00a|0x443c67}}<br />
|dasm=<br />
nop (*4)<br />
|code=<br />
90 90 90 90<br />
}}<br />
== Spells ==<br />
{{thcrap Binhack<br />
|id=spell_align<br />
|title=Spell card alignment<br />
|desc=Once again, everything in one hack.<br />
|addr={{thcrap_ver|ver=v1.00a|0x443bf9}}<br />
|code=<br />
8b9ce4 a0000000<br />
8b8e 64030000<br />
8b7e 70<br />
d1e9<br />
83e1 01<br />
51<br />
ffb4e4 a0000000<br />
ff35 00e24800<br />
53<br />
e8 [GetTextExtentForFont]<br />
83c0 04<br />
50<br />
db04e4<br />
58<br />
eb 24<br />
90 90 90 90 90 90 90 90<br />
90 90 90 90 90 90 90 90<br />
90 90 90 90 90 90 90 90<br />
90 90 90 90 90 90 90 90<br />
85c0<br />
|dasm=<br />
mov ebx,dword ptr ss:[esp+0A0] ; we'll need this twice<br />
mov ecx,dword ptr ds:[esi+364]<br />
mov edi,dword ptr ds:[esi+70]<br />
shr ecx,1<br />
and ecx,00000001<br />
push ecx<br />
push dword ptr ss:[esp+0A0] ; not EBX!<br />
push dword ptr ds:[alcostg.48e200] ; spell font<br />
push ebx<br />
call [GetTextExtentForFont]<br />
add eax,4<br />
push eax<br />
fild dword ptr ss:[esp]<br />
pop eax<br />
jmp short +0x24<br />
nop (*0x24)<br />
<br />
<br />
<br />
test eax,eax<br />
}}<br />
{{SubpageCategory}}</div>
Egor
https://www.thpatch.net/w/index.php?title=Th095/Binary_hacks&diff=2512187
Th095/Binary hacks
2023-09-11T02:37:23Z
<p>Egor: add Github note and Subpage category</p>
<hr />
<div>{{GitHub note}}<br />
{{Locked patch page note}}<br />
== Bugs ==<br />
{{thcrap Binhack<br />
|id=overflow_spell_menu_rep<br />
|title=Fix buffer overflow in menu spell name rendering (replace pointer)<br />
|addr={{thcrap_ver|ver=v1.02a|0x44406b}}<br />
|dasm=<br />
mov edx, [ebp+0x18]<br />
|code=<br />
8b55 18<br />
}}<br />
{{thcrap Binhack<br />
|id=overflow_spell_ingame_rep<br />
|title=Fix buffer overflow in in-game spell name rendering (replace pointer)<br />
|addr={{thcrap_ver|ver=v1.02a|0x443ef7}}<br />
|dasm=<br />
push ebx<br />
nop (*6)<br />
|code=<br />
53<br />
90 90 90 90 90 90<br />
}}<br />
<br />
== Spells ==<br />
=== Spell ID fetching ===<br />
In this game, this needs to be done separately for every menu cursor move.<br />
<br />
One assignment optimization, and we end up with more than enough space to calculate the spell ID in the same manner as th125 does on its own.<br />
<br />
<tt>menu_entry</tt>, <tt>menu_scene</tt> and <tt>menu_level</tt> differ only in the registers used, <tt>replay</tt> needs to take a slightly different approach.<br />
<br />
{{thcrap Binhack<br />
|id=spell_fetch_id_menu_entry<br />
|title=Fetch spell card number (menu entry)<br />
|addr={{thcrap_ver|ver=v1.02a|0x44897a}}<br />
|code=<br />
89d0<br />
8b8d f4feffff<br />
8d1489<br />
8d1450<br />
6bc0 30<br />
90 90 90 90<br />
|dasm=<br />
mov eax, edx ; edx = scene<br />
mov ecx, dword ptr ss:[ebp-0x10c] ; ecx = level<br />
lea edx,[ecx*4+ecx]<br />
lea edx,[edx*2+eax]<br />
imul eax, eax, 0x30 ; insert breakpoint here<br />
nop (*4)<br />
}}<br />
<br />
{{thcrap Binhack<br />
|id=spell_fetch_id_menu_level<br />
|title=Fetch spell card number (level switch)<br />
|addr={{thcrap_ver|ver=v1.02a|0x449ee6}}<br />
|code=<br />
89c1<br />
8b95 dcfdffff<br />
8d0492<br />
8d0441<br />
6bc9 30<br />
90 90 90 90<br />
|dasm=<br />
mov ecx, eax ; ecx = scene<br />
mov edx, dword ptr ss:[ebp-0x224] ; edx = level<br />
lea eax,[edx*4+edx] <br />
lea ecx,[eax*2+ecx] <br />
imul ecx, ecx, 0x30 ; insert breakpoint here<br />
nop (*4)<br />
}}<br />
<br />
{{thcrap Binhack<br />
|id=spell_fetch_id_menu_scene<br />
|title=Fetch spell card number (scene switch)<br />
|addr={{thcrap_ver|ver=v1.02a|0x44a965}}<br />
|code=<br />
89ca<br />
8b85 40fdffff<br />
8d0c80<br />
8d0c4a<br />
6bd2 30<br />
90 90 90 90<br />
|dasm=<br />
mov edx, ecx ; edx = scene<br />
mov eax, dword ptr ss:[ebp-0x2c0] ; eax = level<br />
lea ecx,[eax*4+eax]<br />
lea ecx,[ecx*2+edx]<br />
imul edx, edx, 0x30 ; insert breakpoint here<br />
nop (*4)<br />
}}<br />
<br />
{{thcrap Binhack<br />
|id=spell_fetch_id_menu_replay<br />
|title=Fetch spell card number (replay)<br />
|addr={{thcrap_ver|ver=v1.02a|0x434474}}<br />
|code=<br />
8b5d ec<br />
8b43 20<br />
0fbe48 02<br />
0fbe50 03<br />
8d1c89<br />
8d1c5a<br />
|dasm=<br />
mov ebx, dword ptr ss:[ebp-0x14]<br />
mov eax, dword ptr ss:[eax+0x20]<br />
movsx ecx, byte ptr ds:[eax+0x2]<br />
movsx edx, byte ptr ds:[eax+0x3]<br />
lea ebx, [ecx*4+ecx]<br />
lea ebx, [ebx*2+edx]<br />
; insert breakpoint here<br />
}}<br />
=== Alignment ===<br />
{{thcrap Binhack<br />
|id=spell_align_menu<br />
|title=Spell card alignment (menu)<br />
|desc=106 bytes removed from the original function, awesome! And yes, I insist on shipping 104 (+2) NOPs, because large-scale code destruction is both satisfying ''and'' clarifying for other hackers. ☺<br />
|addr={{thcrap_ver|ver=v1.02a|0x443fb0}}<br />
|code=<br />
8b55 0c<br />
8b82 44020000<br />
d940 34<br />
d848 38<br />
d835 38534900<br />
d840 08<br />
ff35 b0444c00<br />
ff75 18<br />
e8 [GetTextExtentForFont]<br />
d1e8<br />
50<br />
db04e4<br />
58<br />
eb 68<br />
90 90 90 90 90 90 90 90 90 90 90 90 90 90 90<br />
90 90 90 90 90 90 90 90 90 90 90 90 90 90 90<br />
90 90 90 90 90 90 90 90 90 90 90 90 90 90 90<br />
90 90 90 90 90 90 90 90 90 90 90 90 90 90 90<br />
90 90 90 90 90 90 90 90 90 90 90 90 90 90 90<br />
90 90 90 90 90 90 90 90 90 90 90 90 90 90 90<br />
90 90 90 90 90 90 90 90<br />
|dasm=<br />
mov edx,dword ptr ss:[ebp+0C]<br />
mov eax,dword ptr ds:[edx+244]<br />
fld dword ptr ds:[eax+34]<br />
fmul dword ptr ds:[eax+38]<br />
fdiv dword ptr ds:[th095.495338]<br />
fadd dword ptr ds:[eax+8]<br />
push dword ptr ds:[th095.4c44b0] ; spell font<br />
push dword ptr ss:[ebp+18]<br />
call [GetTextExtentForFont]<br />
shr eax,1 ; center alignment<br />
push eax<br />
fild dword ptr ss:[esp]<br />
pop eax<br />
jmp short + 0x68<br />
nop (*0x68)<br />
}}<br />
{{thcrap Binhack<br />
|id=spell_align<br />
|title=Spell card alignment (in-game)<br />
|desc=The massive code destruction continues, this time with a whopping '''159 bytes''' removed from the original function.<br />
|addr={{thcrap_ver|ver=v1.02a|0x443e0f}}<br />
|code=<br />
8b55 0c<br />
8b82 44020000<br />
d940 34<br />
d848 38<br />
d840 08<br />
8b5d 18<br />
ff35 b0444c00<br />
53<br />
e8 [GetTextExtentForFont]<br />
83c0 04<br />
50<br />
db04e4<br />
58<br />
e9 96000000<br />
90 90 90 90 90 90 90 90 90 90 90 90 90 90 90<br />
90 90 90 90 90 90 90 90 90 90 90 90 90 90 90<br />
90 90 90 90 90 90 90 90 90 90 90 90 90 90 90<br />
90 90 90 90 90 90 90 90 90 90 90 90 90 90 90<br />
90 90 90 90 90 90 90 90 90 90 90 90 90 90 90<br />
90 90 90 90 90 90 90 90 90 90 90 90 90 90 90<br />
90 90 90 90 90 90 90 90 90 90 90 90 90 90 90<br />
90 90 90 90 90 90 90 90 90 90 90 90 90 90 90<br />
90 90 90 90 90 90 90 90 90 90 90 90 90 90 90<br />
90 90 90 90 90 90<br />
|dasm=<br />
mov edx,dword ptr ss:[ebp+0C]<br />
mov eax,dword ptr ds:[edx+244]<br />
fld dword ptr ds:[eax+34]<br />
fmul dword ptr ds:[eax+38]<br />
fadd dword ptr ds:[eax+8]<br />
mov ebx,dword ptr ss:[ebp+18]<br />
push dword ptr ds:[th095.0x4c44b0] ; spell font<br />
push ebx<br />
call [GetTextExtentForFont]<br />
add eax,4<br />
push eax<br />
fild dword ptr ss:[esp]<br />
pop eax<br />
jmp +0x96<br />
nop (*0x96)<br />
}}<br />
== Music Room ==<br />
{{thcrap Binhack<br />
|id=music_cmt_prepare<br />
|title=Prepare Music Room comment parameter fetching<br />
|addr={{thcrap_ver|ver=v1.02a|0x4515f0}}<br />
|desc=<br />
Three breakpoints, one for track number, line number and string each, are just too much. So let's rewrite this to have all of these values in registers at one place.<br />
|dasm=<br />
mov ecx,eax ; We start out with the track number in EAX<br />
shl ecx,9<br />
lea edx,[ecx+edx+2000] ; EAX = track string buffer<br />
mov ecx,dword ptr ss:[ebp-0x24] ; ECX = line number<br />
shl ecx,6<br />
add edx,ecx ; EDX += line string offset<br />
mov ecx,dword ptr ss:[ebp-0x24] ; ECX = line number (again, for breakpoint)<br />
push edx ; insert breakpoint here<br />
nop (*7)<br />
|code=<br />
89c1<br />
c1e1 09<br />
8d940a 00200000<br />
8b4d dc<br />
c1e1 06<br />
01ca<br />
8b4d dc<br />
52<br />
90 90 90 90 90 90 90<br />
}}<br />
== Compatibility ==<br />
{{thcrap Binhack<br />
|id=unpatch_font_small<br />
|title=Reset English patch small font size<br />
|addr={{thcrap_ver|ver=v1.02a|0x41c7f3}}<br />
|dasm=<br />
push 0<br />
push 1e<br />
|code=<br />
6a 00<br />
6a 1e<br />
}}<br />
{{thcrap Binhack<br />
|id=unpatch_spell_scale<br />
|title=Reset English patch spell scaling thingy<br />
|desc=The English patch does something to make spell titles look bad.<br />
<br />
This undoes said "something".<br />
<br />
Was too lazy to research exactly what this is.<br />
|addr={{thcrap_ver|ver=v1.02a|0x443ded, 0x443f97}}<br />
|dasm=<br />
??<br />
|code=<br />
0f<br />
}}<br />
{{SubpageCategory}}</div>
Egor
https://www.thpatch.net/w/index.php?title=Th13/Binary_hacks&diff=2512186
Th13/Binary hacks
2023-09-11T02:37:21Z
<p>Egor: add Github note and Subpage category</p>
<hr />
<div>{{GitHub note}}<br />
{{Locked patch page note}}<br />
== Bugs ==<br />
{{thcrap Binhack<br />
|id=sprintf_call_1<br />
|title=Safe sprintf (call #1)<br />
|addr={{thcrap_ver|ver=v1.00c|0x46ea5f}}<br />
|dasm=<br />
push eax<br />
call [strings_vsprintf]<br />
mov dword ptr ss:[ebp-0x84],eax<br />
mov dword ptr ss:[ebp-0x88],edi<br />
|code=<br />
50<br />
e8 [strings_vsprintf]<br />
8985 7cffffff<br />
89bd 78ffffff<br />
}}<br />
<br />
{{thcrap Binhack<br />
|id=sprintf_call_2<br />
|title=Safe sprintf (call #2)<br />
|addr={{thcrap_ver|ver=v1.00c|0x46e914}}<br />
|dasm=<br />
push eax<br />
call [strings_vsprintf]<br />
mov dword ptr ss:[ebp-0x88],eax<br />
|code=<br />
50<br />
e8 [strings_vsprintf]<br />
8985 78ffffff<br />
}}<br />
<br />
{{thcrap Binhack<br />
|id=sprintf_call_3<br />
|title=Safe sprintf (call #3)<br />
|addr={{thcrap_ver|ver=v1.00c|0x46e99f}}<br />
|dasm=<br />
push eax<br />
call [strings_vsprintf]<br />
mov dword ptr ss:[ebp-0x8c],eax<br />
|code=<br />
50<br />
e8 [strings_vsprintf]<br />
8985 74ffffff<br />
}}<br />
<br />
{{thcrap Binhack<br />
|id=sprintf_rep<br />
|title=Safe sprintf (replace pointer)<br />
|addr={{thcrap_ver|ver=v1.00c|0x46e94c, 0x46ea0c, 0x46eac9}}<br />
|dasm=<br />
mov ebx, dword ptr ss:[<br />
|code=<br />
8b<br />
}}<br />
<br />
== Logging ==<br />
{{thcrap Binhack<br />
|id=log_restore<br />
|title=Restore the game's built-in logging<br />
|addr={{thcrap_ver|ver=v1.00c|0x475030}}<br />
|desc=Very useful for debugging.<br />
|code=e9 [log_printf]<br />
|dasm=jmp [log_printf]<br />
}}<br />
<br />
== Textbox size ==<br />
{{thcrap Binhack<br />
|id=fw_textbox_size<br />
|title=Correct text length calculation for Fairy Wars-style text boxes<br />
|addr={{thcrap_ver|ver=v1.00a|0x428e49, 0x42906b}}{{thcrap_ver|ver=v1.00b|0x428ee9, 0x42910b}}{{thcrap_ver|ver=v1.00c|0x428eb9, 0x4290db}}<br />
|desc=[[th128/Binary hacks#fw_textbox_size|Same hack as for th128.]]<br />
|dasm=<br />
nop<br />
nop<br />
push esi<br />
call [GetTextExtent]<br />
mov ecx, eax<br />
|code=<br />
90<br />
90<br />
56<br />
e8 [GetTextExtent]<br />
89c1<br />
}}<br />
<br />
== Spells ==<br />
{{thcrap Binhack<br />
|id=spell_align<br />
|title=Spell card alignment<br />
|addr={{thcrap_ver|ver=v1.00c|0x46e9cb}}<br />
|desc=The last three instructions would be unnecessary, but are, again, required for this to work with gensokyo.org's English patch.<br />
|code=<br />
ff75 10<br />
c1e9 0c<br />
83e1 01<br />
51<br />
ff75 0c<br />
ff75 08<br />
ff35 10c34d00<br />
ffb5 74ffffff<br />
e8 [GetTextExtentForFont]<br />
83c0 08<br />
50<br />
db04e4<br />
58<br />
{{thcrap_ver|ver=v1.00c|<br />
79 06<br />
d805 b0ea4a00<br />
dee9<br />
}}<br />
|dasm=<br />
push dword ptr ss:[ebp+0x10] ; Optimized original code<br />
shr ecx,0x0c<br />
and ecx,00000001<br />
push ecx<br />
push dword ptr ss:[ebp+0x0c]<br />
push dword ptr ss:[ebp+8]<br />
push dword ptr ds:[th13.font_spell] ; Spell card alignment<br />
push dword ptr ss:[ebp-0x8c]<br />
call [GetTextExtentForFont]<br />
add eax,8<br />
push eax<br />
fild dword ptr ss:[esp]<br />
pop eax<br />
<br />
jns short +6 ; gensokyo.org<br />
fadd dword ptr ds:[th13.4aeab0]<br />
fsubp st(1),st<br />
}}<br />
<br />
== Player data ==<br />
{{thcrap Binhack<br />
|id=result_spell_align<br />
|title=Remove spell "alignment" in the result screen<br />
|desc=When kept short, it also works with gensokyo.org's patch.<br />
|addr={{thcrap_ver|ver=v1.00c|0x46eac3}}<br />
|code=<br />
31c0<br />
|dasm=<br />
xor eax,eax<br />
}}<br />
== Compatibility ==<br />
{{thcrap Binhack<br />
|id=unpatch_fonts<br />
|title=Remove English patch font creation<br />
|desc=At this position, the English patch jumps to its font creation code, located in <tt>th13e.dll</tt>. Since we don't patch the import table of this DLL, its <tt>CreateFontA</tt> calls are still mapped to the actual system function, effectively ignoring thcrap's own font settings.<br />
<br />
This hack simply re-inserts the original game code from that position.<br />
|addr={{thcrap_ver|ver=v1.00c|0x45ad24}}<br />
|dasm=<br />
push th13.04acce4<br />
push 11<br />
push 4<br />
|code=<br />
68 e4cc4a00<br />
6a 11<br />
6a 04<br />
}}<br />
{{thcrap Binhack<br />
|id=unpatch_dialog<br />
|title=Remove English patch replacement for the resolution dialog<br />
|desc=Come on. You could have just replaced the pointer directly instead of ripping out the original function call and replacing it with your dummy function that... replaces the pointer. -.-<br />
|addr={{thcrap_ver|ver=v1.00c|0x45c3a1}}<br />
|dasm=<br />
call [DialogBoxParamA]<br />
|code=<br />
ff15 f8214a00<br />
}}<br />
{{thcrap Binhack<br />
|id=unpatch_layout<br />
|title=Remove English patch text formatting tag parsing<br />
|desc=It's not because we don't like your formatting tags, it's because you don't give us any chance to parse our own... which requires the exact ''absence'' of any binary hacks jumping into a different module.<br />
<br />
And well, pixel definitions are just not the way to go for an open, multilingual system.<br />
|addr={{thcrap_ver|ver=v1.00c|0x45afbe}}<br />
|dasm=<br />
jnz short +0x77<br />
mov ecx,dword ptr ss:[arg.5]<br />
push ecx<br />
push esi<br />
call [SetTextColor]<br />
mov eax,dword ptr ss:[arg.2]<br />
push ebx<br />
add eax,eax<br />
push edi<br />
mov dword ptr ss:[local.7],eax<br />
push 4<br />
add eax,2<br />
push eax<br />
|code=<br />
75 77<br />
8b4d 18<br />
51<br />
56<br />
ff15 18204a00<br />
8b45 0c<br />
53<br />
03c0<br />
57<br />
8945 e4<br />
6a 04<br />
83c0 02<br />
50<br />
}}<br />
=== Hardcoded strings ===<br />
One hack per hardcoded string. Wonderful!<br />
{{thcrap Binhack<br />
|id=unpatch_strings_result_known_spell<br />
|title=Remove English patch hardcoded string replacements (Result Known Spell)<br />
|addr={{thcrap_ver|ver=v1.00c|Rx53ced}}<br />
|code=68 4cc84a00<br />
|dasm=push th13.004ac84c<br />
}}<br />
{{thcrap Binhack<br />
|id=unpatch_strings_result_unknown_spell<br />
|title=Remove English patch hardcoded string replacements (Result Unknown Spell)<br />
|addr={{thcrap_ver|ver=v1.00c|Rx53d54}}<br />
|code=68 60c84a00<br />
|dasm=push th13.004ac860<br />
}}<br />
{{SubpageCategory}}</div>
Egor
https://www.thpatch.net/w/index.php?title=Th14/Binary_hacks&diff=2512185
Th14/Binary hacks
2023-09-11T02:29:54Z
<p>Egor: Undo revision 2198536 by Brliron (talk)</p>
<hr />
<div>{{Locked patch page note}}<br />
== Bugs ==<br />
{{thcrap Binhack<br />
|id=buffer_overflow_spell<br />
|title=Fix buffer overflow in spell name rendering (replace pointer)<br />
|addr={{thcrap_ver|ver=v0.01a|0x47a7a4}}{{thcrap_ver|ver=v0.01b|0x47a2f4}}{{thcrap_ver|ver=v1.00a|0x47de24}}{{thcrap_ver|ver=v1.00b|0x47dd24}}<br />
|desc=The <tt>strcpy</tt> is replaced by <tt>[[#spell_align|spell_align]]</tt>; this replaces the pointer accordingly.<br />
|dasm=<br />
mov eax, [ebp+0x20]<br />
nop<br />
|code=<br />
8b45 20<br />
90<br />
}}<br />
{{thcrap Binhack<br />
|id=sprintf_call<br />
|title=Safe sprintf (short, call)<br />
|addr={{thcrap_ver|ver=v0.01b|0x47a159, 0x47a379}}{{thcrap_ver|ver=v1.00a|0x47dc89, 0x47dea9}}{{thcrap_ver|ver=v1.00b|0x47db89, 0x47dda9}}<br />
|dasm=<br />
push eax<br />
call [strings_vsprintf]<br />
mov dword ptr ss:[esp+0x34],eax<br />
|code=<br />
50<br />
e8 [strings_vsprintf]<br />
8944e4 34<br />
}}<br />
{{thcrap Binhack<br />
|id=sprintf_long_call<br />
|title=Safe sprintf (long, call)<br />
|addr={{thcrap_ver|ver=v1.00b|0x40bb2e, 0x40bdde}}<br />
|dasm=<br />
push eax<br />
call [strings_vsprintf]<br />
mov dword ptr ss:[ebp-0x104],eax<br />
|code=<br />
50<br />
e8 [strings_vsprintf]<br />
8985 fcfeffff<br />
}}<br />
{{thcrap Binhack<br />
|id=sprintf_rep<br />
|title=Safe sprintf (short, replace pointer)<br />
|addr={{thcrap_ver|ver=v0.01b|0x47a1c8, 0x47a40b}}{{thcrap_ver|ver=v1.00a|0x47dcf8, 0x47df3b}}{{thcrap_ver|ver=v1.00b|0x47dbf8, 0x47de3b}}<br />
|dasm=<br />
mov eax,dword ptr ss:[esp+0x28]<br />
|code=<br />
8b44e4 28<br />
}}<br />
{{thcrap Binhack<br />
|id=sprintf_long_rep<br />
|title=Safe sprintf (long, replace pointer)<br />
|addr={{thcrap_ver|ver=v1.00b|0x40bb3d, 0x40bded}}<br />
|dasm=<br />
mov ???,dword ptr ss:[ebp-<br />
|code=<br />
8b<br />
}}<br />
<br />
== Logging ==<br />
{{thcrap Binhack<br />
|id=log_restore<br />
|title=Restore the game's built-in logging<br />
|addr={{thcrap_ver|ver=v0.01b|0x4075d0}}{{thcrap_ver|ver=v1.00b|0x4075c0}}<br />
|desc=Very useful for debugging.<br />
|code=e9 [log_printf]<br />
|dasm=jmp [log_printf]<br />
}}<br />
<br />
== Textbox size ==<br />
{{thcrap Binhack<br />
|id=ddc_textbox_size<br />
|title=Correct text length calculation for the DDC variety of Fairy Wars-style text boxes<br />
|addr={{thcrap_ver|ver=v0.01a|0x431590, 0x4317b0}}{{thcrap_ver|ver=v0.01b|0x430b70, 0x430d98}}<br />
|desc=In theory, this is the [[th128/Binary hacks#fw_textbox_size|same hack as for th128.]].<br />
<br />
However, th14 starts to use MMX instructions to calculate the size of the text box... and for some reason, thcrap's <tt>GetTextExtent</tt> clears out the <tt>xmm2</tt> register containing the multiplication factor, resulting a box with "length zero".<br />
<br />
After removing that unnecessary <tt>strlen()</tt>, we end up with plenty of space to read the value for <tt>xmm2</tt> back from the original, constant position in memory.<br />
<br />
This also leaves space for another fix. In case the text length calculation results in a width smaller than 28 pixels (this happens for example with Hime's "You!"), the original code would create an infinitely long text box, due to the width being treated as unsigned. Thus, we clear out <tt>eax</tt> in this case.<br />
|dasm=<br />
push ebx<br />
call [GetTextExtent]<br />
movss xmm2,dword ptr ds:[th14.4bead0]<br />
sub eax,1ch<br />
jae +3<br />
xor eax,eax<br />
nop<br />
|code=<br />
53<br />
e8 [GetTextExtent]<br />
f30f1015 {{thcrap_ver|ver=v0.01a|d0ea4b00}}{{thcrap_ver|ver=v0.01b|b8e64b00}}{{thcrap_ver|ver=v1.00a|882e4c00}}<br />
83e8 1c<br />
73 03<br />
31c0<br />
90<br />
}}<br />
{{thcrap Binhack<br />
|id=ddc_textbox_size_full<br />
|title=Correct text length calculation for the DDC variety of Fairy Wars-style text boxes<br />
|addr={{thcrap_ver|ver=v1.00a|0x4327f0, 0x4329e7}}{{thcrap_ver|ver=v1.00b|0x4327f0, 0x4329e7}}<br />
|desc=Same hack as for the trial, just using <tt>xmm1</tt> instead.<br />
|dasm=<br />
push ebx<br />
call [GetTextExtent]<br />
movss xmm1,dword ptr ds:[th14.4c2e88]<br />
sub eax,1ch<br />
jae +3<br />
xor eax,eax<br />
nop<br />
|code=<br />
53<br />
e8 [GetTextExtent]<br />
f30f100d {{thcrap_ver|ver=v1.00a|882e4c00}}{{thcrap_ver|ver=v1.00b|781a4c00}}<br />
83e8 1c<br />
73 03<br />
31c0<br />
90<br />
}}<br />
<br />
== Spells ==<br />
{{thcrap Binhack<br />
|id=spell_name_fetch<br />
|title=Prepare deferred spell name fetching<br />
|addr={{thcrap_ver|ver=v0.01a|0x41cc0b}}{{thcrap_ver|ver=v0.01b|0x41cd7b}}{{thcrap_ver|ver=v1.00a|0x41cefb}}{{thcrap_ver|ver=v1.00b|0x41cefb}}<br />
|code=<br />
8b4d 0c<br />
51<br />
31c9<br />
51<br />
51<br />
51<br />
|dasm=<br />
mov ecx, dword ptr ss:[ebp+0c]<br />
push ecx ; insert breakpoint here<br />
xor ecx<br />
push ecx<br />
push ecx<br />
push ecx<br />
}}<br />
<br />
{{thcrap Binhack<br />
|id=spell_align<br />
|title=Spell card alignment<br />
|addr={{thcrap_ver|ver=v0.01a|0x47a6f2}}{{thcrap_ver|ver=v0.01b|0x47a242}}{{thcrap_ver|ver=v1.00a|0x47dd72}}{{thcrap_ver|ver=v1.00b|0x47dc72}}<br />
|desc=Kill the <tt>strcpy</tt> (buffer overflow) and <tt>strlen</tt>, shift up/optimize part of the original code (because less code is always better), and fudge around so that it looks nice. Fairly straightforward.<br />
|dasm=<br />
mov eax, dword ptr ss:[ebp+1c]<br />
lea ebx, [eax+eax]<br />
mov eax, dword ptr ds:[esi+1c]<br />
shr eax, 0b<br />
and eax, 00000001<br />
mov dword ptr ss:[esp+14], eax<br />
push dword ptr ds:[th14.font_spell] ; spell font<br />
push dword ptr ss:[ebp+20]<br />
call [GetTextExtentForFont]<br />
add eax, 8<br />
shl eax, 1<br />
mov edx, dword ptr ds:[esi+2c]<br />
jmp short +0x1e<br />
nop (*0x1e)<br />
|code=<br />
8b45 1c<br />
8d1c00<br />
8b46 1c<br />
c1e8 0b<br />
83e0 01<br />
8944e4 14<br />
ff35 {{thcrap_ver|ver=v0.01a|3c8f4f00}}{{thcrap_ver|ver=v0.01b|209d4f00}}{{thcrap_ver|ver=v1.00a|fcf54f00}}{{thcrap_ver|ver=v1.00b|1cd64f00}}<br />
ff75 20<br />
e8 [GetTextExtentForFont]<br />
83c0 08<br />
d1e0<br />
8b56 2c<br />
eb 1e<br />
90 90 90 90 90 90 90 90<br />
90 90 90 90 90 90 90 90<br />
90 90 90 90 90 90 90 90<br />
90 90 90 90 90 90<br />
}}<br />
<br />
== Player data ==<br />
{{thcrap Binhack<br />
|id=result_spell_align<br />
|title=Remove spell "alignment" in the result screen<br />
|desc=For some reason, ZUN feels the need to do some alignment calculations based on the string length.<br />
<br />
Why.<br />
|addr={{thcrap_ver|ver=v0.01b|0x47a3ac}}{{thcrap_ver|ver=v1.00a|0x47dedc}}{{thcrap_ver|ver=v1.00b|0x47dddc}}<br />
|dasm=<br />
mov dword ptr ss:[esp+0x14], eax<br />
mov eax,dword ptr ds:[ebx+8]<br />
xor edx,edx<br />
jmp short +0x19<br />
nop (*0x19)<br />
|code=<br />
8944e4 14<br />
8b43 08<br />
31d2<br />
eb 19<br />
90 90 90 90 90<br />
90 90 90 90 90<br />
90 90 90 90 90<br />
90 90 90 90 90<br />
90 90 90 90 90<br />
}}<br />
== Music Room ==<br />
{{thcrap Binhack<br />
|id=music_title_prepare<br />
|title=Prepare music room title fetching<br />
|addr={{thcrap_ver|ver=v1.00b|0x46235d}}<br />
|desc=Oh no, a constant memory address. -.-<br />
|dasm=<br />
mov ecx,dword ptr ss:[esp+0x1c]<br />
push ecx ; insert breakpoint here<br />
xor eax,eax ; eax = theme number<br />
push eax ; ecx = theme string<br />
push eax<br />
push eax<br />
push eax<br />
push 0xffffff<br />
push esi<br />
push dword ptr ds:[th14.0x4f56cc]<br />
nop<br />
|code=<br />
8b4ce4 1c<br />
51<br />
31c0<br />
50<br />
50<br />
50<br />
50<br />
68 ffffff00<br />
56<br />
ff35 cc564f00<br />
90<br />
}}<br />
== Workaround for the broken update notification functionality in 2014-01-03 ==<br />
{{thcrap Binhack<br />
|id=thcrap_migrate_jump<br />
|title=Update notification for 2014-01-03 (jump)<br />
|addr={{thcrap_ver|ver=v1.00b|Rx87453}}<br />
|code=e9 599b0200<br />
|dasm=jmp th14.004b0fb1<br />
}}<br />
{{thcrap Binhack<br />
|id=thcrap_migrate_msg<br />
|title=Update notification for 2014-01-03 (check and message)<br />
|addr={{thcrap_ver|ver=v1.00b|Rxb0f3c}}<br />
|code=<br />
41206e65772076657273696f6e2028323031342d30312d32372920<br />
6f662074686520257320697320617661696c61626c652e0a<br />
0a<br />
49742063616e20626520646f776e6c6f616465642066726f6d0a<br />
0a<br />
09687474703a2f2f746870617463682e6e65742f<br />
50726f6a6563743a446f776e6c6f616400<br />
00<br />
<br />
e8 [PROJECT_VERSION]<br />
3d 27011420<br />
7d 17<br />
e8 [PROJECT_NAME]<br />
50<br />
68 3c0f4b00<br />
6a 40<br />
6a 00<br />
e8 [log_mboxf]<br />
83c4 10<br />
<br />
e8 6d1cfeff<br />
e9 7a64fdff<br />
|dasm=<br />
"A new version (2014-01-27) "<br />
"of the %s is available.\n"<br />
"\n"<br />
"It can be downloaded from\n"<br />
"\n"<br />
" http: //thpatch.net/"<br />
"Project:Download"<br />
<br />
<br />
call [PROJECT_VERSION]<br />
cmp eax, 0x20140127<br />
jge short +17<br />
call [PROJECT_NAME]<br />
push eax<br />
push th14.004b0f3c<br />
push 40<br />
push 0<br />
call [log_mboxf]<br />
add esp, 10<br />
; Original code below<br />
call th14.00492c46<br />
jmp th14.00487458<br />
}}</div>
Egor
https://www.thpatch.net/w/index.php?title=Template:Thcrap_Game_info&diff=2512178
Template:Thcrap Game info
2023-09-11T02:21:46Z
<p>Egor: Reverted edits by DalekCraft (talk) to last revision by Splashman</p>
<hr />
<div>{{<br />
#vardefine:game|{{{game|{{lc:{{BASEPAGENAMEE}}}}}}}}}{{Topinfo<br />
|color={{{color|{{rc|{{#var:game}}}}}}}<br />
|icon=Icon_{{#var:game}}.png<br />
|iconsize=32px<br />
|title={{{title|{{rt|{{#var:game}}}}}}} <tt>([[{{#var:game}}]])</tt><br />
<br />
|label1=Latest {{#if:{{#pos:{{{latest}}}|,}}|versions|version}}<br />
|data1={{{latest|}}}<br />
|label2=Update download page<br />
|data2={{{url_update|}}}<br />
|label3=Trial version download page<br />
|data3={{{url_trial|}}}<br />
|label5=Announcement<br />
|data5={{{url_announcement|}}}<br />
<br />
|label4=Default font<br />
|data4={{{font|}}}<br />
}}<noinclude>{{TouhouPatchCenter hook|name=thcrap_game_info|class=TPCInfo}}{{Documentation}}</noinclude></div>
Egor
https://www.thpatch.net/w/index.php?title=Th19&diff=2512177
Th19
2023-09-11T02:20:14Z
<p>Egor: add Category:Games</p>
<hr />
<div>{{thcrap Game info<br />
|title = 東方獣王園 〜 Unfinished Dream of All Living Ghost.<br />
|latest = v0.02a, v1.00a<br />
|url_update = * http://mirror.studio-ramble.com/upload/nolook/ShanghaiAlice/3ebd552f3398f1591186ef01c79c8360/th19tr_ver002a.exe (v0.01a to v0.02a)<br />
|url_trial = * https://store.steampowered.com/app/2400340 (Steam version)<br />
* http://dl.studio-ramble.com:8081/nolook/ShanghaiAlice/cbdfbed95e78fb020ab311c0b87201c9/th19tr_full.zip (v0.01a, setup + DirectX)<br />
* http://dl.studio-ramble.com:8081/nolook/ShanghaiAlice/76473047410b094f435804ae5a8251f7/th19tr.zip (v0.01a, game data only)<br />
|url_announcement = https://touhou-project.news/news/8892/<br />
}}<br />
<br /><br />
<br />
== Translatable content ==<br />
{{#lst:Patch:Translatable content|th19}}<br />
<br />
{{SubpageCategory}}<br />
[[Category:Games]]<br />
[[Category:Team Shanghai Alice]]</div>
Egor
https://www.thpatch.net/w/index.php?title=Th185&diff=2512176
Th185
2023-09-11T02:20:13Z
<p>Egor: add Category:Games</p>
<hr />
<div>{{thcrap Game info<br />
|title = バレットフィリア達の闇市場 ~ 100th Black Market.<br />
|latest = v1.00a<br />
|url_update = <br />
|url_announcement = https://touhou-project.news/news/7436/, https://store.steampowered.com/app/2097720/Black_Market_of_Bulletphilia___100th_Black_Market/<br />
}}<br />
<br /><br />
<br />
==Translatable content ==<br />
{{#lst:Patch:Translatable content|th185}}<br />
<br />
{{SubpageCategory}}<br />
[[Category:Games]]<br />
[[Category:Team Shanghai Alice]]</div>
Egor
https://www.thpatch.net/w/index.php?title=Th18&diff=2512175
Th18
2023-09-11T02:20:12Z
<p>Egor: add Category:Games</p>
<hr />
<div>{{thcrap Game info<br />
|title = 東方虹龍洞 ~ Unconnected Marketeers<br />
|latest = v0.02a, v1.00a<br />
|url_update = https://touhou-project.news/news/3601/<br />
|url_trial = <!--through [-->https://store.steampowered.com/app/1566410/Touhou_Kouryudou__Unconnected_Marketeers/<!-- Steam]--><br />
|url_announcement = https://touhou-project.news/news/3368/<br />
}}<br />
<br /><br />
<br />
== Translatable content ==<br />
{{#lst:Patch:Translatable content|th18}}<br />
<br />
{{SubpageCategory}}<br />
[[Category:Games]]<br />
[[Category:Team Shanghai Alice]]</div>
Egor
https://www.thpatch.net/w/index.php?title=Th175&diff=2512174
Th175
2023-09-11T02:20:11Z
<p>Egor: add Category:Games</p>
<hr />
<div>{{thcrap Game info<br />
|title = 東方剛欲異聞 ~ 水没した沈愁地獄<br />
|url_update = http://tasofro.net/touhou175/download.html<br />
|url_trial = http://tasofro.net/touhou175/index.html<br />
|latest = v.1.15<br />
}}<br />
<br />
==Translatable content ==<br />
{{#lst:Patch:Translatable content|th175}}<br />
<br />
{{SubpageCategory}}<br />
[[Category:Games]]<br />
[[Category:Twilight Frontier]]</div>
Egor
https://www.thpatch.net/w/index.php?title=Th17&diff=2512173
Th17
2023-09-11T02:20:10Z
<p>Egor: add Category:Games</p>
<hr />
<div>{{thcrap Game info<br />
|title = 東方鬼形獣 ~ Wily Beast and Weakest Creature<br />
|latest = v0.01a, v1.00b<br />
|url_update = https://kourindou.exblog.jp/28512725/<br />
|url_trial = https://kourindou.exblog.jp/28323776/<br />
}}<br />
==Translatable content ==<br />
{{#lst:Patch:Translatable content|th17}}<br />
<br />
{{SubpageCategory}}<br />
[[Category:Games]]<br />
[[Category:Team Shanghai Alice]]</div>
Egor
https://www.thpatch.net/w/index.php?title=Th165&diff=2512172
Th165
2023-09-11T02:20:09Z
<p>Egor: add Category:Games</p>
<hr />
<div>{{thcrap Game info<br />
|title = 秘封ナイトメアダイアリー 〜 Violet Detector<br />
|latest = v1.00a<br />
|url_update =<br />
}}<br />
==Translatable content ==<br />
{{#lst:Patch:Translatable content|th165}}<br />
<br />
{{SubpageCategory}}<br />
[[Category:Games]]<br />
[[Category:Team Shanghai Alice]]</div>
Egor
https://www.thpatch.net/w/index.php?title=Th16&diff=2512171
Th16
2023-09-11T02:20:08Z
<p>Egor: add Category:Games</p>
<hr />
<div>{{thcrap Game info<br />
|title = 東方天空璋 ~ Hidden Star in Four Seasons<br />
|latest = v0.01a, v1.00a<br />
|url_trial = http://store.steampowered.com/app/745880/__Hidden_Star_in_Four_Seasons/<br />
}}<br />
==Translatable content ==<br />
{{#lst:Patch:Translatable content|th16}}<br />
<br />
{{SubpageCategory}}<br />
[[Category:Games]]<br />
[[Category:Team Shanghai Alice]]</div>
Egor
https://www.thpatch.net/w/index.php?title=Th155&diff=2512170
Th155
2023-09-11T02:20:06Z
<p>Egor: add Category:Games</p>
<hr />
<div>{{thcrap Game info<br />
|title = 東方憑依華 ~ Antinomy of Common Flowers<br />
|url_update = http://tasofro.net/touhou155/download.html<br />
|url_trial = http://tasofro.net/touhou155/download.html<br />
|latest = v1.21b<br />
<br />
}}<br />
==Translatable content ==<br />
{{#lst:Patch:Translatable content|th155}}<br />
<br />
{{SubpageCategory}}<br />
[[Category:Games]]<br />
[[Category:Twilight Frontier]]</div>
Egor
https://www.thpatch.net/w/index.php?title=Th15&diff=2512169
Th15
2023-09-11T02:20:05Z
<p>Egor: add Category:Games</p>
<hr />
<div>{{thcrap Game info<br />
|title = 東方紺珠伝 ~ Legacy of Lunatic Kingdom<br />
|latest = v0.01b, v1.00b<br />
|url_update = http://www16.big.or.jp/~zun/html/th15dl.html<br />
|format_msg = msg11<br />
|format_end = end10<br />
|format_anm = anm11<br />
}}<br />
==Translatable content ==<br />
{{#lst:Patch:Translatable content|th15}}<br />
<br />
{{SubpageCategory}}<br />
[[Category:Games]]<br />
[[Category:Team Shanghai Alice]]</div>
Egor
https://www.thpatch.net/w/index.php?title=Th145&diff=2512168
Th145
2023-09-11T02:20:04Z
<p>Egor: add Category:Games</p>
<hr />
<div>{{thcrap Game info<br />
|title = 東方深秘録 ~ Urban Legend in Limbo<br />
|url_update = http://tasofro.net/touhou145/index.html#new<br />
|url_trial = http://tasofro.net/touhou145/index.html#new<br />
|latest = v1.41<br />
}}<br />
<br />
<br />
== Game-specific syntax ==<br />
Thcrap supports 2 special syntax for this game in story mode.<br />
<br />
- The game have balloons of different sizes. If your translation doesn't fit in the balloon the game uses but it could fit in a bigger balloon, you can choose the balloon used by adding <balloon:balloon name> at the beginning of the translation. For example, the first translation in Reimu's intro could be:<br /><br />
<balloon$a15x3><br /><br />
I found somethin' real<br /><br />
interestin' here at Kourindou.<br />
<br />
The following balloon names are possible:<br />
*Normal (small, normal, big): a05x2, a11x2, a15x3<br />
*Shouting (small, normal, big): b05x2, b11x2, b15x3<br />
*Worried (small, normal, big): c05x2, c11x2, c15x3<br />
*Thought bubble (small, normal, big): d05x2, d11x2, d15x3<br />
<br />
- If you can't fit your translation in the biggest balloon, you can add another balloon by adding a line with <balloon>. For example, I'll take the same translation, but display it in 2 balloons:<br /><br />
I found somethin' real<br /><br />
<balloon><br /><br />
interestin' here at Kourindou.<br />
<br />
You can also mix the 2 syntax.<br />
<br />
===Endings===<br />
*Every text-box has enough space for 3 lines. To add more lines, use <balloon>. <br />
*Use \. to create a "wait for key press" pause in the text.<br />
<br />
Example:<br /><br />
Was it a dream?\. Or reality?\.<br /><br />
The more she thought back on her experience,\.<br /><br />
the less real it seemed.<br /><br />
<balloon><br /><br />
And then everyone died.<br />
<br />
Was it a dream? (KEY PRESS) Or reality?(KEY PRESS)<br /><br />
The more she thought back on her experience,(KEY PRESS)<br /><br />
the less real it seemed.(KEY PRESS TO NEXT PAGE)<br /><br />
And then everyone died.<br />
<br />
==Translatable content ==<br />
{{#lst:Patch:Translatable content|th145}}<br />
<br />
{{SubpageCategory}}<br />
[[Category:Games]]<br />
[[Category:Twilight Frontier]]</div>
Egor
https://www.thpatch.net/w/index.php?title=Th143&diff=2512167
Th143
2023-09-11T02:20:02Z
<p>Egor: add Category:Games</p>
<hr />
<div>{{thcrap Game info<br />
|title = 弾幕アマノジャク ~ Impossible Spell Card<br />
}}<br />
==Translatable content ==<br />
{{#lst:Patch:Translatable content|th143}}<br />
<br />
{{SubpageCategory}}<br />
[[Category:Games]]<br />
[[Category:Team Shanghai Alice]]</div>
Egor
https://www.thpatch.net/w/index.php?title=Th14&diff=2512166
Th14
2023-09-11T02:20:01Z
<p>Egor: add Category:Games</p>
<hr />
<div>{{thcrap Game info<br />
|title = 東方輝針城 ~ Double Dealing Character<br />
|latest = v0.01b, v1.00b<br />
|url_trial = http://www16.big.or.jp/~zun/html/th14dl.html<br />
|url_update = http://www16.big.or.jp/~zun/html/th14dl.html<br />
|format_msg = msg11<br />
|format_end = end10<br />
|format_anm = anm11<br />
}}<br />
==Translatable content ==<br />
{{#lst:Patch:Translatable content|th14}}<br />
<br />
{{SubpageCategory}}<br />
[[Category:Games]]<br />
[[Category:Team Shanghai Alice]]</div>
Egor
https://www.thpatch.net/w/index.php?title=Th135&diff=2512165
Th135
2023-09-11T02:19:59Z
<p>Egor: add Category:Games</p>
<hr />
<div>{{thcrap Game info<br />
|title = 東方心綺楼 ~ Hopeless Masquerade<br />
|url_update = http://tasofro.net/touhou135/index.html<br />
|url_trial = http://tasofro.net/touhou135/index.html<br />
|latest = v1.34b<br />
}}<br />
<br />
<br />
==Translatable content ==<br />
{{#lst:Patch:Translatable content|th135}}<br />
<br />
{{SubpageCategory}}<br />
[[Category:Games]]<br />
[[Category:Twilight Frontier]]</div>
Egor
https://www.thpatch.net/w/index.php?title=Th13&diff=2512164
Th13
2023-09-11T02:19:54Z
<p>Egor: add Category:Games</p>
<hr />
<div>{{thcrap Game info<br />
|title = 東方神霊廟 ~ Ten Desires<br />
|url_trial = http://www16.big.or.jp/~zun/html/th13dl.html<br />
|url_update = http://www16.big.or.jp/~zun/html/th13dl.html<br />
|latest = v1.00c<br />
|format_msg = msg11<br />
|format_anm = anm11<br />
|format_end = end10<br />
}}<br />
==Translatable content ==<br />
{{#lst:Patch:Translatable content|th13}}<br />
<br />
[[en:Ten Desires/Translation#Story]]<br />
[[fr:Ten Desires/Traduction#Histoire]]<br />
[[ru:Ten Desires/Перевод]]<br />
[[zh:东方神灵庙/故事]]<br />
{{SubpageCategory}}<br />
[[Category:Games]]<br />
[[Category:Team Shanghai Alice]]</div>
Egor
https://www.thpatch.net/w/index.php?title=Th128&diff=2512163
Th128
2023-09-11T02:19:52Z
<p>Egor: add Category:Games</p>
<hr />
<div>{{thcrap Game info<br />
|title = 妖精大戦争 ~ 東方三月精<br />
|latest = v1.00a<br />
|format_msg = msg11<br />
|format_anm = anm11<br />
|format_end = end10<br />
}}<br />
==Translatable content ==<br />
{{#lst:Patch:Translatable content|th128}}<br />
<br />
[[en:Fairy Wars/Story]]<br />
{{SubpageCategory}}<br />
[[Category:Games]]<br />
[[Category:Team Shanghai Alice]]</div>
Egor
https://www.thpatch.net/w/index.php?title=Th125&diff=2512162
Th125
2023-09-11T02:19:51Z
<p>Egor: add Category:Games</p>
<hr />
<div>{{thcrap Game info<br />
|title = ダブルスポイラー ~ 東方文花帖<br />
|latest = v1.00a<br />
|format_msg = msg11<br />
|format_anm = anm11<br />
}}<br />
==Translatable content ==<br />
{{#lst:Patch:Translatable content|th125}}<br />
<br />
[[en:Double Spoiler/Translation]]<br />
{{SubpageCategory}}<br />
[[Category:Games]]<br />
[[Category:Team Shanghai Alice]]</div>
Egor
https://www.thpatch.net/w/index.php?title=Th123&diff=2512161
Th123
2023-09-11T02:19:50Z
<p>Egor: add Category:Games</p>
<hr />
<div>{{thcrap Game info<br />
|title = 東方非想天則 ~ 超弩級ギニョルの謎を追え<br />
|url_update = http://tasofro.net/touhou123/download.html<br />
|latest = v1.10a<br />
}}<br />
<br />
<br />
==Translatable content ==<br />
{{#lst:Patch:Translatable content|th123}}<br />
<br />
{{SubpageCategory}}<br />
[[Category:Games]]<br />
[[Category:Twilight Frontier]]</div>
Egor
https://www.thpatch.net/w/index.php?title=Th12&diff=2512160
Th12
2023-09-11T02:19:49Z
<p>Egor: add Category:Games</p>
<hr />
<div>{{thcrap Game info<br />
|title = 東方星蓮船 ~ Undefined Fantastic Object<br />
|url_trial = http://www16.big.or.jp/~zun/html/th12dl.html<br />
|url_update = http://www16.big.or.jp/~zun/html/th12dl.html<br />
|latest = v1.00b<br />
|format_msg = msg11<br />
|format_anm = anm11<br />
|format_end = end10<br />
}}<br />
==Translatable content ==<br />
{{#lst:Patch:Translatable content|th12}}<br />
<br />
[[en:Undefined Fantastic Object/Story]]<br />
[[ru:Undefined Fantastic Object/Перевод]]<br />
[[zh:东方星莲船/故事]]<br />
{{SubpageCategory}}<br />
[[Category:Games]]<br />
[[Category:Team Shanghai Alice]]</div>
Egor
https://www.thpatch.net/w/index.php?title=Th11&diff=2512159
Th11
2023-09-11T02:19:48Z
<p>Egor: add Category:Games</p>
<hr />
<div>{{thcrap Game info<br />
|title = 東方地霊殿 ~ Subterranean Animism<br />
|url_trial = http://www16.big.or.jp/~zun/html/th11dl.html<br />
|latest = v1.00a<br />
|format_msg = msg11<br />
|format_anm = anm11<br />
|format_end = end10<br />
}}<br />
==Translatable content ==<br />
{{#lst:Patch:Translatable content|th11}}<br />
<br />
[[en:Subterranean Animism/Story]]<br />
[[pl:Subterranean Animism: Tłumaczenie]]<br />
[[fr:Subterranean Animism: Traduction]]<br />
[[zh:东方地灵殿/翻译]]<br />
{{SubpageCategory}}<br />
[[Category:Games]]<br />
[[Category:Team Shanghai Alice]]</div>
Egor
https://www.thpatch.net/w/index.php?title=Th105&diff=2512158
Th105
2023-09-11T02:19:47Z
<p>Egor: add Category:Games</p>
<hr />
<div>{{thcrap Game info<br />
|title = 東方緋想天 ~ Scarlet Weather Rhapsody<br />
|url_update = http://tasofro.net/touhou105/download.html<br />
|url_trial = http://tasofro.net/touhou105/download.html<br />
|latest = v1.06a<br />
}}<br />
<br />
==Translation Syntax==<br />
<br />
Touhou 10.5 uses the same dialogue syntax for Story Mode, Endings and VS Scripts.<br />
<br />
*Story and VS gives you room for three full lines, as compared to the original two.<br />
*Endings give you four lines.<br />
*Key-press pauses can be put anywhere in the text by adding @.<br />
*You can add more than one text balloon in the same message box, by ending the current one with \ . However, in this case you must end all text balloons in the box with \, or else it will flow over to the next box.<br />
*You can even end a text box with @, for adding text-pauses in portrait changes, or character actions (like Tenshi crashing down from the sky).<br />
*There's also color formatting: <color 0000FF>this is blue</color>.<br />
<br />
Examples:<br />
<br />
<code><br />
This is text box 1.<br /><br />
This is still text box 1.@<br /><br />
Text box 1 just made a pause.\<br /><br />
<br /><br />
Text box 1 is dead.<br /><br />
Long live text box 2.\<br /><br />
</code><br />
<br />
==Translatable content ==<br />
{{#lst:Patch:Translatable content|th105}}<br />
<br />
{{SubpageCategory}}<br />
[[Category:Games]]<br />
[[Category:Twilight Frontier]]</div>
Egor
https://www.thpatch.net/w/index.php?title=Th10&diff=2512157
Th10
2023-09-11T02:19:47Z
<p>Egor: add Category:Games</p>
<hr />
<div>{{thcrap Game info<br />
|title = 東方風神録 ~ Mountain of Faith<br />
|url_trial = http://www16.big.or.jp/~zun/html/th10dl.html<br />
|latest = v1.00a<br />
|format_msg = msg10<br />
|format_anm = anm06<br />
|format_end = end10<br />
}}<br />
==Translatable content ==<br />
{{#lst:Patch:Translatable content|th10}}<br />
<br />
[[en:Mountain of Faith/Story]]<br />
[[fr:Mountain of Faith: Traduction]]<br />
{{SubpageCategory}}<br />
[[Category:Games]]<br />
[[Category:Team Shanghai Alice]]</div>
Egor