TWPatch 3DS: Difference between revisions

From GameBrew
(Created page with "{{Infobox 3DS homebrew | title = twpatcher | image = https://dlhb.gamebrew.org/3dshomebrew/twpatcher.jpg|250px | type = System Tools | version = 44248 | licence = Mixed | auth...")
 
m (Text replacement - "Category:3DS homebrew system tools" to "")
 
(28 intermediate revisions by the same user not shown)
Line 1: Line 1:
{{Infobox 3DS homebrew
{{Infobox 3DS Homebrews
| title = twpatcher
|title=twpatcher
| image = https://dlhb.gamebrew.org/3dshomebrew/twpatcher.jpg|250px
|image=Twpatcher2.png
| type = System Tools
|description=DS(i) mode screen filters and patches.
| version = 44248
|author=Sono
| licence = Mixed
|lastupdated=2023/07/22
| author = Sono
|type=System Tools
| website = https://gbatemp.net/threads/twpatcher-ds-i-mode-screen-filters-and-patches.542694/
|version=20230722
| download = https://dlhb.gamebrew.org/3dshomebrew/twpatcher.rar
|license=Mixed
| source = https://dlhb.gamebrew.org/3dshomebrew/twpatcher.rar
|download=https://dlhb.gamebrew.org/3dshomebrews/twpatcher.7z?k33p0fil35
|website=https://gbatemp.net/threads/twpatcher-ds-i-mode-screen-filters-and-patches.542694
}}
}}
<youtube>HUNZVcBhJBU</youtube>
TWPatcher is a screen filter and patch for running DS(i) mode on the 3DS/2DS consoles. The initially patcher, which was only able to change the upscaling filter, was made by reverse engineering the capture card's image processor (used to capture DS and GBA screens), based on the 3 filters (1x (START+SELECT), 1.25x (default), and 1.5x (used only in GBA mode)) found inside TWL_FIRM.


