Homebrew


Tworzenie #

Developing Nintendo DS homebrew typically uses devkitPro tools, such as devkitARM, libnds, and libfat. Jednakże można pójść własną drogą i używać alternatywnych programów:

  • SD card libraries: libfat is included in libnds and generally recommended, libslim can sometimes work better but is unstable at times
  • Graphics libraries: easyGL2D, which comes shipped with libnds, is recommended, however NightFox Lib can be used instead
  • Entire toolchains: devkitARM and libnds are recommended, as it includes DSi compatibility and has a larger ecosystem, however ToolchainGenericDS is an option for flashcard-exclusive development

To get started, this GBAtemp thread has a lot of good resources for begginers. For more technical information on the DS(i), see GBATEK.

Flashcardy #

DS mode flashcards are a Slot-1 method of running Nintendo DS applications. Flashcards have the advantages of keeping console files and portable files separate, have the ability to be used without modding your system, and are usable on DS Phat/Lite consoles. However, unlike modding the actual console, there are multiple flashcards on the market, each with different kernel requirements. The kernel you use is the most important.

DLDI #

Inne sloty na karty SD mają (najczęściej) inny hardware, a kod napisany dla jednej karty niekoniecznie będzie działał dla innej karty. DLDI (w skrócie Dynamically Linked Device Interface) próbuje rozwiązać ten problem poprzez patchowanie kodu obsługi karty SD zewnętrznie. Loaders like YSMenu, Wood R4, and TWiLight Menu++ can automatically DLDI patch a homebrew, but if you need to manually patch it in, you can use a DLDI Patcher on a computer.

Bomba Czasowa #

W niektórych kernelach kart flash, arbitralna data wygaśnięcia (bardziej znana jako bomba zegarowa) jest zakodowana przez twórców kernela jako sposób na nakłonienie konsumentów do zakupu ich najnowszego produktu. Procedura ta jest następująca:

  1. Karta Flash jest uruchamiana i ładuje plik kernela z karty SD bez sprawdzenia, czy jest on sprawdzony przez deweloperów
  2. Przy każdym załadowaniu pliku kernela z karty SD sprawdza, czy data w systemie jest wcześniejsza od określonej daty

Jeśli drugi test wypadnie pozytywnie, jądro odmówi uruchomienia systemu. Można to sprawdzić ustawiając datę na najnowszą możliwą wartość. Jednak zabezpieczenia są słabe, a wyniki nie są buforowane, co oznacza, że istnieją sposoby na obejście tego problemu:

Jeśli chcesz używać domyślnego kernelu, który został dodany przez producentów kart flash, zegar systemowy może być ustawiony z powrotem w Ustawieniach systemowych urządzenia. Pamiętaj jednak, że może to zepsuć każdą grę, która opiera się na zegarze systemowym (np. Animal Crossing: Wild World).

Jednak kernele, które są dostarczane z tymi kartami są fundamentalnie wadliwe i lepiej jest je całkowicie wymienić. Na szczęście programiści z innych firm stworzyli alternatywne rozwiązania, z których możesz skorzystać:

  • YSmenu - menu + game loader - Although it does not have the advantage of a customizable all-in-one menu, the game loader has far better compatibility with support for action-replay cheats
  • TWiLight Menu++ with nds-bootstrap - Has a customizable all-in-one menu and supports cheats, but its B4DS mode (the mode used when it doesn’t have the DSi’s capabilities) has weak compatibility, some games even requiring the Memory Expansion Pak
  • TWiLight Menu++ with YSmenu - Customizable all-in-one menu with high compatibility, but lacks cheat support

Wsparcie ARGV #

ARGV jest przekaźnikiem informacji pomiędzy dwoma aplikacjami homebrew Nintendo DS. Może być używany w przypadku forwarderów lub alternatywnego menu.

  • Homebrew musi być odpowiednio zaprogramowane, by z tego skorzystać. For example, GBARunner2, NesDS, and GameYob all have ARGV support
  • Potrzebny jest również sposób na ustawienie zmiennych ARGV. TWiLight Menu++ i HBMenu pozwalają na ustawienie argumentów ARGV