Based on the 3 filters (1x (START+SELECT), 1.25x (default), and 1.5x (used only in GBA mode)) found inside TWL_FIRM, I reverse engineered most of the capture card's image processor (used to capture DS and GBA screens), and made my own filters to show that sharp upscaling can be done.
With this patch, it is also possible to play [https://gbatemp.net/threads/widescreen-cheats-for-ds-games-on-3ds.543212 DS(i) games] using [[TWiLight Menu++]] in widescreen.


But that's not all! Since the initial patcher (which was only able to change the upscaling filter), a lot of work has been done:
==Installation==
Below is the guide to add widescreen support (from [https://wiki.ds-homebrew.com/twilightmenu/playing-in-widescreen DS-Homebrew Wiki], to be used with [[TWiLight Menu++]]). For this to work, make sure Luma's boot.firm is on the SD root.


* Copy TWPatch.cia to your SD card and install it with [[FBI 3DS|FBI]] (you can also use [[Universal-Updater 3DS|Universal-Updater]] to install TWPatch instead).
* Return to the home menu and launch TWPatch.
* Hold Y+B to open the patch menu and enable Widescreen patch (384x240 16:10).
* (Optional) For a less pixelated widescreen, also enable GPU scaling (blurry, no filters).
* Press B to exit the patch menu.
* Press Start to generate a TwlBg.cxi file with widescreen.
** If the top screen doesn't indicate that wide patch is enabled, relaunch TWPatch and try again again.
* Move TwlBg.cxi from sd:/luma/sysmodules/ to sd:/_nds/TWiLightMenu/TwlBg/ (create TwlBg folder, if it doesn't exist), and rename the file to Widescreen.cxi.
* Restart your 3DS while holding Select to open Luma3DS's configuration.
* Enable external FIRMs and modules, then press Start to save and quit.
* Open TWiLight Menu++, press Y on your desired game to bring up the per-game settings, and set Screen Aspect Ratio to 16:10.


* Remove the DPAD input filter, so you can press LEFT+RIGHT and UP+DOWN without it being blocked, so you can enjoy glitches exclusive to this gameplay mechanic [[File:styles/default/xenforo/clear.png|class=mceSmilieSprite mceSmilie2|;)]]
For GBA mode, you need to hold Y while booting TWPatch to enable GBA patching mode (you know when you have enabled GBA patching mode if the number of scale filters drops dramatically, and the background is glitched out) ([https://gbatemp.net/threads/twpatcher-ds-i-mode-screen-filters-and-patches.542694/post-9954660 read more]).
* Blue light filtering thanks to [https://gbatemp.net/threads/ctr_redshift-hardware-based-blue-light-filter-for-old3ds-and-2ds.493736/ CTR_Redshift]
* Screen swap for DS mode (the GBA only has a single screen, so it's not swappable)
* Widescreen patching for both DS (4:3 --&gt; 16:10) and GBA (15:10 --&gt; 15:9) mode
* ARM11 &lt;--&gt; ARM7 communication with rtcom (discovered by [https://gbatemp.net/members/280844/ @Gericom])
** Currently only GBARunner2 utilizes this for gyroscope emulation when playing WarioWare Twisted!, but any developer and romhacker can use this for anything which needs 3DS hardware access
* Use GPU for upscaling
** It looks much better than the default upscaling, but it's too blurry for some people
** It can also pose a health hazard for people with nervous system problems who get weird spazms and epilleptic effects, so use with care!


With a lot of help, love, and support from the community, there are useful use cases for the above patches:
==User guide==
===Notes===
* Most widescreen patches will only adjust 3D elements for widescreen, 2D elements (such as menus) will only be stretched.
* Do not hold Start or Select when launching TWLMenu++, if you don't want widescreen to look glitched.
* Not every game is widescreen compatible. Here is a [https://github.com/DS-Homebrew/TWiLightMenu/blob/master/7zfile/3DS%20-%20CFW%20users/Games%20supported%20with%20widescreen.txt list of games with widescreen support].


===Troubleshoot===
If you're stuck in widescreen mode in all of TWL_FIRM (including the TWLMenu++ GUI) launching a widescreen-compatible game, follow these steps:
* Delete TwlBg.cxi at sd:/luma/sysmodules/.
* Then [https://wiki.ds-homebrew.com/twilightmenu/uninstalling-3ds uninstall] and [https://wiki.ds-homebrew.com/twilightmenu/installing-3ds re-install] TWiLight Menu++.
* Finally re-follow the above guide, as well as using the original build of Luma.


* [https://gbatemp.net/threads/ds-i-3ds-twilight-menu-gui-for-ds-i-games-and-ds-i-menu-replacement.472200/ TWiLightMenu++] lets you play games [https://gbatemp.net/threads/widescreen-cheats-for-ds-games-on-3ds.543212/ which have widescreen patches]... in widescreen!
==Media==
** It's also possible thanks to everyone who are actively making those patches!
'''Widescreen Super Mario 64 DS on a 3DS''' (​[https://www.youtube.com/watch?v=0Qg9giftkhc Sono]) <br>
* [https://gbatemp.net/threads/gbarunner2.451970/ GBARunner2] uses rtcom to enable us to be able to play WarioWare Twisted! utilizing the gyroscope built into the 3DS
<youtube>0Qg9giftkhc</youtube>


There are also a few patches for developers too:
'''Widescreen Hack - Twilightmenu NDS on 3DS''' ([https://www.youtube.com/watch?v=_rR32gO5Z1c chibon chibon]) <br>
<youtube>_rR32gO5Z1c</youtube>


==Changelog==
'''v20230722'''
*Added a patch to disable CPad emulation, for those with broken CPad.


* Possible to patch Process9, Kernel11Loader, and Kernel11
==External links==
* Includes a Kernel11 patch which reinstalls exception handlers, so you can debug your payloads easier
* GBAtemp - https://gbatemp.net/threads/twpatcher-ds-i-mode-screen-filters-and-patches.542694
 
* GBAtemp - https://gbatemp.net/threads/twpatcher-ds-i-mode-screen-filters-and-patches.542694/post-8752015
 
* DS-Homebrew Wiki - https://wiki.ds-homebrew.com/twilightmenu/playing-in-widescreen
 
 
<div class="ToggleTriggerAnchor bbCodeSpoilerContainer">
 
<span>Spoiler: <span class="SpoilerTitle">Widescreen SM64DS video (sorry for the 480p24 footage)</span></span>
<div class="SpoilerTarget bbCodeSpoilerText">
 
<div class="iframe">
 
<div id="player">
 
 
 
</div>
<div class="player-unavailable">
 
= An error occurred. =
 
<div class="submessage">
 
[https://www.youtube.com/watch?v=0Qg9giftkhc Try watching this video on www.youtube.com], or enable JavaScript if it is disabled in your browser.
 
</div>
 
</div>
 
</div>
 
</div>
 
</div>
 
 
 
<div class="ToggleTriggerAnchor bbCodeSpoilerContainer">
 
<span>Spoiler: <span class="SpoilerTitle">Images</span></span>
<div class="SpoilerTarget bbCodeSpoilerText">
 
[[File:proxy.php?image=https%3A%2F%2Fpuu.sh%2FDP6bz%2Fce64b7ec17.jpg&hash=9866e6ae3f980b245f3d1634ec515398|class=bbCodeImage LbImage|[?IMG]]]
[[File:proxy.php?image=https%3A%2F%2Fpuu.sh%2FDP6ci%2F7b2c70e702.jpg&hash=ec83d82a89fae42522259669748462cd|class=bbCodeImage LbImage|[?IMG]]]
[[File:proxy.php?image=https%3A%2F%2Fpuu.sh%2FDRlt4%2F53f1d365bb.jpg&hash=3f5d8838cc3a17918df546f272016498|class=bbCodeImage LbImage|[?IMG]]]
[[File:proxy.php?image=https%3A%2F%2Fpuu.sh%2FDRJFb%2Fa215fe4708.jpg&hash=1b4b717405faa7d31b77e6bab487fb48|class=bbCodeImage LbImage|[?IMG]]]
[[File:proxy.php?image=https%3A%2F%2Fpuu.sh%2FDRJFg%2Faa87ea1b0f.jpg&hash=7612ec7220f063328c57678b00a79c32|class=bbCodeImage LbImage|[?IMG]]]
[[File:proxy.php?image=https%3A%2F%2Fpuu.sh%2FDSq73%2F364ace4046.jpg&hash=6b658a7ae45a680b2ea40bc4546d5010|class=bbCodeImage LbImage|[?IMG]]]
[[File:proxy.php?image=https%3A%2F%2Fpuu.sh%2FDSq7S%2Fd66eb6a763.jpg&hash=915e22faa0fcfaf5b770d0d4321c0fa4|class=bbCodeImage LbImage|[?IMG]]]
[[File:proxy.php?image=https%3A%2F%2Fpuu.sh%2FDTPyo%2F30dbf7007b.jpg&hash=11bcd69e368f6e0462771a0eb916e3ec|class=bbCodeImage LbImage|[?IMG]]]
[[File:proxy.php?image=https%3A%2F%2Fpuu.sh%2FDTSj5%2F4205de0403.jpg&hash=d10aa6532a7f5bdd5b5b687c58516918|class=bbCodeImage LbImage|[?IMG]]]
[[File:proxy.php?image=https%3A%2F%2Fpuu.sh%2FDTSje%2Fa7a62e196e.jpg&hash=78655e3dd6c47e747502528b0f2858c1|class=bbCodeImage LbImage|[?IMG]]]
[[File:proxy.php?image=https%3A%2F%2Fpuu.sh%2FDU5b1%2Ff6557071b2.jpg&hash=60816013638c01a6b850de7d9242e766|class=bbCodeImage LbImage|[?IMG]]]
[[File:proxy.php?image=https%3A%2F%2Fpuu.sh%2FDU5bY%2F40909d9572.jpg&hash=e6b778c4528ee33461dba697e97f0e8b|class=bbCodeImage LbImage|[?IMG]]]
 
</div>
 
</div>
 
If you want to see all scale matrixes, [https://gbatemp.net/members/369787/ @Halvorsen] has used a capture card to capture how it looks like on real hardware.
 
 
<div class="ToggleTriggerAnchor bbCodeSpoilerContainer">
 
<span>Spoiler: <span class="SpoilerTitle">Scale matrix comparison</span></span>
<div class="SpoilerTarget bbCodeSpoilerText">
 
[[File:proxy.php?image=https%3A%2F%2Fi.imgur.com%2F7W9LMPP.png&hash=9be4ce2c03313d13a13a6ff9e1a389f0|class=bbCodeImage LbImage|[?IMG]]]
 
</div>
 
</div>
 
Download stable [<nowiki/>[https://sono.9net.org/hebrew/TWPatch/data/TWPatch.cia cia]] 2021/02/21
<span style="text-decoration: line-through">Download outdated [<nowiki/>[https://sono.9net.org/hebrew/TWPatch/data/TWPatch.3dsx 3dsx] (doesn't work)] 2021/01/12</span>
 
 
 
<div class="ToggleTriggerAnchor bbCodeSpoilerContainer">
 
<span>Spoiler: <span class="SpoilerTitle">Useful developer material</span></span>
<div class="SpoilerTarget bbCodeSpoilerText">
 
[<nowiki/>[https://gbatemp.net/threads/twpatcher-ds-i-mode-screen-filters-and-patches.542694/page-7#post-8709110 upscale matrix matrix all possible resolution values]] https://docs.google.com/spreadsheets/d/1kMbn1cBD5a7W9zalBLTN-ig1vgqS6fuuBGlm45FRN6M/
[https://gbatemp.net/threads/twpatcher-ds-i-mode-screen-filters-and-patches.542694/page-22#post-8736758 [upscale matrix research]] [<nowiki/>[https://clouard.users.greyc.fr/Pantheon/experiments/rescaling/index-en.html 1]] [<nowiki/>[http://bertolami.com/index.php?engine=blog&content=posts&detail=inside-imagine-kernels 2]]
 
</div>
 
</div>
<div class="messageTextEndMarker">
 
 
</div>

Latest revision as of 05:18, 6 May 2024

twpatcher
Twpatcher2.png
General
AuthorSono
TypeSystem Tools
Version20230722
LicenseMixed
Last Updated2023/07/22
Links
Download
Website

TWPatcher is a screen filter and patch for running DS(i) mode on the 3DS/2DS consoles. The initially patcher, which was only able to change the upscaling filter, was made by reverse engineering the capture card's image processor (used to capture DS and GBA screens), based on the 3 filters (1x (START+SELECT), 1.25x (default), and 1.5x (used only in GBA mode)) found inside TWL_FIRM.

With this patch, it is also possible to play DS(i) games using TWiLight Menu++ in widescreen.

Installation

Below is the guide to add widescreen support (from DS-Homebrew Wiki, to be used with TWiLight Menu++). For this to work, make sure Luma's boot.firm is on the SD root.

  • Copy TWPatch.cia to your SD card and install it with FBI (you can also use Universal-Updater to install TWPatch instead).
  • Return to the home menu and launch TWPatch.
  • Hold Y+B to open the patch menu and enable Widescreen patch (384x240 16:10).
  • (Optional) For a less pixelated widescreen, also enable GPU scaling (blurry, no filters).
  • Press B to exit the patch menu.
  • Press Start to generate a TwlBg.cxi file with widescreen.
    • If the top screen doesn't indicate that wide patch is enabled, relaunch TWPatch and try again again.
  • Move TwlBg.cxi from sd:/luma/sysmodules/ to sd:/_nds/TWiLightMenu/TwlBg/ (create TwlBg folder, if it doesn't exist), and rename the file to Widescreen.cxi.
  • Restart your 3DS while holding Select to open Luma3DS's configuration.
  • Enable external FIRMs and modules, then press Start to save and quit.
  • Open TWiLight Menu++, press Y on your desired game to bring up the per-game settings, and set Screen Aspect Ratio to 16:10.

For GBA mode, you need to hold Y while booting TWPatch to enable GBA patching mode (you know when you have enabled GBA patching mode if the number of scale filters drops dramatically, and the background is glitched out) (read more).

User guide

Notes

  • Most widescreen patches will only adjust 3D elements for widescreen, 2D elements (such as menus) will only be stretched.
  • Do not hold Start or Select when launching TWLMenu++, if you don't want widescreen to look glitched.
  • Not every game is widescreen compatible. Here is a list of games with widescreen support.

Troubleshoot

If you're stuck in widescreen mode in all of TWL_FIRM (including the TWLMenu++ GUI) launching a widescreen-compatible game, follow these steps:

  • Delete TwlBg.cxi at sd:/luma/sysmodules/.
  • Then uninstall and re-install TWiLight Menu++.
  • Finally re-follow the above guide, as well as using the original build of Luma.

Media

Widescreen Super Mario 64 DS on a 3DS (​Sono)

Widescreen Hack - Twilightmenu NDS on 3DS (chibon chibon)

Changelog

v20230722

  • Added a patch to disable CPad emulation, for those with broken CPad.

External links

Advertising: