<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://www.gamebrew.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=SkyLyrac</id>
	<title>GameBrew - User contributions [en-gb]</title>
	<link rel="self" type="application/atom+xml" href="https://www.gamebrew.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=SkyLyrac"/>
	<link rel="alternate" type="text/html" href="https://www.gamebrew.org/wiki/Special:Contributions/SkyLyrac"/>
	<updated>2026-06-04T12:18:40Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://www.gamebrew.org/index.php?title=BlocksDS&amp;diff=204832</id>
		<title>BlocksDS</title>
		<link rel="alternate" type="text/html" href="https://www.gamebrew.org/index.php?title=BlocksDS&amp;diff=204832"/>
		<updated>2026-05-14T02:09:30Z</updated>

		<summary type="html">&lt;p&gt;SkyLyrac: Update links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox DS Homebrews&lt;br /&gt;
|title=BlocksDS&lt;br /&gt;
|image=Ndspc2.png&lt;br /&gt;
|description=Main BlocksDS SDK repository.&lt;br /&gt;
|author=AntonioND&lt;br /&gt;
|lastupdated=2026/04/26&lt;br /&gt;
|type=Development&lt;br /&gt;
|version=1.20.0&lt;br /&gt;
|license=Mixed&lt;br /&gt;
|download=https://blocksds.skylyrac.net/docs/setup/&lt;br /&gt;
|website=https://blocksds.skylyrac.net/&lt;br /&gt;
|source=https://codeberg.org/blocksds&lt;br /&gt;
}}&lt;br /&gt;
{{#seo:&lt;br /&gt;
|title= (Development Tools) - GameBrew&lt;br /&gt;
|title_mode=append&lt;br /&gt;
|image=Ndspc2.png&lt;br /&gt;
|image_alt=BlocksDS&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;!--blocksds.7z--&amp;gt;&lt;br /&gt;
BlocksDS SDK is an SDK for Nintendo DS. It&#039;s built on the hard work of many talented individuals. Here are its goals:&lt;br /&gt;
&lt;br /&gt;
* Create a user-friendly NDS software development kit based on GCC, with minimal dependencies.&lt;br /&gt;
* Encourage developers to tinker and enhance the SDK by providing them with its complete source code. It also demonstrates how straightforward it is to build the entire codebase. The only exception is the tolchain, which can be tricky to build. To simplify things, we use Wonderful Toolchains instead of asking users to build it themselves.&lt;br /&gt;
* Strive to maintain compatibility with existing C projects. Ideally, replacing the makefile with one from BlocksDS should be sufficient to build any project that utilizes libnds.&lt;br /&gt;
&lt;br /&gt;
This project is currently in beta stage, and most features are working. Please, check the [https://github.com/blocksds/sdk/blob/master/docs/libc.rst libc port documentation] for more information about the supported libc functions.&lt;br /&gt;
&lt;br /&gt;
If you want to port a project built with devkitPro, follow [https://github.com/blocksds/sdk/blob/master/docs/porting-guide.rst this guide] for instructions.&lt;br /&gt;
&lt;br /&gt;
For detailed information about the design of BlocksDS, check [https://github.com/blocksds/sdk/blob/master/docs/design-guide.rst this other document].&lt;br /&gt;
&lt;br /&gt;
For licensing information, check [https://github.com/blocksds/sdk/blob/master/docs/licenses.rst this].&lt;br /&gt;
&lt;br /&gt;
==Changelog==&lt;br /&gt;
&#039;&#039;&#039;v1.16.0&#039;&#039;&#039;&lt;br /&gt;
* libnds:&lt;br /&gt;
** &amp;lt;code&amp;gt;glDeinit()&amp;lt;/code&amp;gt; has been implemented. This function frees all memory used by videoGL and stops the 3D hardware until &amp;lt;code&amp;gt;glInit()&amp;lt;/code&amp;gt; is called again.&lt;br /&gt;
** &amp;lt;code&amp;gt;fsync()&amp;lt;/code&amp;gt; has been implemented. &amp;lt;code&amp;gt;fflush()&amp;lt;/code&amp;gt; doesn&#039;t currently guarantee a flush to the disk, so &amp;lt;code&amp;gt;fsync(fileno(fp))&amp;lt;/code&amp;gt; can be used instead. [https://github.com/asiekierka @asiekierka]&lt;br /&gt;
** Function &amp;lt;code&amp;gt;fatGetDefaultDrive()&amp;lt;/code&amp;gt; can now return &amp;lt;code&amp;gt;&amp;amp;quot;nand:/&amp;amp;quot;&amp;lt;/code&amp;gt; if the application runs from NAND.&lt;br /&gt;
** New definitions have been added for the window registers. The old ones didn&#039;t use the same names used by GBATEK.&lt;br /&gt;
** Fix &amp;lt;code&amp;gt;SOUNDXCNT_VOL_DIV_x&amp;lt;/code&amp;gt; defines.&lt;br /&gt;
** Add defines &amp;lt;code&amp;gt;GL_TRANS_YSORT&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;GL_ZBUFFERING&amp;lt;/code&amp;gt; for &amp;lt;code&amp;gt;glFlush()&amp;lt;/code&amp;gt;.&lt;br /&gt;
** Define &amp;lt;code&amp;gt;GL_SPECULAR_USE_TABLE&amp;lt;/code&amp;gt; has been added so that it can be added to &amp;lt;code&amp;gt;glMaterial()&amp;lt;/code&amp;gt; instead of using magic numbers.&lt;br /&gt;
** &amp;lt;code&amp;gt;glMaterialShinyness()&amp;lt;/code&amp;gt; has been deprecated. The name is a typo, and the new name is &amp;lt;code&amp;gt;glMaterialShininess()&amp;lt;/code&amp;gt;. The old name will be kept around forever because too many projects use it.&lt;br /&gt;
** Add warning to material &amp;lt;code&amp;gt;GL_SHININESS&amp;lt;/code&amp;gt; because it isn&#039;t used for anything.&lt;br /&gt;
** Align the Huffman temporary buffer to a word just in case it&#039;s needed.&lt;br /&gt;
** Stop expecting a size field in the &amp;lt;code&amp;gt;GRF&amp;lt;/code&amp;gt; chunk of GRF files.&lt;br /&gt;
** Support &amp;lt;code&amp;gt;PIDX&amp;lt;/code&amp;gt; chunks in GRF files. This is used for Tex4x4 texture format.&lt;br /&gt;
* DSWiFi:&lt;br /&gt;
** Access points with hidden SSID (the name of the network) are now supported in DS mode (not in DSi mode yet). This only works for APs that send probe responses that contain a SSID (some APs don&#039;t, and they aren&#039;t supported).&lt;br /&gt;
* Maxmod:&lt;br /&gt;
** Fix mode C mixer. Version 1.14.0 did a partial fix, but it didn&#039;t update the volume divider bits of the audio channel control register correctly. This bug could be seen in the &amp;lt;code&amp;gt;audio_modes&amp;lt;/code&amp;gt; example.&lt;br /&gt;
* grit:&lt;br /&gt;
** Remove size field from &amp;lt;code&amp;gt;GRF&amp;lt;/code&amp;gt; chunks in GRF files. This was added by BlocksDS and it makes it harder to be compatible with other GRF files. Removing it doesn&#039;t affect anything because the RIFF chunk already has the size.&lt;br /&gt;
** When exporting tiled backgrounds grit didn&#039;t check if the size of the tile set was too big. There was a check but it was incorrect. Now, grit will fail if it&#039;s trying to export too many tiles for the specified format. For example, affine backgrounds can only have up to 256 tiles. Previously, grit would export a broken tile map silently, which was hard to detect if there were too many similar tiles. If you were taking advantage of this broken check to overflow the tile index into th e tile flip bits of regular maps, use options &amp;lt;code&amp;gt;-mB16:p4i12 -mRtp&amp;lt;/code&amp;gt; to achieve the same effect.&lt;br /&gt;
* ndstool:&lt;br /&gt;
** The CRC of the secure area wasn&#039;t calculated when generating the header. This is now fixed. [https://github.com/edo9300 @edo9300].&lt;br /&gt;
** Support for GRF files has been removed. It was outdated and it didn&#039;t make sense to update it. This format was worse than PNG and BMP for static icons because it needs to be pre-converted by hand. Also, it didn&#039;t support animated icons like GIF files.&lt;br /&gt;
* SDK:&lt;br /&gt;
** The first official logo of BlocksDS has been created. Thanks to Megan Gozzard.&amp;lt;br /&amp;gt;&lt;br /&gt;
** A new icon has been added to the SDK to be used as default icon for all ROMs. The old icon file is still available for projects that depend on it, but it has been updated to use the new icon. Thanks to [https://github.com/DieGo367 @DieGo367].&amp;lt;br /&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;dprintf()&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;vdprintf()&amp;lt;/code&amp;gt; have been added to picolibc.&amp;lt;br /&amp;gt;&lt;br /&gt;
** Arguments &amp;lt;code&amp;gt;-std=gnu17&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;-std=gnu++17&amp;lt;/code&amp;gt; have been removed from all default and template makefiles. They prevented users from changing this themselves.&amp;lt;br /&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;dldipatch&amp;lt;/code&amp;gt; now returns the version string when it runs with argument &amp;lt;code&amp;gt;-V&amp;lt;/code&amp;gt; (this change was applied to all other tools in version 1.15.0).&amp;lt;br /&amp;gt;&lt;br /&gt;
** Examples:&lt;br /&gt;
*** Delete both examples about loading textures in GRF format and create a better example that doesn&#039;t hardcode any values (&amp;lt;code&amp;gt;grf_textures_nitrofs&amp;lt;/code&amp;gt;).&lt;br /&gt;
*** Add example of using windows and DMA to create a circular window.&lt;br /&gt;
*** Add example of the material properties of 3D objects. It shows several combinations of properties to understand the effect they have on the resulting color of the polygons.&lt;br /&gt;
*** Add example of using the master brightness registers (not the LCD brightness).&lt;br /&gt;
*** Add example of drawing a single colored 3D quad.&lt;br /&gt;
*** Add example that compares modulation and decal 3D polygon modes.&lt;br /&gt;
*** Add example of using fog to fade 3D objects over 2D layers.&lt;br /&gt;
*** Add example of 3D antialiasing and edge marking.&lt;br /&gt;
*** Fix 3D box test example.&lt;br /&gt;
*** Set transparent color explicitly in grit files that convert tiled backgrounds. Index 0 is always transparent, so it&#039;s a good idea to tell grit which color to use as transparent so that we don&#039;t get surprises later.&lt;br /&gt;
*** Simplify background image used in the &amp;lt;code&amp;gt;bg_rotation&amp;lt;/code&amp;gt; example. It was using way more tiles than the limit of 256, but it wasn&#039;t noticeable because many tiles looked similar.&lt;br /&gt;
*** Set backdrop color in some examples to black instead of leaving magenta, which is the transparent color of the background.&lt;br /&gt;
*** The graphics of the examples in the &amp;lt;code&amp;gt;video_effects&amp;lt;/code&amp;gt; folder have been replaced by prettier images.&lt;br /&gt;
*** In 3D examples that draw cubes the old vertex order was incorrect (so culling wasn&#039;t working properly). It has been fixed.&lt;br /&gt;
*** A new example has been added to show how to draw a 3D cube and what&#039;s the effect of changing the culling setting.&lt;br /&gt;
*** Use GL helpers for texture coordinates instead of raw register writes.&lt;br /&gt;
*** Minor improvements to 3D examples.&lt;br /&gt;
*** The graphics files used in some 3D examples have been improved.&lt;br /&gt;
*** The example that loads a compressed texture has been simplified so that the concatenation happens at build time rather than at run time.&lt;br /&gt;
*** A new example has been added to show the different effects of using texture coordinates outside of bounds (stretch, wrap, wrap and flip).&lt;br /&gt;
*** Improve the example of drawing several 3D translucent objects to let the user break it in different ways and see the results.&lt;br /&gt;
*** Add an example of how to draw a polygon in which all faces are translucent and visible at the same time.&lt;br /&gt;
*** Add an example of how to use the 3D alpha test.&lt;br /&gt;
*** Add an example of how to draw a simple pre-converted display list.&lt;br /&gt;
*** Add an example of how to apply lighting to a 3D cube drawn manually. The previous examples used pre-converted display lists so the developer couldn&#039;t see the &amp;lt;code&amp;gt;glNormal()&amp;lt;/code&amp;gt; commands.&lt;br /&gt;
*** The images used in some examples that combine 2D and 3D graphics have been improved.&lt;br /&gt;
*** In the BIOS decompression example, align the Huffman temporary buffer to a word just in case it&#039;s needed. Clear the destination buffer before each decompression to make sure that a decompression that doesn&#039;t write anything doesn&#039;t pass as a correct decompression. Use VRAM-safe compression for LZSS so that it works with WRAM and VRAM decompression routines.&lt;br /&gt;
** Documentation:&lt;br /&gt;
*** The documentation has been completely reorganized. Old links to specific pages won&#039;t work.&lt;br /&gt;
*** The old Hugo theme has been replaced by one that supports different sections better (SDK documentation vs tutorial, for example).&lt;br /&gt;
*** A lot of icons and nicer formatting has been added to all the previous documentation. In particular, the setup instructions have been simplified.&lt;br /&gt;
*** The documentation now includes information about all the libraries provided in the BlocksDS and Wonderful Toolchain repositories. They weren&#039;t easily discoverable before.&lt;br /&gt;
*** Add a new page with documentation about filesystem support.&lt;br /&gt;
*** The tutorial has new sections about background and sprite extended palettes.&lt;br /&gt;
*** The tutorial has new chapters about 2D effects (blending, mosaic, etc), memory management, and 3D.&lt;br /&gt;
*** The tutorial has been merged into the SDK repository to unify the documentation of BlocksDS.&lt;br /&gt;
*** The tutorial is now licensed under the license CC BY-NC-SA 4.0.&lt;br /&gt;
** Tests:&lt;br /&gt;
*** Make DLDI-on-ARM7 test work in DSi Slot-1 flashcarts.&lt;br /&gt;
&#039;&#039;&#039;v1.15.7&lt;br /&gt;
* libnds:&lt;br /&gt;
** Add a wait loop to &amp;lt;code&amp;gt;systemReboot()&amp;lt;/code&amp;gt; to give the power management hardware enough time to do the reboot (before &amp;lt;code&amp;gt;systemShutDown()&amp;lt;/code&amp;gt; is called, which is faster to act).&lt;br /&gt;
** Update FatFs to version R0.16p1.&lt;br /&gt;
* DSWiFi:&lt;br /&gt;
** &amp;lt;code&amp;gt;gethostbyname()&amp;lt;/code&amp;gt; has been marked as deprecated. This function only returns IPv4 addresses and it&#039;s deprecated in the libraries of modern systems. You should use &amp;lt;code&amp;gt;getaddrinfo()&amp;lt;/code&amp;gt; instead, which returns IPv4 and IPv6 addresses. That way applications will be future-proof.&lt;br /&gt;
** A new flag called &amp;lt;code&amp;gt;WFLAG_APDATA_CONFIG_IN_WFC&amp;lt;/code&amp;gt; has been added to &amp;lt;code&amp;gt;Wifi_AccessPoint.flags&amp;lt;/code&amp;gt; to tell the developer that the access point has been configured in the WFC settings.&lt;br /&gt;
** &amp;lt;code&amp;gt;Wifi_ConnectWfcAP()&amp;lt;/code&amp;gt; has been implemented. This function allows the user to select one of the APs configured in the WFC settings instead of connecting to the first one that the library finds. Previously you could only use&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;Wifi_ConnectSecureAP()&amp;lt;/code&amp;gt;, which forces you to provide the password instead of reading the data stored in the WFC settings. Now you can use either function depending on whether you want to use the WFC settings or a different password.&lt;br /&gt;
* Maxmod:&lt;br /&gt;
** &amp;lt;code&amp;gt;mmInitNoSoundbank()&amp;lt;/code&amp;gt; has been improved to initialize the pointer to the soundbank to &amp;lt;code&amp;gt;NULL&amp;lt;/code&amp;gt; for clarity. This wasn&#039;t causing any issue because the number of songs and samples was correctly initialized to 0.&lt;br /&gt;
* SDK:&lt;br /&gt;
** The documentation about using filesystems has been improved a lot.&lt;br /&gt;
** Improve synchronization of ARM9 and ARM7 CPUs before the ARM7 is allowed to enter &amp;lt;code&amp;gt;main()&amp;lt;/code&amp;gt;. In very rare cases, if the user modified &amp;lt;code&amp;gt;REG_IPC_SYNC&amp;lt;/code&amp;gt; too soon inside &amp;lt;code&amp;gt;main()&amp;lt;/code&amp;gt; the ARM9 synchronization code would never see the message from the ARM7 allowing it to continue and it would hang.&lt;br /&gt;
** All DSWiFi examples have been updated to stop using &amp;lt;code&amp;gt;gethostbyname()&amp;lt;/code&amp;gt; and to use &amp;lt;code&amp;gt;getaddrinfo()&amp;lt;/code&amp;gt; instead. One of the examples has been moved to the &amp;lt;code&amp;gt;tests&amp;lt;/code&amp;gt; folder to make sure we can still test &amp;lt;code&amp;gt;gethostbyname()&amp;lt;/code&amp;gt; in the future (the plan is to keep it and discourage its use, not to remove it). Now all examples support IPv4 and IPv6 as recommended.&lt;br /&gt;
** The DSWiFi examples have been updated to use &amp;lt;code&amp;gt;Wifi_ConnectWfcAP()&amp;lt;/code&amp;gt; in addition to the other functions to connect to access points.&lt;br /&gt;
&#039;&#039;&#039;v1.15.6&#039;&#039;&#039;&lt;br /&gt;
* libnds:&lt;br /&gt;
** Fix &amp;lt;code&amp;gt;pianoIsInserted()&amp;lt;/code&amp;gt; always returning &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;. [https://github.com/exelotl @exelotl]&lt;br /&gt;
** Fix sound playback helpers not starting or stopping sounds when requested.&lt;br /&gt;
* DSWiFi:&lt;br /&gt;
** Fix race condition when writing packets to the IPC RX/TX circular buffers that could cause a crash in the library.&lt;br /&gt;
* SDK:&lt;br /&gt;
** Fix the timer index used for RTC on the ARM7 in the ARM9+ARM7 template.&lt;br /&gt;
** Fix &amp;lt;code&amp;gt;make clean&amp;lt;/code&amp;gt; target in the examples that use Mbed TLS or libcurl. It used to cause an error if the libraries weren&#039;t present in the system.&lt;br /&gt;
** The documentation about multithreading locks has been updated.&lt;br /&gt;
&#039;&#039;&#039;v1.15.5&#039;&#039;&#039;&#039;&lt;br /&gt;
* libnds:&lt;br /&gt;
** Split &amp;lt;code&amp;gt;systemShutDown()&amp;lt;/code&amp;gt; to create &amp;lt;code&amp;gt;systemReboot()&amp;lt;/code&amp;gt;.&lt;br /&gt;
** Clean power management definitions.&lt;br /&gt;
** Un-deprecate  &amp;lt;code&amp;gt;glTranslate3f32()&amp;lt;/code&amp;gt; because it&#039;s used in several projects.&lt;br /&gt;
** Stop writing the NAND CID to arbitrary RAM addresses used by the official SDK but not by BlocksDS. [https://github.com/edo9300 @edo9300]&lt;br /&gt;
** Stop writing to &amp;lt;code&amp;gt;REG_VCOUNT&amp;lt;/code&amp;gt; during initialization of the ROM. Thanks to [https://github.com/TuxSH @TuxSH] for finding the original bug.&lt;br /&gt;
** Add global timer definitions so that other libraries know which timer they can use.&lt;br /&gt;
** Ensure that file descriptors passed to &amp;lt;code&amp;gt;truncate()&amp;lt;/code&amp;gt; are valid FAT descriptors.&lt;br /&gt;
* DSWiFi:&lt;br /&gt;
** Drop lwIP packets if there isn&#039;t enough RAM to allocate a buffer for them (instead of crashing in an &amp;lt;code&amp;gt;assert()&amp;lt;/code&amp;gt;).&lt;br /&gt;
** Add a workaround to prevent IPC buffer overflows.&lt;br /&gt;
* SDK:&lt;br /&gt;
** Use the new libnds timer defines in ARM7 templates and examples, as well as in DSWiFI, Maxmod and LibXM7.&lt;br /&gt;
** Fixed the orientation of normals for planes in the volumetric shadow example. [https://github.com/Mori-TM @Mori-TM]&lt;br /&gt;
** Improve exit-to-loader test.&lt;br /&gt;
&#039;&#039;&#039;v1.15.4&#039;&#039;&#039;&lt;br /&gt;
* libnds:&lt;br /&gt;
** &amp;lt;code&amp;gt;glTranslate3f32()&amp;lt;/code&amp;gt; has been converted from a define to a &amp;lt;code&amp;gt;static inline&amp;lt;/code&amp;gt; function. The define could cause issues if someone was creating a C++ wrapper with the same name, for example.&lt;br /&gt;
* DSWiFi:&lt;br /&gt;
** Don&#039;t crash on an &amp;lt;code&amp;gt;assert()&amp;lt;/code&amp;gt; when sending fragmented lwIP packets.&lt;br /&gt;
* SDK:&lt;br /&gt;
** Support unusual &amp;lt;code&amp;gt;main()&amp;lt;/code&amp;gt; prototypes with 3 arguments instead of two. The third argument is set to &amp;lt;code&amp;gt;NULL&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.15.3&#039;&#039;&#039;&lt;br /&gt;
* DSWiFi:&lt;br /&gt;
** IPv6 support has been added. The &amp;lt;code&amp;gt;ASSOCSTATUS_DHCP&amp;lt;/code&amp;gt; state now waits for an IPv4 or an IPv6 address to be available (normally IPv4 is available first). Function &amp;lt;code&amp;gt;Wifi_GetIPv6()&amp;lt;/code&amp;gt; has been added, which lets the caller check if there is an available IPv6 address for the DS.&lt;br /&gt;
** In DS mode, only send data packets to the ARM9 by default. Previously all management packets were being sent.&lt;br /&gt;
** In DS mode, send multicast packets to lwIP. Previously only packets addressed to the console or to the broadcast address (FF:FF:FF:FF:FF:FF) were sent to lwIP, which prevented DHCPv6 from working, for example.&lt;br /&gt;
** TX packets generated by lwIP and passed to DSWiFi weren&#039;t handled correctly if they were in a fragmented &amp;lt;code&amp;gt;pbuf&amp;lt;/code&amp;gt;. This has been fixed.&lt;br /&gt;
** Fix implementations of &amp;lt;code&amp;gt;ioctl()&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;fcntl()&amp;lt;/code&amp;gt;, as well as the defines &amp;lt;code&amp;gt;O_RDONLY&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;O_WRONLY&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;O_RDWR&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;O_NONBLOCK&amp;lt;/code&amp;gt;.&lt;br /&gt;
* SDK:&lt;br /&gt;
** Added a new package with libcurl named &amp;lt;code&amp;gt;blocksds-libcurl&amp;lt;/code&amp;gt;.&lt;br /&gt;
** Added a new example of how to use libcurl with BlocksDS.&lt;br /&gt;
** Improve documentation of exception handler example.&lt;br /&gt;
** Add a bloom example based on the original demo by Bluescrn.&lt;br /&gt;
** Mention the multiple ARM7 cores in the migration guide.&lt;br /&gt;
** Support edge-triggered rumble cartridges in the Slot-2 example.&lt;br /&gt;
&#039;&#039;&#039;v1.15.2&#039;&#039;&#039;&lt;br /&gt;
* libnds:&lt;br /&gt;
** Fix mounting filesystems in SD cards with multiple partitions. [https://github.com/edo9300 @edo9300]&lt;br /&gt;
* DSWiFi:&lt;br /&gt;
** A potential buffer overflow has been fixed in the DSi RX/TX queues.&lt;br /&gt;
** The DS RX/TX queues that transfer packets between the ARM9 and ARM7 have been rewritten to behave like in DSi mode. Now packets are written to the circular buffer one after the other, but they are never cut into two parts when the end of the buffer is reached. This guarantees that packets are always stored in one piece, which means that the ARM9 can avoid doing an extra copy to concatenate both parts, making communications faster.&lt;br /&gt;
** In DS mode packets are now read from/written to MAC RAM using DMA for extra speed and simplify the code.&lt;br /&gt;
** Now that packets are always stored in one piece, it isn&#039;t needed to use &amp;lt;code&amp;gt;Wifi_RxRawReadPacketPointer()&amp;lt;/code&amp;gt; to copy them to a user-allocated buffer. Function &amp;lt;code&amp;gt;Wifi_RxRawReadPacketPointer()&amp;lt;/code&amp;gt; has been implemented as an alternative. It returns an uncached pointer to the packet in RAM. Please, check the documentation for advice on how to use them.&lt;br /&gt;
** Improve random number generation. Previously, in DS mode, &amp;lt;code&amp;gt;W_RANDOM&amp;lt;/code&amp;gt; was used for WEP seeds, a bad handmade RNG was used for WPA2 handshakes, and &amp;lt;code&amp;gt;rand()&amp;lt;/code&amp;gt; was used in Mbed TLS instead of hardware entropy collection. A new system has replaced all of them. It constantly collects randomness from different events and updates a seed that is used to seed a xorshift32 generator. It isn&#039;t super secure because there is no real source of randomness on the DS, but it&#039;s better than the previous systems.&lt;br /&gt;
** The &amp;lt;code&amp;gt;Wifi_TxHeader&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Wifi_RxHeader&amp;lt;/code&amp;gt; structs are now private. They are never required by user code, and there is no equivalent in DSi mode, so it&#039;s better to hide them.&lt;br /&gt;
* SDK:&lt;br /&gt;
** Fix linker warning about the implementation of &amp;lt;code&amp;gt;__sync_synchronize&amp;lt;/code&amp;gt;. Thanks to [https://github.com/asiekierka @asiekierka] for the workaround.&lt;br /&gt;
** In a DSWiFi example some missing instructions have been added to the console output.&lt;br /&gt;
** The SSL DSWiFi example has been updated with more test websites.&lt;br /&gt;
&#039;&#039;&#039;v1.15.1&#039;&#039;&#039;&lt;br /&gt;
* DSWiFi:&lt;br /&gt;
** In the ARM7, Mbed TLS has been moved to twl sections. This code is only required to connect to WPA2 networks.&lt;br /&gt;
** Transfer of data between DSWiFi and lwIP in the ARM9 has been fixed. The way &amp;lt;code&amp;gt;pbuf&amp;lt;/code&amp;gt; structs were managed was incorrect, and caused frequent assertion panic screens.&lt;br /&gt;
** Some missing defines have been added to public DSWiFI headers.&lt;br /&gt;
** Some settings have been changed in lwIP (for example, to increase the number of available simultaneous sockets).&lt;br /&gt;
&#039;&#039;&#039;v1.15.0&#039;&#039;&#039;&lt;br /&gt;
* libnds:&lt;br /&gt;
** Fix reading console ID with &amp;lt;code&amp;gt;SCFG_ROM&amp;lt;/code&amp;gt; registers disabled. [https://github.com/edo9300 @edo9300]&lt;br /&gt;
** Ensure crypto has been initialized when a NAND read/write command is received in the ARM7. [https://github.com/edo9300 @edo9300]&lt;br /&gt;
** Support using &amp;lt;code&amp;gt;write()&amp;lt;/code&amp;gt; to send text to the console with file descriptors &amp;lt;code&amp;gt;STDOUT_FILENO&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;STDERR_FILENO&amp;lt;/code&amp;gt;.&lt;br /&gt;
** Fix potential cache corruption caused by &amp;lt;code&amp;gt;DC_InvalidateRange()&amp;lt;/code&amp;gt; in &amp;lt;code&amp;gt;readFirmware()&amp;lt;/code&amp;gt;. It has been replaced by &amp;lt;code&amp;gt;DC_FlushRange()&amp;lt;/code&amp;gt;, and all calls to &amp;lt;code&amp;gt;DC_InvalidateRange()&amp;lt;/code&amp;gt; have been removed. For more details, check Cearn&#039;s articles [https://www.coranac.com/2009/05/dma-vs-arm9-fight/ here] and [https://www.coranac.com/2010/03/dma-vs-arm9-round-2 here].&lt;br /&gt;
** Add some missing SCFG and NDMA register definitions.&lt;br /&gt;
** Add no$gba debug register definitions (also used in melonDS).&lt;br /&gt;
** Simplify no$gba message print on the ARM9 (melonDS doesn&#039;t support the simplified system on the ARM7).&lt;br /&gt;
* DSWiFi:&lt;br /&gt;
** Add new DSi mode driver with support for Open, WEP and WPA2 networks. [https://github.com/shinyquagsire23 @shinyquagsire23] is the original author of the driver. It has been extracted from [https://github.com/shinyquagsire23/dsiwifi dsiwifi] and modified to integrate it with the previous DSWiFi code.&lt;br /&gt;
** This driver can be enabled by passing &amp;lt;code&amp;gt;WIFI_ATTEMPT_DSI_MODE&amp;lt;/code&amp;gt; as one of the flags to &amp;lt;code&amp;gt;Wifi_InitDefault()&amp;lt;/code&amp;gt;. It&#039;s also possible to use &amp;lt;code&amp;gt;WIFI_DS_MODE_ONLY&amp;lt;/code&amp;gt; to force DS mode even on DSi consoles (this is the default setting).&lt;br /&gt;
** The new DSi driver doesn&#039;t support NiFi mode, it&#039;s only available in backwards-compatible DS mode.&lt;br /&gt;
** The library now reads all Access Points configured in the WFC settings of DSi consoles. It uses them even in backwards-compatible DS mode (but it ignores access points that use WPA).&lt;br /&gt;
** &amp;lt;code&amp;gt;Wifi_ConnectAP()&amp;lt;/code&amp;gt; has been deprecated, &amp;lt;code&amp;gt;Wifi_ConnectSecureAP()&amp;lt;/code&amp;gt; supersedes it. It&#039;s more convenient because it takes as input a key and key length instead of a key and hardware definitions. It supports WPA, WEP and open networks.&lt;br /&gt;
** The code on the ARM7 side is now divided into two parts. One of them is for DS mode, which is always loaded. The other one is for the DSi driver, which is only loaded to RAM in DSi mode. Some code can be shared between both modes, but not much.&lt;br /&gt;
** The code has been refactored a lot. The &amp;lt;code&amp;gt;WIFI_MODE&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;WIFI_AUTHLEVEL&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;WIFI_CONNECT_STATE&amp;lt;/code&amp;gt; state machines are now decoupled and they can&#039;t directly change the state of other state machines, making it easier to understand the execution flow.&lt;br /&gt;
** The internal IPC code of the library has been simplified. Several status flags have been removed as they are no longer needed.&lt;br /&gt;
** &amp;lt;code&amp;gt;Wifi_FindMatchingAP()&amp;lt;/code&amp;gt; has been simplified. It now only checks the BSSID and SSID of the reference AP we&#039;re looking for.&lt;br /&gt;
** Some new fields related to the security of the AP have been added to struct &amp;lt;code&amp;gt;Wifi_AccessPoint&amp;lt;/code&amp;gt;. Also, field &amp;lt;code&amp;gt;rssi&amp;lt;/code&amp;gt; is now signed instead of unsigned.&lt;br /&gt;
** Mbed TLS 3.4.6 has been added to the repository. This is required by the WPA2 handshake code. The license has been added to the repository, and the SDK documentation has been update to mention the new requirements.&lt;br /&gt;
** Flag &amp;lt;code&amp;gt;WFLAG_APDATA_ADHOC&amp;lt;/code&amp;gt; no longer works as ad hoc mode support has been removed (this is different from multiplayer mode, that&#039;s still supported). Field &amp;lt;code&amp;gt;macaddr&amp;lt;/code&amp;gt; has been removed from struct &amp;lt;code&amp;gt;Wifi_AccessPoint&amp;lt;/code&amp;gt;.&lt;br /&gt;
** Unused define &amp;lt;code&amp;gt;WFLAG_APDATA_SHORTPREAMBLE&amp;lt;/code&amp;gt; has been removed.&lt;br /&gt;
** The strings of &amp;lt;code&amp;gt;ASSOCSTATUS_STRINGS&amp;lt;/code&amp;gt; have been modified to make them useful.&lt;br /&gt;
** The network interface (netif) used by lwIP is now set down when the WiFi connection is lost and set up when the console connects to an access point. This helps lwIP do some things better, like DHCP.&lt;br /&gt;
** Scan mode is now a bit faster in DS mode, the library stays for a shorter period of time in each channel.&lt;br /&gt;
** A few definitions and structs have been added to the public headers, as well as &amp;lt;code&amp;gt;freeaddrinfo()&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;getaddrinfo()&amp;lt;/code&amp;gt;.&lt;br /&gt;
* SDK:&lt;br /&gt;
** Improve SDK version string generation. The makefiles of all tools (except for &amp;lt;code&amp;gt;dldipatch&amp;lt;/code&amp;gt;) have been modified to use the value of &amp;lt;code&amp;gt;VERSION_STRING&amp;lt;/code&amp;gt; provided by the user. If the string is not provided, it tries to generate a version string in 2 different ways. If that fails, it defaults to &amp;amp;quot;DEV&amp;amp;quot;.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
** Added a prototype Mbed TLS 3.6.4 package to the pacman repository. Note that the entropy generation isn&#039;t correct, so don&#039;t use this for any application that requires security for now!&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
** All tools (except for &amp;lt;code&amp;gt;dldipatch&amp;lt;/code&amp;gt;) now accept a &amp;lt;code&amp;gt;-V&amp;lt;/code&amp;gt; flag. When the tools are run with &amp;lt;code&amp;gt;-V&amp;lt;/code&amp;gt; they print the version string and exit right away. This flag has been selected because some tools were already using &amp;lt;code&amp;gt;-v&amp;lt;/code&amp;gt; for other purposes (like verbose output).&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
** The file &amp;lt;code&amp;gt;$BLOCKSDS/version.txt&amp;lt;/code&amp;gt; will now contain the value of &amp;lt;code&amp;gt;VERSION_STRING&amp;lt;/code&amp;gt; generated when building BlocksDS instead of the commit ID.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
** Update license information about DSWiFi.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
** To reduce the size of NDS ROMs the default ARM9-only Makefile now uses the default ARM7 core with maxmod but without DSWiFi. Programs that require DSWiFi need to select the right core by adding this line to the Makefile: &amp;lt;code&amp;gt;ARM7ELF := $(BLOCKSDS)/sys/arm7/main_core/arm7_dswifi_maxmod.elf&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
** Examples:&lt;br /&gt;
*** New example that lets you display the photos stored in the NAND of a DSi console. [https://github.com/edo9300 @edo9300]&lt;br /&gt;
*** The DSWiFi examples have been updated to use DSi mode and connect to WPA2&amp;lt;br /&amp;gt;&lt;br /&gt;
networks whenever possible.&lt;br /&gt;
*** There&#039;s a new example to show how to use the new version check helpers.&lt;br /&gt;
&#039;&#039;&#039;v1.14.2&#039;&#039;&#039;&lt;br /&gt;
* libnds:&lt;br /&gt;
** Improve error checking in &amp;lt;code&amp;gt;nitroFSInit()&amp;lt;/code&amp;gt; when using official card commands to access NitroFS. &amp;lt;code&amp;gt;nitroFSInit()&amp;lt;/code&amp;gt; now reads the new magic string stored by ndstool in the NDS ROM to check that the cartridge data can be read. The previous system was incorrect because the ROM header can&#039;t be read after the initial load of the ROM.&lt;br /&gt;
** Prevent changing the filesystem label of DSi NAND partitions with &amp;lt;code&amp;gt;fatSetVolumeLabel()&amp;lt;/code&amp;gt;. [https://github.com/edo9300 @edo9300]&lt;br /&gt;
** Add support for the photo partition of the DSi NAND. [https://github.com/edo9300 @edo9300]&lt;br /&gt;
** Save some RAM related to FatFs structs by moving them to TWL RAM. [https://github.com/edo9300 @edo9300]&lt;br /&gt;
** Some minor code cleanup.&lt;br /&gt;
* DSWiFi:&lt;br /&gt;
** Implemented &amp;lt;code&amp;gt;inet_aton()&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;inet_addr()&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;inet_ntop()&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;inet_pton()&amp;lt;/code&amp;gt;.&lt;br /&gt;
** DSWiFi now prevents lwIP from updating its state before being connected to an access point.&lt;br /&gt;
** Some minor code cleanup.&lt;br /&gt;
* ndstool:&lt;br /&gt;
** Add a magic string after the FAT filesystem table. This string can be used by libnds to check that card commands can read the cartridge data correctly.&lt;br /&gt;
** The unit code and title ID of the DSi ROM header can now be set by the user independently.&lt;br /&gt;
** The default title ID for DSi ROMs is now the DSiware code rather than the DSi gamecard code. This is a compatibility break with older versions. To get the same result as previous invocations of ndstool you need to use the argument &amp;lt;code&amp;gt;-u 00030000&amp;lt;/code&amp;gt;. If you were using a different title ID already now you will need to specify the unit code. For example, &amp;lt;code&amp;gt;-u 00030004&amp;lt;/code&amp;gt; now becomes &amp;lt;code&amp;gt;-u 00030004 -uc 3&amp;lt;/code&amp;gt;, and you can skip the &amp;lt;code&amp;gt;-u 00030004&amp;lt;/code&amp;gt; because that&#039;s the new default value.&lt;br /&gt;
* SDK:&lt;br /&gt;
** NitroFS now works when ROMs are loaded from Unlaunch (with some limitations, paths can only be up to 0x40 characters long, and file/folder names are in 8.3 name format). Thanks to [https://github.com/edo9300 @edo9300] for his device list support additions and his suggestions for ndstool.&lt;br /&gt;
** The example that accessess all filesystems has been improved to check the &amp;lt;code&amp;gt;nand2&amp;lt;/code&amp;gt; filesystem as well.&lt;br /&gt;
&#039;&#039;&#039;v1.14.1&#039;&#039;&#039;&lt;br /&gt;
* libnds:&lt;br /&gt;
** NitroFS now detects failures during initialization. &amp;lt;code&amp;gt;nitroFSInit()&amp;lt;/code&amp;gt; has been cleaned and documented. Normally, &amp;lt;code&amp;gt;nitroFSInit()&amp;lt;/code&amp;gt; tries to open the NDS ROM as a file, then it tries to read NitroFS from Slot-2 cartridge memory, and then it falls back to cartridge commands. There were no checks to verify that cartridge commands worked.&lt;br /&gt;
** The exit-to-loader system has been slightly modified to increase compatibility with loaders that don&#039;t determine the size of DSi RAM correctly. The compatibility break happened in Version 0.13.0.&lt;br /&gt;
** &amp;lt;code&amp;gt;keysCurrent()&amp;lt;/code&amp;gt; has been marked as deprecated. &amp;lt;code&amp;gt;keyboardUpdate()&amp;lt;/code&amp;gt; has been modified to use &amp;lt;code&amp;gt;keysHeld()&amp;lt;/code&amp;gt; instead. This isn&#039;t a new break, this just adds a warning for users of BlocksDS. The break happened in Version 0.13.0.&lt;br /&gt;
** Function &amp;lt;code&amp;gt;dlopen_FILE()&amp;lt;/code&amp;gt; has been introduced. It works like &amp;lt;code&amp;gt;dlopen()&amp;lt;/code&amp;gt;, but it takes a &amp;lt;code&amp;gt;FILE&amp;lt;/code&amp;gt; handle as input instead of a path. This is useful to load dynamic libraries that are already in RAM instead of in the filesystem.&lt;br /&gt;
** The check that verifies that the IPC transfer region fits in memory has been fixed to not overlap the following memory regions.&lt;br /&gt;
** Card functions now use the right &amp;lt;code&amp;gt;CARD_&amp;lt;/code&amp;gt; defines. [https://github.com/lifehackerhansol @lifehackerhansol]&lt;br /&gt;
* DSWiFi:&lt;br /&gt;
** Some minor improvements to the intergration with lwIP.&lt;br /&gt;
** Enable and fix some compiler warnings.&lt;br /&gt;
* LibXM7:&lt;br /&gt;
** Enable and fix some compiler warnings.&lt;br /&gt;
* grit:&lt;br /&gt;
** Fix &amp;lt;code&amp;gt;dib_pixel_replace()&amp;lt;/code&amp;gt; for 32-bit values.&lt;br /&gt;
** Added some missing &amp;lt;code&amp;gt;break&amp;lt;/code&amp;gt; statements.&lt;br /&gt;
** Enable and fix some compiler warnings.&lt;br /&gt;
* mmutil:&lt;br /&gt;
** Enable and fix some compiler warnings.&lt;br /&gt;
* SDK:&lt;br /&gt;
** Document more of the behaviour of the exit-to-loader process of the NDS Homebrew Menu and the bootstub struct.&lt;br /&gt;
** Enable and fix some compiler warnings in dsltool, teaktool and mkfatimg.&lt;br /&gt;
&#039;&#039;&#039;v1.14.0&#039;&#039;&#039;&lt;br /&gt;
* libnds:&lt;br /&gt;
** Added a new driver to read the NAND filesystem using standard filesystem functions (like &amp;lt;code&amp;gt;fopen()&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;fread()&amp;lt;/code&amp;gt;). The NAND filesystem is normally mounted in read-only mode, but developers can enable writing to it if required. This is done so that the contents of NAND are protected by default. [https://github.com/edo9300 @edo9300]&lt;br /&gt;
** Fix regression causing &amp;lt;code&amp;gt;keysDownRepeat()&amp;lt;/code&amp;gt; not report keys on their first press. [https://github.com/edo9300 @edo9300]&lt;br /&gt;
** Improve accuracy of &amp;lt;code&amp;gt;dotf32()&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;crossf32()&amp;lt;/code&amp;gt;. In ARM mode their performance has increased. &amp;lt;code&amp;gt;crossf32()&amp;lt;/code&amp;gt; is now always built as ARM. [https://github.com/Kuratius @Kuratius]&lt;br /&gt;
** Fix a bug that caused &amp;lt;code&amp;gt;rmdir()&amp;lt;/code&amp;gt; to be unable to remove empty directories (because they still contained entries &amp;lt;code&amp;gt;&amp;amp;quot;.&amp;amp;quot;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;amp;quot;..&amp;amp;quot;&amp;lt;/code&amp;gt;). Thanks to [https://github.com/edo9300 @edo9300] for the report and [https://github.com/asiekierka @asiekierka] for the fix.&lt;br /&gt;
** Added &amp;lt;code&amp;gt;fatGetVolumeLabel()&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;fatSetVolumeLabel()&amp;lt;/code&amp;gt;. [https://github.com/asiekierka @asiekierka]&lt;br /&gt;
** Added &amp;lt;code&amp;gt;SDMMC_getCidRaw()&amp;lt;/code&amp;gt;. [https://github.com/edo9300 @edo9300]&lt;br /&gt;
** Add basic counting semaphore helpers for the cothread module.&lt;br /&gt;
** Implement &amp;lt;code&amp;gt;cothread_yield_signal()&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;cothread_send_signal()&amp;lt;/code&amp;gt; to allow threads to sleep until a user-defined event is sent to the scheduler. If all threads are waiting for signals or interrupts the CPU will enter low-power mode.&lt;br /&gt;
** Mutexes and semaphores now use signals to yield and to notify other threads of changes to their state.&lt;br /&gt;
** Add a function to create an &amp;lt;code&amp;gt;argv&amp;lt;/code&amp;gt; struct if the program is running on DSi, the loader hasn&#039;t provided a valid &amp;lt;code&amp;gt;argv&amp;lt;/code&amp;gt; struct, but there is a valid device list. [https://github.com/edo9300 @edo9300]&lt;br /&gt;
** Replaced old FIFO IRQ defines by the new ones.&lt;br /&gt;
** Some warnings have been fixed.&lt;br /&gt;
* DSWiFi:&lt;br /&gt;
** Migrate from sgIP to lwIP. lwIP is being maintained, and it is used by lots of other projects, which means it has been tested properly. It also supports more features than sgIP.&lt;br /&gt;
** This migration makes the size of NDS ROMs increse, so the build system of DSWiFi now creates new releases of the library without lwIP. They are useful for developers that only want to use the local multiplayer (NiFi) features of DSWiFi. The new library archives are called &amp;lt;code&amp;gt;libdswifi9_noip.a&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;libdswifi9d_noip.a&amp;lt;/code&amp;gt;.&lt;br /&gt;
** One big difference is that programs using DSWiFi will need to use threads. Instead of using &amp;lt;code&amp;gt;swiWaitForVBlank()&amp;lt;/code&amp;gt; they will need to use &amp;lt;code&amp;gt;cothread_yield_irq(IRQ_VBLANK)&amp;lt;/code&amp;gt;, for example. If they have a loop where they call &amp;lt;code&amp;gt;recv()&amp;lt;/code&amp;gt; they will also need to call &amp;lt;code&amp;gt;cothread_yield()&amp;lt;/code&amp;gt; at some point in the loop.&lt;br /&gt;
** Functions &amp;lt;code&amp;gt;write()&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;read()&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;close()&amp;lt;/code&amp;gt; now work with socket file descriptors.&lt;br /&gt;
** Functions &amp;lt;code&amp;gt;readv()&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;writev()&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;recvmsg()&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;sendmsg()&amp;lt;/code&amp;gt; have been implemented.&lt;br /&gt;
** Some warnings have been fixed on ARM9 code.&lt;br /&gt;
* Maxmod:&lt;br /&gt;
** &amp;lt;code&amp;gt;mmPlayModule()&amp;lt;/code&amp;gt; has been deprecated because its name is misleading and it expects you to pass the address of the MAS file with an offset. The new function &amp;lt;code&amp;gt;mmPlayMAS()&amp;lt;/code&amp;gt; replaces it. It doesn&#039;t require the offset, and it has a name more descriptive. &amp;lt;code&amp;gt;mmPlayMAS()&amp;lt;/code&amp;gt; is also available in the ARM9, not just the ARM7.&lt;br /&gt;
** Fix mode C mixer. Sounds didn&#039;t end until they were stopped manually, not when they reached the end of their sample.&lt;br /&gt;
** Some small optimizations. [https://github.com/GValiente @GValiente]&lt;br /&gt;
** Document some parts of the code.&lt;br /&gt;
* mmutil:&lt;br /&gt;
** Make the output less verbose by default.&lt;br /&gt;
** In module files, if a pattern uses an invalid instrument (with a sample of length zero), the instrument is now removed from the pattern before being exported. This prevents crashes on GBA when playing songs with invalid instruments. A warning is printed for each instance of invalid instruments being used.&lt;br /&gt;
** In module files with instrument note maps (supported by IT and XM) mmutil now checks that the samples used in all note map entries are valid. If not, a warning is printed and it is set to 0. The warning is only printed once per sample per instrument.&lt;br /&gt;
** Prevent mmutil from exporting more than 200 pattern orders for modules. The MAS format is hardcoded to 200 pattern orders, so any module that has more entries than that will be clamped and mmutil will print a warning.&lt;br /&gt;
* SDK:&lt;br /&gt;
** In the crt0 of the ARM9, generate an &amp;lt;code&amp;gt;argv&amp;lt;/code&amp;gt; struct if the application is running on a DSi, there is no valid &amp;lt;code&amp;gt;argv&amp;lt;/code&amp;gt; provided by the loader, but there is a valid device list. [https://github.com/edo9300 @edo9300]&lt;br /&gt;
** Add example of how to play MAS files with Maxmod manually without a soundbank.&lt;br /&gt;
** Improve example &amp;lt;code&amp;gt;nitrofs_and_fat&amp;lt;/code&amp;gt; to also display the contents of the NAND filesystem. It has been renamed to &amp;lt;code&amp;gt;all_filesystems&amp;lt;/code&amp;gt;.&lt;br /&gt;
** Update DSWiFi examples to work with the new version of DSWiFi.&lt;br /&gt;
** Add example of how to wait for signals in multithreading applications.&lt;br /&gt;
** Add test of setting and getting filesystem labels.&lt;br /&gt;
** Allow building all examples and tests in parallel. [https://github.com/steveschnepp @steveschnepp]&lt;br /&gt;
&#039;&#039;&#039;v1.13.1&#039;&#039;&#039;&lt;br /&gt;
* libnds:&lt;br /&gt;
** The detection of the official Slot-2 rumble pak (NTR-008) has been fixed. It used to be detected as a SuperCard. Also, the rumble API of libnds is now more flexible when detecting the type of activation of rumble. [https://github.com/asiekierka @asiekierka]&lt;br /&gt;
** The enum of IPC commands used by DSWiFi has been moved from libnds to DSWiFi and made private.&lt;br /&gt;
** The system monitor of DS debugger units is now preserved during the startup process of libnds. The last 512KB of RAM are reserved so that the heap can&#039;t grow too much and overwrite them (they can be used again if the developer manually calls &amp;lt;code&amp;gt;reduceHeapSize(0)&amp;lt;/code&amp;gt;). Additionally, libnds won&#039;t setup an exception handler if it detects a debugger unit. The developer has to do it manually by calling &amp;lt;code&amp;gt;defaultExceptionHandler()&amp;lt;/code&amp;gt;. Thanks [https://github.com/Gericom @Gericom] for the bug report.&lt;br /&gt;
* Maxmod:&lt;br /&gt;
** Fix instruments with panning and pitch envelope enabled at the same time. Previously, the panning envelope was used for the pitch envelope by mistake.&lt;br /&gt;
** On GBA now &amp;lt;code&amp;gt;mmInit()&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;mmInitDefault()&amp;lt;/code&amp;gt; return error if the number of requested channels is bigger than 32. This wasn&#039;t supported anyway, and it would have silently failed if allowed.&lt;br /&gt;
** The memory used by the panning slide VCMD on XM modules was using the volume slide memory when panning to the right (it used the right memory when panning to the left).&lt;br /&gt;
** The memory entries used by effects and volume effects has been documented.&lt;br /&gt;
** The IPC command for the ARM9 &amp;lt;code&amp;gt;mmReverbConfigure()&amp;lt;/code&amp;gt; function has been simplified. It will now send all parameters in all cases, but this is what users will be using in most cases. In exchange for this, the function becomes a lot smaller and easier to maintain.&lt;br /&gt;
** Check a few TODO notes and fix them (or remove them if they didn&#039;t need any work).&lt;br /&gt;
** In the GBA port, move a function outside of IWRAM. This brings down IWRAM usage to a size lower than the ASM version of Maxmod, and it doesn&#039;t affect performance in a noticeable way. [https://github.com/aronson @aronson]&lt;br /&gt;
** Remove &amp;lt;code&amp;gt;always_inline&amp;lt;/code&amp;gt; attribute from some functions to fix a build error with clang. [https://github.com/GalaxyShard @GalaxyShard]&lt;br /&gt;
** In DS mode, using Maxmod commands before initializing it will now show a crash error. This is more informative than simply ignoring commands.&lt;br /&gt;
** A critical bug has been fixed on the ARM7. In some cases, it was possible for the ARM7 message handler to be interrupted while editing the state of the circular buffer. This would leave the buffer in an inconsistent state and make the ARM7 treat uninitialized values in memory as legitimate ARM9 commands, causing crashes. Thanks to @pyramidensurfer for a test that managed to reproduce the error reliably.&lt;br /&gt;
** The ARM7 communications code is now built as Thumb instead of ARM to save space.&lt;br /&gt;
** The GBA version of Maxmod is now built with a format of debug symbols that no$gba can understand.&lt;br /&gt;
* DSWiFi:&lt;br /&gt;
** The enum of IPC commands used by DSWiFi has been moved from libnds to DSWiFi and made private. Some commands weren&#039;t used and they have been removed.&lt;br /&gt;
** &amp;lt;code&amp;gt;Wifi_InitDefault()&amp;lt;/code&amp;gt; now takes an int as argument instead of a bool. This lets the function get more flags in the future if they are implemented. Old C code using true or false will still work.&lt;br /&gt;
** Lots of functions have been made private: Everything that has to do with manual initialization and synchronization between CPUs. Making this code private gives DSWiFi more flexibility to refactor the code.&lt;br /&gt;
** The initialization code of the library has been cleaned up and simplified.&lt;br /&gt;
** It is now possible to deinitialize DSWiFi with &amp;lt;code&amp;gt;Wifi_Deinit()&amp;lt;/code&amp;gt;. This will keep the sgIP memory pool still in the heap, but it will free all other resources. sgIP can&#039;t be reinitialized safely at the moment.&lt;br /&gt;
** &amp;lt;code&amp;gt;Wifi_InitDefault()&amp;lt;/code&amp;gt; now accepts flags &amp;lt;code&amp;gt;WIFI_DISABLE_LED&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;WIFI_ENABLE_LED&amp;lt;/code&amp;gt; to let DSWiFi know if it can control the LED blinking or not. By default, the LED is controlled by DSWiFi.&lt;br /&gt;
** &amp;lt;code&amp;gt;Wifi_InitDefault()&amp;lt;/code&amp;gt; now accepts flags &amp;lt;code&amp;gt;WIFI_INTERNET_AND_LOCAL&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;WIFI_LOCAL_ONLY&amp;lt;/code&amp;gt;. It makes it possible to initialize DSWiFi without sgIP if the game isn&#039;t going to connect to the Internet. This saves over a 100 KBs of RAM in games that only want to setup a local multiplayer game. DSWiFi can be de-initialized and re-initialized in &amp;amp;quot;local only&amp;amp;quot; or &amp;amp;quot;internet and local&amp;amp;quot; modes whenver your application requires it. The documentation has been updated to reflect the new improvements.&lt;br /&gt;
** Some static arrays used by sgIP are now allocated dynamically when the library is initialized. They are also freed when it is de-initialized.&lt;br /&gt;
* mmutil:&lt;br /&gt;
** Change version number. Now it&#039;s set from the environment instead of a hardcoded variable in the Makefile.&lt;br /&gt;
** Fix pattern flags when notes have non-empty volume. This bug was introduced in version 1.12.0. Thanks [https://github.com/GValiente @GValiente] for the bug report and [https://github.com/asiekierka @asiekierka] for the help.&lt;br /&gt;
* SDK:&lt;br /&gt;
** The local multiplayer example of DSWiFi now initializes DSWiFi without sgIP so to save RAM.&lt;br /&gt;
** Use C23 and C++23 to build all the ARM libraries.&lt;br /&gt;
** GCC has been patched to always build &amp;lt;code&amp;gt;__aeabi_lmul&amp;lt;/code&amp;gt; in ARM mode, even for Thumb targets. This always leads to smaller and faster 64-bit multiply operations. [https://github.com/asiekierka @asiekierka]&lt;br /&gt;
** picolibc has been updated with minor fixes to the &amp;lt;code&amp;gt;printf&amp;lt;/code&amp;gt; function family.&lt;br /&gt;
&#039;&#039;&#039;v1.13.0&#039;&#039;&#039;&lt;br /&gt;
* libnds:&lt;br /&gt;
** A new function to control the LCD backlight level has been implemented, &amp;lt;code&amp;gt;systemSetBacklightLevel()&amp;lt;/code&amp;gt;. It works on DS, DS Lite and DSi.&lt;br /&gt;
** Add a helper to set the master sound volume from the ARM9 called &amp;lt;code&amp;gt;soundSetMasterVolume()&amp;lt;/code&amp;gt;.&lt;br /&gt;
** videoGL functions now copy textures and palettes to VRAM using &amp;lt;code&amp;gt;memcpy()&amp;lt;/code&amp;gt; instead of DMA copies. This will allow interrupts to happen while the copy is taking place instead of blocking the interrupts.&lt;br /&gt;
** FatFs has been updated to R0.16. Also, &amp;lt;code&amp;gt;stat()&amp;lt;/code&amp;gt; now returns the actual creation timestamp of the file instead of using the time of the last access or modification. [https://github.com/asiekierka @asiekierka]&lt;br /&gt;
** libnds now checks that TLS isn&#039;t used from IRQ handlers. This is only checked in debug builds of libnds because it would affect performance of some applications.&lt;br /&gt;
** Add support for compile-time evaluation of the &amp;lt;code&amp;gt;math.h&amp;lt;/code&amp;gt; functions. [https://github.com/Kuratius @Kuratius]&lt;br /&gt;
** &amp;lt;code&amp;gt;errno&amp;lt;/code&amp;gt; handling has been fixed in &amp;lt;code&amp;gt;scandir()&amp;lt;/code&amp;gt;. [https://github.com/shinyquagsire23 @shinyquagsire23]&lt;br /&gt;
** Fix memory leak in &amp;lt;code&amp;gt;open()&amp;lt;/code&amp;gt; when a file is failed to be opened. [https://github.com/shinyquagsire23 @shinyquagsire23]&lt;br /&gt;
** Return 0 as modification and access dates of NitroFS files instead of leaving the fields uninitialized.&lt;br /&gt;
** Don&#039;t clear &amp;lt;code&amp;gt;errno&amp;lt;/code&amp;gt; in &amp;lt;code&amp;gt;readdir()&amp;lt;/code&amp;gt;. [https://github.com/asiekierka @asiekierka]&lt;br /&gt;
** Add new ARM7 audio defines that are less confusing than the previous ones. They are based on the names used by GBATEK. The audio helpers of libnds now use the new defines.&lt;br /&gt;
** The FatFs submodule link has been changed. If you want to update your current clone of BlocksDS you will need to manually edit &amp;lt;code&amp;gt;.git/modules/libs/libnds/modules/fatfs/config&amp;lt;/code&amp;gt; and change the URL to &amp;amp;quot;blocksds&amp;amp;quot; instead of &amp;amp;quot;WonderfulToolchain&amp;amp;quot;. You can also do a fresh clone.&lt;br /&gt;
** Some Doxygen comments with missing information have been completed.&lt;br /&gt;
** The internal function &amp;lt;code&amp;gt;vramGetBank()&amp;lt;/code&amp;gt; has been improved with error checking.&lt;br /&gt;
** Some videoGL code has been documented.&lt;br /&gt;
* Maxmod&lt;br /&gt;
** The port to C has been completed. The only code left in assembly is the one that does software audio mixing on the GBA and the ARM7 of the DS. All of the definitions to access structures from assembly code have been deleted (except for the ones needed for the software mixing code).&lt;br /&gt;
** Some functions now return error codes instead of &amp;lt;code&amp;gt;void&amp;lt;/code&amp;gt;: &amp;lt;code&amp;gt;mmInit()&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;mmInitDefault()&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;mmInitDefaultMem()&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;mmLoad()&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;mmUnload()&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;mmLoadEffect()&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;mmUnloadEffect()&amp;lt;/code&amp;gt;.&lt;br /&gt;
** In the GBA port Maxmod can now be deinitialized with &amp;lt;code&amp;gt;mmEnd()&amp;lt;/code&amp;gt;. This isn&#039;t possible on DS yet.&lt;br /&gt;
** Helpers &amp;lt;code&amp;gt;mmGetModuleCount()&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;mmGetSampleCount()&amp;lt;/code&amp;gt; have been added to get the number of modules and samples available in the loaded sound bank. They are available from both CPUs. Previously, it was only possible on the ARM9, and only by accessing internal variables of Maxmod.&lt;br /&gt;
** The following functions now check if the provided ID is out of bounds: &amp;lt;code&amp;gt;mmEffect()&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;mmEffectEx()&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;mmStart()&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;mmJingle()&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;mmLoad()&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;mmUnload()&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;mmLoadEffect()&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;mmUnloadEffect()&amp;lt;/code&amp;gt;.&lt;br /&gt;
** All arrays have been marked as &amp;lt;code&amp;gt;const&amp;lt;/code&amp;gt;. Some functions have been moved back from IWRAM to ROM. This has no effect in the DS port, but it helps the GBA port reduce IWRAM usage.&lt;br /&gt;
** Several comments have been added to the code.&lt;br /&gt;
** The code now uses the struct definitions of the headers instead of using magic numbers and assembly defines. Several variables have been modified to use the right types (for example, instead of using a &amp;lt;code&amp;gt;void&amp;lt;/code&amp;gt; pointer, they use now pointers to the right type of struct).&lt;br /&gt;
** A small bug when handling module channel bflags has been fixed.&lt;br /&gt;
** Fix the way in which the code that handles DCT accesses the instrument note map. This is a bug carried on from the assembly code.&lt;br /&gt;
** &amp;lt;code&amp;gt;mmSetPosition()&amp;lt;/code&amp;gt; is now available on the DS, not just the GBA.&lt;br /&gt;
** &amp;lt;code&amp;gt;mmJingleStart()&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;mmJingleStop()&amp;lt;/code&amp;gt; have been implemented. They behave like &amp;lt;code&amp;gt;mmStart()&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;mmStop()&amp;lt;/code&amp;gt;, so now jingles can also be played in a loop and they can be stopped at any point.&lt;br /&gt;
** &amp;lt;code&amp;gt;mmJinglePause()&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;mmJingleResume()&amp;lt;/code&amp;gt; have been implemented.&lt;br /&gt;
** &amp;lt;code&amp;gt;mmJingleActive()&amp;lt;/code&amp;gt; has been implemented.&lt;br /&gt;
** &amp;lt;code&amp;gt;mmPosition()&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;mmJingle()&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;mmActiveSub()&amp;lt;/code&amp;gt; have been deprecated. Use &amp;lt;code&amp;gt;mmSetPosition()&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;mmJingleStart()&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;mmJingleActive()&amp;lt;/code&amp;gt; instead.&lt;br /&gt;
** &amp;lt;code&amp;gt;mmGetPosition()&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;mmGetPositionRow()&amp;lt;/code&amp;gt; have been implemented on the ARM9. The ARM7 refreshes the position once per frame, so the tick counter can easily skip values from the point of view of the ARM9. For that reason, &amp;lt;code&amp;gt;mmGetPositionTick()&amp;lt;/code&amp;gt; hasn&#039;t been implemented.&lt;br /&gt;
** Sound effect handling has been heavily refactored. The ARM7 code that creates and reuses handles is now cleaner. The code that synchronizes the state of the sound effects from the ARM7 to the ARM9 has been removed. Now, the ARM9 sends messages to the ARM7 and it waits for the ARM7 to send the resulting handle to the ARM9. The previous system generated handles on the ARM9, which could cause channels to become permanently marked as &amp;amp;quot;busy&amp;amp;quot; on the ARM9 even if they were free on the ARM7.&lt;br /&gt;
** &amp;lt;code&amp;gt;mmEffectCancel()&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;mmEffectCancelAll()&amp;lt;/code&amp;gt; now work properly on DS.&lt;br /&gt;
** &amp;lt;code&amp;gt;mmEffectCancelAll()&amp;lt;/code&amp;gt; can now stop released sound effects.&lt;br /&gt;
** &amp;lt;code&amp;gt;mmEffectRelease()&amp;lt;/code&amp;gt; now has a big warning in the documentation mentioning that any effect that has been released can only be stopped by itself, by another effect or module, or by &amp;lt;code&amp;gt;mmEffectCancelAll()&amp;lt;/code&amp;gt;. It can&#039;t be stopped by &amp;lt;code&amp;gt;mmEffectCancel()&amp;lt;/code&amp;gt;.&lt;br /&gt;
** A bug has been fixed where there could be memory corruption if a new active channel was requested but no more channels were available.&lt;br /&gt;
** In the documentation, create individual section for functions related to jingles. Keeping them in a different page than the functions for the main module means it&#039;s easier to see the limitations of jingles.&lt;br /&gt;
** Events of type &amp;lt;code&amp;gt;MMCB_SONGMESSAGE&amp;lt;/code&amp;gt; now include the layer (&amp;lt;code&amp;gt;MM_MAIN&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;MM_JINGLE&amp;lt;/code&amp;gt;) as part of the data passed to the callback. This is a compatibility break, but it&#039;s very unlikely that anyone is getting events from a jingle, so it&#039;s very unlikely to break any project. Events are rarely used, so the probability of ever finding a compatibility issue is almost 0.&lt;br /&gt;
** Fix a crash that would happen when playing modules or jingles with more channels than allocated by Maxmod. Now, when Maxmod detects that the module (or jingle) tries to use a channel that is outside of the limits, it will just stop the song.&lt;br /&gt;
** &amp;lt;code&amp;gt;mmSetPatternEx()&amp;lt;/code&amp;gt; has been implemented, which lets the caller specify the new pattern order and row, not just the order like with &amp;lt;code&amp;gt;mmSetPattern()&amp;lt;/code&amp;gt;.&lt;br /&gt;
** Build library with &amp;lt;code&amp;gt;-Os&amp;lt;/code&amp;gt; instead of &amp;lt;code&amp;gt;-O2&amp;lt;/code&amp;gt; in the ARM7 of the NDS to save memory.&lt;br /&gt;
* mmutil:&lt;br /&gt;
** Some error checks have been added to prevent crashes if files can&#039;t be opened or an output path isn&#039;t provided. The application will now exit gracefully.&lt;br /&gt;
** Some magic numbers have been replaced by defines extracted from Maxmod. The code has been documented a bit.&lt;br /&gt;
** Some warnings have been fixed.&lt;br /&gt;
** The code has been reorganized. Variables now have reduced scopes instead of having whole functions as their scope.&lt;br /&gt;
** The command to build NDS test ROMs has been fixed in the documentation.&lt;br /&gt;
** The names of the temporary files created by the tool is no longer hardcoded. This makes it possible to execute mmutil multiple times from the same folder without conflicts.&lt;br /&gt;
* DSWifi:&lt;br /&gt;
** Update instructions of how to enable debug output.&lt;br /&gt;
** Build library with &amp;lt;code&amp;gt;-Os&amp;lt;/code&amp;gt; instead of &amp;lt;code&amp;gt;-O2&amp;lt;/code&amp;gt; to save memory.&lt;br /&gt;
* LibXM7:&lt;br /&gt;
** Use new libnds ARM7 audio defines.&lt;br /&gt;
* SDK:&lt;br /&gt;
** GCC has been updated to version 15.2.0 and binutils has been updated to version 2.45. [https://github.com/asiekierka @asiekierka]&lt;br /&gt;
** The default makefiles now print the mmutil command in verbose mode (&amp;lt;code&amp;gt;V=&amp;lt;/code&amp;gt;).&lt;br /&gt;
** The documentation now has a note about symlinks not working with MinGW.&lt;br /&gt;
** Some Maxmod examples have been improved.&lt;br /&gt;
** An example has been added to show how to set the LCD brightness level on different DS models.&lt;br /&gt;
&#039;&#039;&#039;v1.12.0&#039;&#039;&#039;&lt;br /&gt;
* libnds:&lt;br /&gt;
** Rename symbols of FatFs inside libnds so that users can have their own copy of FatFs. [https://github.com/asiekierka @asiekierka]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
** Improve &amp;lt;code&amp;gt;normalizef32()&amp;lt;/code&amp;gt;: Fix normalization of large and small vectors and optimize its performance. [https://github.com/Kuratius @Kuratius], [https://github.com/19tracks @19tracks]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
** Fix base address of the bootstub struct.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
** Clarify documentation about how &amp;lt;code&amp;gt;keysDownRepeat()&amp;lt;/code&amp;gt; works.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
** Move some key state handling to critical sections to prevent race conditions.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
** Fix implementation of &amp;lt;code&amp;gt;swiIntrWait()&amp;lt;/code&amp;gt; on both CPUs. It has been rewritten in C and moved to the common folder so that both CPUs use the same implementation.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
** Two defines have been added for &amp;lt;code&amp;gt;swiIntrWait()&amp;lt;/code&amp;gt;: &amp;lt;code&amp;gt;INTRWAIT_KEEP_FLAGS&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;INTRWAIT_CLEAR_FLAGS&amp;lt;/code&amp;gt;.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
** Improve FIFO communications code:&lt;br /&gt;
*** In FIFO wait loops, don&#039;t discard current interrupts flags when calling &amp;lt;code&amp;gt;swiIntrWait()&amp;lt;/code&amp;gt;. If a FIFO interrupt has happened, exit the wait loop right away.&lt;br /&gt;
*** In &amp;lt;code&amp;gt;fifoWait*()&amp;lt;/code&amp;gt;, check &amp;lt;code&amp;gt;REG_IME&amp;lt;/code&amp;gt; before calling &amp;lt;code&amp;gt;swiIntrWait()&amp;lt;/code&amp;gt;. If interrupts are disabled, skip the wait. &amp;lt;code&amp;gt;swiIntrWait()&amp;lt;/code&amp;gt; enables interrupts internally, and this may be an issue for code that relies on interrupts being disabled. The only side-effect of not calling &amp;lt;code&amp;gt;swiIntrWait()&amp;lt;/code&amp;gt; is that the CPU won&#039;t be able to enter low-power mode.&lt;br /&gt;
*** Fix some race conditions by moving some code and checks to critical sections.&lt;br /&gt;
*** Add some new definitions related to FIFO interrupts that are clearer than the previous ones.&lt;br /&gt;
*** Prevent deadlocks in some situations. For example, if the software RX queue was almost full, the hardware RX queue is half emptied in the IRQ handler, but it can&#039;t be completely emptied, the FIFO code would never check the hardware RX queue again. There were similar situations with the TX queue. The new code adds checks for the RX and TX hardware queues in some other places (like &amp;lt;code&amp;gt;fifoCheck*()&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;fifoInternalSend()&amp;lt;/code&amp;gt;) that are likely to be executed in any potential user wait loop.&lt;br /&gt;
*** The FIFO buffer has been renamed to global FIFO pool. The send and receive queues have been renamed to RX and TX queues.&lt;br /&gt;
*** Fix global pool corruption when the pool got filled with packets that hadn&#039;t been handled. The code that allocates and frees blocks from the pool can&#039;t handle the situation in which zero blocks are left, so the new code makes sure that there is always at least one free block in the pool.&lt;br /&gt;
*** The code has been documented, and things like the global pool of blocks have been refactored to be much clearer.&lt;br /&gt;
*** Unknown system FIFO commands will now crash the application instead of being ignored.&lt;br /&gt;
** Improve cothread system:&lt;br /&gt;
*** Show a crash message when trying to remove a nonexistent cothread context.&lt;br /&gt;
*** Optimize &amp;lt;code&amp;gt;cothread_yield_irq()&amp;lt;/code&amp;gt;.&lt;br /&gt;
*** Prevent &amp;lt;code&amp;gt;cothread_yield()&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;cothread_yield_irq()&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;cothread_yield_irq_aux()&amp;lt;/code&amp;gt; from inside interrupt handlers. Instead of yielding, &amp;lt;code&amp;gt;cothread_yield()&amp;lt;/code&amp;gt; returns right away, and the others call &amp;lt;code&amp;gt;swiIntrWait()&amp;lt;/code&amp;gt; instead.&lt;br /&gt;
*** &amp;lt;code&amp;gt;swiIntrWait()&amp;lt;/code&amp;gt; is now only called if &amp;lt;code&amp;gt;REG_IME=1&amp;lt;/code&amp;gt;. If not, it is skipped.&lt;br /&gt;
** Refactor global IRQ handler:&lt;br /&gt;
*** Remove the &amp;lt;code&amp;gt;irqDummy()&amp;lt;/code&amp;gt; function, use &amp;lt;code&amp;gt;NULL&amp;lt;/code&amp;gt; pointers instead.&lt;br /&gt;
*** Use fewer cycles to exit the handler when there isn&#039;t an user interrupt handler assigned to the interrupt.&lt;br /&gt;
*** Optimize code that wakes up threads waiting for an interrupt, preventing racen conditions.&lt;br /&gt;
** Compile &amp;lt;code&amp;gt;getHeap*()&amp;lt;/code&amp;gt; functions on the ARM7 too. [https://github.com/asiekierka @asiekierka]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Maxmod:&lt;br /&gt;
** Fix Portamento + Volume Slide effect.&lt;br /&gt;
* Grit:&lt;br /&gt;
** Crash if mode append is selected but it&#039;s not allowed due to other settings. In the past, grit would just overwrite the invalid setting without warning the user.&lt;br /&gt;
** Add note to the documentation about how it is better to reduce quality of graphics before passing them to grit than to let grit reduce the quality.&lt;br /&gt;
* SDK:&lt;br /&gt;
** Documentation:&lt;br /&gt;
*** Add a section to the &amp;amp;quot;Usage notes&amp;amp;quot; page about how to move the DTCM user variables to the end of DTCM using the &amp;lt;code&amp;gt;__dtcm_data_size&amp;lt;/code&amp;gt; symbol.&lt;br /&gt;
** Examples:&lt;br /&gt;
*** Fix example of streaming audio with Maxmod. Instead of reading the file from the Maxmod callback handler (which is inside an interrupt handler) the example now keeps a circular buffer. The main loop writes new data read from the file and the interrupt handler reads the data and sends it to Maxmod.&lt;br /&gt;
*** Add example of displaying a 4 BPP tiled background. Rename the previous &amp;lt;code&amp;gt;bg_regular&amp;lt;/code&amp;gt; example to &amp;lt;code&amp;gt;bg_regular_8bit&amp;lt;/code&amp;gt; to clarify that it loads a 8 BPP tiled background.&lt;br /&gt;
*** Add example of creating an FPS counter.&lt;br /&gt;
*** Add example of how to use the VBL interrupt.&lt;br /&gt;
*** Improve C++ example to also run on the ARM7.&lt;br /&gt;
*** Add example of how to use DMA to do HBLANK scroll effects.&lt;br /&gt;
*** Add example of how to save and load data from the filesystem.&lt;br /&gt;
*** Improve &amp;lt;code&amp;gt;key_input&amp;lt;/code&amp;gt; example to show the values returned by &amp;lt;code&amp;gt;keysDownRepeat()&amp;lt;/code&amp;gt;.&lt;br /&gt;
*** Fix build of the example that prints no$gba debug messages from both CPUs. Floating point support has been removed from &amp;lt;code&amp;gt;printf()&amp;lt;/code&amp;gt; on the ARM7 to save space.&lt;br /&gt;
** Tests:&lt;br /&gt;
*** The exit to loader test has been fixed (even though the exit code doesn&#039;t work properly yet).&lt;br /&gt;
*** Add a test to see how to exit CPU halt state with IRQs.&lt;br /&gt;
*** Add a test to see the effect of deleting threads in different ways.&lt;br /&gt;
*** Add a test to check that CPU contexts are preserved after returning from a cothread yield.&lt;br /&gt;
*** Add a test to check the behaviour of the FIFO handling code when the FIFO hardware and software queues are full.&lt;br /&gt;
*** Some test folders have been moved around for clarity.&lt;br /&gt;
*** Add test of using the &amp;lt;code&amp;gt;__dtcm_data_size&amp;lt;/code&amp;gt; symbol.&lt;br /&gt;
** Other:&lt;br /&gt;
*** Modify the default makefiles to allow the user to specify additional &amp;lt;code&amp;gt;LDFLAGS&amp;lt;/code&amp;gt; when including them.&lt;br /&gt;
&#039;&#039;&#039;v1.11.1&#039;&#039;&#039;&lt;br /&gt;
* libnds:&lt;br /&gt;
** Fix a bug that would crash the application if &amp;lt;code&amp;gt;__aeabi_atexit()&amp;lt;/code&amp;gt; was called when a dynamic library isn&#039;t being loaded.&lt;br /&gt;
* SDK:&lt;br /&gt;
** Fix linker scripts to include the picolibc hook that calls all functions registered with the &amp;lt;code&amp;gt;atexit()&amp;lt;/code&amp;gt; family of functions. This also affected global destructors, which weren&#039;t called at exit. [https://github.com/asiekierka @asiekierka]&lt;br /&gt;
** Improve C++ example to test global destructors in addition to global constructors.&lt;br /&gt;
&#039;&#039;&#039;v1.10.1&#039;&#039;&#039;&lt;br /&gt;
* SDK:&lt;br /&gt;
** Other:&lt;br /&gt;
*** Global initializers have been fixed for picolibc 1.8.10.&lt;br /&gt;
*** Fix conflicting types when including &amp;lt;code&amp;gt;math.h&amp;lt;/code&amp;gt; instead of &amp;lt;code&amp;gt;cmath&amp;lt;/code&amp;gt; from C++ files.&lt;br /&gt;
&#039;&#039;&#039;v1.10.0&#039;&#039;&#039;&lt;br /&gt;
* Maxmod:&lt;br /&gt;
** Most of the files of the library have been converted from assembly to C to help people understand, maintain and improve the code. The remaining assembly code is the software mixing code of the ARM7 (on both DS and GBA modes) and the song player code (which is too big to convert in one go and it will require more work in the future). Both the GBA and DS ports have been tested. Thanks to [https://github.com/Lorenzooone @Lorenzooone] for all his work!&lt;br /&gt;
** Some error checks have been added to code that didn&#039;t have it (like all code using &amp;lt;code&amp;gt;fopen()&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;fread()&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;malloc()&amp;lt;/code&amp;gt;.&lt;br /&gt;
** Code that allocates memory now uses &amp;lt;code&amp;gt;calloc()&amp;lt;/code&amp;gt; instead of &amp;lt;code&amp;gt;malloc()&amp;lt;/code&amp;gt; to clear the buffer before using it.&lt;br /&gt;
** The unused Value32 FIFO handler code in the ARM7 has been removed.&lt;br /&gt;
** Cache management has been fixed. The cache handling functions of Maxmod were incorrect, and they have been removed. Now Maxmod uses the functions of libnds.&lt;br /&gt;
** IPC code that synchronized streaming between ARM7 and ARM9 has been improved. Instead of using shared memory to synchronize CPUs, new FIFO messages have been implemented. The old code required dangerous cache management that could corrupt variables surounding the &amp;amp;quot;ready&amp;amp;quot; flag used by the library.&lt;br /&gt;
* SDK:&lt;br /&gt;
** Other:&lt;br /&gt;
*** GCC has been updated to version 15.1.0 in Wonderful Toolchain. You can check the release notes [https://gcc.gnu.org/gcc-15/changes.html here]. An important addition is the support for &amp;lt;code&amp;gt;#embed&amp;lt;/code&amp;gt;.&lt;br /&gt;
*** picolibc has been updated to version 1.8.10 in Wonderful Toolchain. Check the release notes [https://github.com/picolibc/picolibc/releases/tag/1.8.10 here].&lt;br /&gt;
** Examples:&lt;br /&gt;
*** A new example of how to use sound effects with Maxmod has been added.&lt;br /&gt;
*** The Maxmod streaming example has been fixed to not hang in DSi consoles or DS consoles with DLDI running on the ARM7.&lt;br /&gt;
*** The reverb Maxmod example has bee improved with a new song that makes the effect more evident.&lt;br /&gt;
*** The &amp;amp;quot;sprites&amp;amp;quot; example has been renamed to &amp;amp;quot;sprites_regular&amp;amp;quot; for clarity. Also, 128 KB sprite mapping mode is now used in this example, as this is what most developers would want in their own code.&lt;br /&gt;
*** Some comments have been added to the libnds sound example.&lt;br /&gt;
*** A missing example description has been added.&lt;br /&gt;
&#039;&#039;&#039;v1.9.0&#039;&#039;&#039;&lt;br /&gt;
* libnds:&lt;br /&gt;
** Add initial helpers to load dynamic libraries with &amp;lt;code&amp;gt;dlfcn.h&amp;lt;/code&amp;gt; functions. Note that this is still experimental. &amp;lt;code&amp;gt;dlopen()&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;dlsym()&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;dlerror()&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;dlclose()&amp;lt;/code&amp;gt; are supported.&lt;br /&gt;
** Fixed global C++ constructors that require libnds and the cothread scheduler to be initialized. Some functions previously called from the crt0 have been moved to &amp;lt;code&amp;gt;cothread_main()&amp;lt;/code&amp;gt;, which runs after there is a valid multithreading environment.&lt;br /&gt;
** Deallocate memory reserved for the FAT file system cache if &amp;lt;code&amp;gt;fatInit()&amp;lt;/code&amp;gt; fails.&lt;br /&gt;
** Extend &amp;lt;code&amp;gt;statvfs()&amp;lt;/code&amp;gt; to return the &amp;lt;code&amp;gt;ST_RDONLY&amp;lt;/code&amp;gt; flag for read-only media.&lt;br /&gt;
** File system operations should now return &amp;lt;code&amp;gt;EROFS&amp;lt;/code&amp;gt; for read-only DLDI drivers.&lt;br /&gt;
** Made &amp;lt;code&amp;gt;libndsCrash()&amp;lt;/code&amp;gt; public.&lt;br /&gt;
** Fix potential issues involving FAT file system cache initialization.&lt;br /&gt;
** Add some checks to libc system call functions like &amp;lt;code&amp;gt;open()&amp;lt;/code&amp;gt;.&lt;br /&gt;
* DSWifi:&lt;br /&gt;
** Fix &amp;lt;code&amp;gt;ioctl(FIONREAD, x)&amp;lt;/code&amp;gt;, which used to return &amp;lt;code&amp;gt;EINVAL&amp;lt;/code&amp;gt; even when it succeeded.&lt;br /&gt;
** Remove Access Points from the list of availabled APs after enough time has passed without receiving any beacon packet from them. &amp;lt;code&amp;gt;Wifi_GetData()&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Wifi_GetAPData()&amp;lt;/code&amp;gt; have been updated to work with the changed system.&lt;br /&gt;
** The array that specifies the order in which channels are scanned has been modified so that each channel is scanned the same number of times. This makes it easier to determine which APs to remove from the list of APs because we aren&#039;t prioritizing APs from any channel. Also, scan mode now always start with channel 1.&lt;br /&gt;
** Old RSSI values of APs are now discarded instead of being used to average the value of the RSSI. This doesn&#039;t really affect how the values behave in real life that much, so this change saves memory with no noticeable change in the behaviour of the library.&lt;br /&gt;
** Return error on timeouts when writing to baseband chip.&lt;br /&gt;
** Add error checks when initializing RF chip.&lt;br /&gt;
** Print debug message if the ARM7 TX queue is full when the library tries to add a new packet to it.&lt;br /&gt;
** Some documentation improvements.&lt;br /&gt;
* dsltool:&lt;br /&gt;
** Introduced tool to the repository. This tool is used to convert dynamic libraries in ELF format to DSL format, which is similar to ELF, but simplified. This DSL format can be loaded by libnds with &amp;lt;code&amp;gt;dlopen()&amp;lt;/code&amp;gt;.&lt;br /&gt;
* teaktool:&lt;br /&gt;
** Ensure that ELF files are loaded correctly instead of crashing if they aren&#039;t loaded and the pointer is NULL.&lt;br /&gt;
** Fix format in a printf.&lt;br /&gt;
* SDK:&lt;br /&gt;
** Documentation:&lt;br /&gt;
*** The new dynamic library system has been documented in the main documentation of BlocksDS.&lt;br /&gt;
** Examples:&lt;br /&gt;
*** Three new examples have been added to show how to use the new dynamic library system.&lt;br /&gt;
** crts:&lt;br /&gt;
*** Some initialization has been moved away from the crt0 of the ARM9 to libnds to fix global C++ constructors that require libnds and the cothread scheduler to be initialized.&lt;br /&gt;
*** A new linkerscript to build dynamic libraries has been added.&lt;br /&gt;
** Other:&lt;br /&gt;
*** Libraries are now built with debug symbols (&amp;lt;code&amp;gt;-g&amp;lt;/code&amp;gt;) to help debug applications made with them.&lt;br /&gt;
&#039;&#039;&#039;v1.8.1&#039;&#039;&#039;&lt;br /&gt;
* libnds:&lt;br /&gt;
** Add a helper to convert UTF-16LE text (like the firmware player name and message) to UTF-8.&lt;br /&gt;
** Modify &amp;lt;code&amp;gt;assert()&amp;lt;/code&amp;gt; on the ARM7 to send the information to the ARM9 instead of displaying it on the no$gba console.&lt;br /&gt;
** Added &amp;lt;code&amp;gt;swiIntrWaitAUX()&amp;lt;/code&amp;gt; for the ARM7.&lt;br /&gt;
** The Doxygen documentation of interrupt functions has been fixed.&lt;br /&gt;
** The documentation of the firmware personal data has been improved with a warning saying that the struct may not be initialized right af the beginning of &amp;lt;code&amp;gt;main()&amp;lt;/code&amp;gt; on the ARM9.&lt;br /&gt;
** Always use &amp;lt;code&amp;gt;fake_heap_start&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;fake_heap_end&amp;lt;/code&amp;gt; in &amp;lt;code&amp;gt;sbrk()&amp;lt;/code&amp;gt;.&lt;br /&gt;
** Some assertions in the timer functions were missing checks for values lower than zero, this has been fixed.&lt;br /&gt;
** All instances of &amp;lt;code&amp;gt;sassert()&amp;lt;/code&amp;gt; in common ARM7 and ARM9 code have been replaced by &amp;lt;code&amp;gt;assert()&amp;lt;/code&amp;gt;.&lt;br /&gt;
* DSWifi:&lt;br /&gt;
** Add player name information to beacon packets, and add it to the &amp;lt;code&amp;gt;Wifi_AccessPoint&amp;lt;/code&amp;gt; struct so that clients can see it. This name can be replaced by any string defined by the developer if required.&lt;br /&gt;
** Add way to get the RSSI of the AP we&#039;re connected to. It can be done by calling &amp;lt;code&amp;gt;Wifi_GetData(WIFIGETDATA_RSSI)&amp;lt;/code&amp;gt;. [https://github.com/snowshoe @snowshoe]&lt;br /&gt;
** Always include &amp;lt;code&amp;gt;ASSOCSTATUS_STRINGS&amp;lt;/code&amp;gt; array in builds. It used to be removed in builds without sgIP.&lt;br /&gt;
** Some minor documentation fixes.&lt;br /&gt;
* grit:&lt;br /&gt;
** Update documentation (command line interface and changelog).&lt;br /&gt;
** Let the build system define the version string compiled in the binary.&lt;br /&gt;
* SDK:&lt;br /&gt;
** Examples:&lt;br /&gt;
*** In DSWifi examples, print multiplayer access points in color red when they aren&#039;t accepting new connections. Also, display the player name provided by the beacon frames.&lt;br /&gt;
*** There&#039;s a new test to verify that &amp;lt;code&amp;gt;sbrk()&amp;lt;/code&amp;gt; works correctly in both the ARM7 and ARM9.&lt;br /&gt;
*** Update the asserts example to show that asserts that happen in the ARM7 are sent to the ARM9 and displayed on the screen.&lt;br /&gt;
** Documentation:&lt;br /&gt;
*** Document flag used for &amp;amp;quot;twl&amp;amp;quot; sections in ndstool and the linkerscripts.&lt;br /&gt;
** Other:&lt;br /&gt;
*** Remove duplicated &amp;lt;code&amp;gt;__end__&amp;lt;/code&amp;gt; entries in ARM7 linkerscript files.&lt;br /&gt;
*** The fake heap pointers are now setup on the ARM7, not only the ARM9.&lt;br /&gt;
*** The fake heap limit setup has been documented.&lt;br /&gt;
*** The R4RF DLDI driver included in the SDK has been updated.&lt;br /&gt;
*** Update CMake build system to link the debug version of libnds in debug builds.&lt;br /&gt;
&#039;&#039;&#039;v1.8.0&#039;&#039;&#039;&lt;br /&gt;
* libnds:&lt;br /&gt;
** videoGL now tracks the number of textures using a palettes correctly. Previously, palettes would be deleted even when there were textures using them. [https://github.com/sillysagiri @sillysagiri]&lt;br /&gt;
** &amp;lt;code&amp;gt;scanf()&amp;lt;/code&amp;gt; has been fixed so that it doesn&#039;t record modifier keys on the output string.&lt;br /&gt;
** Fix &amp;lt;code&amp;gt;readFirmware()&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;writeFirmware()&amp;lt;/code&amp;gt; on the ARM9. They would silently fail when the source or destination buffer wasn&#039;t in main RAM (for example, when the buffer was in the stack in DTCM) because the ARM7 can&#039;t access other memory regions. Now, the functions will allocate temporary buffers to transfer data between the ARM7 and ARM9. Also, now they use a mutex so that they are thread-safe.&lt;br /&gt;
** FatFs has been updated to version R0.15ap1.&lt;br /&gt;
** The values used by &amp;lt;code&amp;gt;ledBlink()&amp;lt;/code&amp;gt; have been documented as an enum.&lt;br /&gt;
** There&#039;s a new define for the WiFi hardware in &amp;lt;code&amp;gt;REG_POWERCNT&amp;lt;/code&amp;gt;.&lt;br /&gt;
** There are new definitions for GRF files to specify background types.&lt;br /&gt;
** &amp;lt;code&amp;gt;consoleVprintf()&amp;lt;/code&amp;gt; is now exposed on the ARM7.&lt;br /&gt;
** In the GRF struct there used to be a byte of padding in the struct that wasn&#039;t documented. It has now been explicitly documented as padding.&lt;br /&gt;
** A helper has been added to check if a buffer is inside of main RAM.&lt;br /&gt;
** Some unused internal FIFO command names have been removed.&lt;br /&gt;
* DSWifi:&lt;br /&gt;
** Local multiplayer support has been added (NiFi). One DS acts as a multiplayer host (Access Point) and the other consoles connect to it.&lt;br /&gt;
** The old operation mode has been renamed &amp;amp;quot;Internet mode&amp;amp;quot;. It is possible to switch between Internet and local multiplayer modes depending on the needs of the application.&lt;br /&gt;
** Scan mode now works differently. In Internet mode it shows all Access Points. In local multiplayer mode it only lists multiplayer hosts, in Internet mode the behaviour remains unchanged.&lt;br /&gt;
** CMD/REPLY packet transmit support has been added to the library. This is a way to transfer data between a host and many clients more efficiently. However, regular data packets can still be sent between multiplayer clients and the host if the CMD/REPLY system isn&#039;t adequate for the application.&lt;br /&gt;
** Beacon packet transmission is now properly supported and documented. The packets advertise the number of players currently connected to a host DS and whether the host accepts new connections or not. It also shows the game ID defined by the user, which is used to identify the right AP for a game.&lt;br /&gt;
** When connecting to an Access Point, DSWifi is now honest about the transfer rates supported by the DS. If the AP rejects the connection, it will retry with all the rates defined in the IEEE 802.11b standard (even though only the first 2 out of the 4 are supported), which helps the AP accept the DS.&lt;br /&gt;
** Many new multiplayer-related functions have been added to the library.&lt;br /&gt;
** New documentation has been added, which explains how the library works internally, and how to use DSWifi in Internet and local multiplayer mode.&lt;br /&gt;
** Huge refactor of ARM7 code and the corresponding ARM9 code that communicates with the ARM7. sgIP has been largely untouched. The code has been split into several files, and there is now a clearer split between sgIP and the rest of DSWifi.&lt;br /&gt;
** The helper functions to read the firmware and to set the LED blink status have been removed. Now DSWifi calls the libnds functions instead.&lt;br /&gt;
** Functions have been documented, IEEE 802.11 frame formats have been documented.&lt;br /&gt;
** There are new defines for hardware registers based on GBATEK, and new defines for the fields in the hardware registers that are in used. The [https://melonds.kuribo64.net/board/thread.php?id=34 melonDS forums] have a lot of information (by [https://github.com/Arisotura @Arisotura]) that has also been used as source when documenting register fields (like &amp;lt;code&amp;gt;W_RXFILTER&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;W_RXFILTER2&amp;lt;/code&amp;gt;).&lt;br /&gt;
** Debug messages have been added to the ARM7 code of the library. They are only available in debug builds.&lt;br /&gt;
** WEP password usage has been documented. It wasn&#039;t clear how to use Hex/ASCII passwords.&lt;br /&gt;
** Some unused fields of the &amp;lt;code&amp;gt;WifiData&amp;lt;/code&amp;gt; struct have been removed.&lt;br /&gt;
** Private definitions have been removed from public headers.&lt;br /&gt;
* grit:&lt;br /&gt;
** Update GRF export code to use the new background type definitions proposed by [https://github.com/Garhoogin @Garhoogin] in [https://github.com/Garhoogin/ptexconv/issues/3 ptexconv].&lt;br /&gt;
* SDK&lt;br /&gt;
** Examples:&lt;br /&gt;
*** New DSWifi examples have been added, including local multiplayer examples that show how to send CMD/REPLY packets and regular data frames of arbitrary sizes.&lt;br /&gt;
*** The WEP password input in the AP list example has been improved. The output of the example has also been improved.&lt;br /&gt;
*** The &amp;amp;quot;get website&amp;amp;quot; example now uses socket-related functions the way DSWifi expects them (&amp;lt;code&amp;gt;closesocket()&amp;lt;/code&amp;gt; instead of &amp;lt;code&amp;gt;close()&amp;lt;/code&amp;gt;).&lt;br /&gt;
*** The templates and examples now use the new LED defines.&lt;br /&gt;
** Documentation:&lt;br /&gt;
*** The documentation of DSWifi now explains how to use the Internet and local multiplayer modes, as well as how the library works internally.&lt;br /&gt;
*** The licensing requirements of some libraries (picolibc, libstdc++) has been clarified by [https://github.com/asiekierka @asiekierka].&lt;br /&gt;
** Other:&lt;br /&gt;
*** New debug ARM7 cores have been added. They use the debug versions of libnds and DSWifi.&lt;br /&gt;
*** The CMake build system now uses a linker group for the standard libraries to prevent linking errors due to circular dependencies. Also, banner title formation has been improved.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.7.3&#039;&#039;&#039;&lt;br /&gt;
* libnds:&lt;br /&gt;
** Use custom version of &amp;lt;code&amp;gt;swiSoftReset()&amp;lt;/code&amp;gt; instead of instruction &amp;lt;code&amp;gt;swi #0&amp;lt;/code&amp;gt; to prevent crashes on DSi mode, where &amp;lt;code&amp;gt;swi #0&amp;lt;/code&amp;gt; isn&#039;t implemented.&lt;br /&gt;
** &amp;lt;code&amp;gt;swi*()&amp;lt;/code&amp;gt; functions that don&#039;t actually use &amp;lt;code&amp;gt;swi&amp;lt;/code&amp;gt; instructions (because of bugs in the implementation in the BIOS) have been documented.&lt;br /&gt;
** &amp;lt;code&amp;gt;nitroFSInit()&amp;lt;/code&amp;gt; now sets &amp;lt;code&amp;gt;errno&amp;lt;/code&amp;gt; correctly if there is no NitroFS filesystem in the ROM.&lt;br /&gt;
** The DSi mode checks of &amp;lt;code&amp;gt;soundExtSetFrequencyTWL()&amp;lt;/code&amp;gt; have been moved out of &amp;lt;code&amp;gt;twl&amp;lt;/code&amp;gt; sections so that this function can be safely called even in DS mode (even if it doesn&#039;t have any effect).&lt;br /&gt;
** Calling &amp;lt;code&amp;gt;irqSet(flags, NULL)&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;irqSetAUX(flags, NULL)&amp;lt;/code&amp;gt; is now safe. Previously, this would cause &amp;lt;code&amp;gt;NULL&amp;lt;/code&amp;gt; to be used as interrupt handler instead of disabling the interrupt handler as expected.&lt;br /&gt;
** The type &amp;lt;code&amp;gt;IntFn&amp;lt;/code&amp;gt; has been deprecated in favour of &amp;lt;code&amp;gt;VoidFn&amp;lt;/code&amp;gt;. Even the &amp;lt;code&amp;gt;interrupts.h&amp;lt;/code&amp;gt; header didn&#039;t use &amp;lt;code&amp;gt;IntFn&amp;lt;/code&amp;gt;, it was only used internally in &amp;lt;code&amp;gt;interrupts.c&amp;lt;/code&amp;gt;.&lt;br /&gt;
* SDK:&lt;br /&gt;
** Docker:&lt;br /&gt;
*** The Docker images are now built in a GitHub Actions pipeline in the SDK repository instead of locally in the computers of the developers.&lt;br /&gt;
** Examples:&lt;br /&gt;
*** In the LibXM7 example that uses NitroFS, set pointer to &amp;lt;code&amp;gt;NULL&amp;lt;/code&amp;gt; when it stops being used so that the program keeps track of whether songs are playing or not. This fixes a crash when trying to start a song after stopping a song.&lt;br /&gt;
** Documentation:&lt;br /&gt;
*** Document the release process for new BlocksDS versions.&lt;br /&gt;
*** Document the existence minimal ARM7 core.&lt;br /&gt;
*** Remove references to scripts related to the release process used before using GitHub Actions.&lt;br /&gt;
*** Add link to &amp;lt;code&amp;gt;ndslib-archive&amp;lt;/code&amp;gt; repository so that it can be used as reference to understand old NDS homebrew source code.&lt;br /&gt;
*** Clarify how to build examples in the setup instructions.&lt;br /&gt;
** Other:&lt;br /&gt;
*** Use the right system header in &amp;lt;code&amp;gt;dldipatch&amp;lt;/code&amp;gt; to fix a compiler warning.&lt;br /&gt;
*** PAlib is now available as a pacman package: &amp;lt;code&amp;gt;blocksds-palib&amp;lt;/code&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;v1.7.2&#039;&#039;&#039;&lt;br /&gt;
* libnds:&lt;br /&gt;
** Fix compilation error due to incorrect names of slot-2 rumble functions.&lt;br /&gt;
** Add debug assertions to check that &amp;lt;code&amp;gt;cothread_yield_irq()&amp;lt;/code&amp;gt; is never called with interrupts disabled (when &amp;lt;code&amp;gt;IME&amp;lt;/code&amp;gt; is 0).&lt;br /&gt;
** Small optimization in &amp;lt;code&amp;gt;cothread_yield_irq()&amp;lt;/code&amp;gt; wait loop on the ARM9.&lt;br /&gt;
** Add helper constants for &amp;lt;code&amp;gt;swiUnpackBits()&amp;lt;/code&amp;gt;.&lt;br /&gt;
** Implement &amp;lt;code&amp;gt;getBatteryLevel()&amp;lt;/code&amp;gt; on the ARM7 to mirror the ARM9 implementation.&lt;br /&gt;
** Add function to check if FatFs cache has been initialized or not.&lt;br /&gt;
** Fix code to read official cartridges from the ARM7. The previous code wasn&#039;t able to read data when the destination was in the stack (DTCM isn&#039;t visible by the ARM7).&lt;br /&gt;
** Add error checks on the ARM7 to crash if DLDI is used before being setup.&lt;br /&gt;
** Fix undefined C behaviour with some left shifts.&lt;br /&gt;
** Add missing system include to ARM7 console header.&lt;br /&gt;
* SDK:&lt;br /&gt;
** ARM7:&lt;br /&gt;
*** Restructure default ARM7 code to allow for multiple built-in ARM7 cores. Add &amp;lt;code&amp;gt;ARM7ELF&amp;lt;/code&amp;gt; to the default makefiles to easily select the ARM7 core. Thanks, [https://github.com/GalaxyShard @GalaxyShard].&lt;br /&gt;
** Documentation:&lt;br /&gt;
*** Document the new pre-built ARM7 cores.&lt;br /&gt;
** Examples:&lt;br /&gt;
*** Use the new pre-built ARM7 core in LibXM7 examples instead of custom ARM7 cores.&lt;br /&gt;
*** Update the BIOS bit unpack example to use the new constants introduced to libnds.&lt;br /&gt;
** Other:&lt;br /&gt;
*** In the makefiles of DSWiFi, LibXM7 and Maxmod use &amp;lt;code&amp;gt;ar&amp;lt;/code&amp;gt; from the ARM toolchain rather than the host to build the library.&lt;br /&gt;
*** Improve scripts to release new SDK versions.&lt;br /&gt;
&#039;&#039;&#039;v1.7.1&#039;&#039;&#039;&lt;br /&gt;
* libnds:&lt;br /&gt;
** Fixed a bug where some assembly functions would be removed by the linker. This happened when a function is supposed to fall through the following one, but it is in a different section. If this other section isn&#039;t referenced anywhere, the linker would remove it.&lt;br /&gt;
** A new system to send formatted text messages from the ARM7 to the ARM9 has been implemented. This works by using a ring buffer in main RAM that is allocated from the ARM9, so the user can adjust its size easily. This is still being tested and it may change.&lt;br /&gt;
* SDK:&lt;br /&gt;
** Docker:&lt;br /&gt;
*** Install BlocksDS from pacman packages instead of building it from source. This will make it easier to install other third-party packages. It won&#039;t be needed to build them from source and install them, you will be able to simply install the package. The slim image only has the &amp;lt;code&amp;gt;blocksds-toolchain&amp;lt;/code&amp;gt; package, the dev image has all the &amp;lt;code&amp;gt;blocksds-*&amp;lt;/code&amp;gt; packages.&lt;br /&gt;
** Documentation:&lt;br /&gt;
*** Update setup instructions.&lt;br /&gt;
** Examples:&lt;br /&gt;
*** New example of how to use the ARM7 console to print text on the screen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.7.0&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;IMPORTANT NOTICE&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If you&#039;re updating your previous BlocksDS installation with &amp;lt;code&amp;gt;wf-pacman&amp;lt;/code&amp;gt;, run this command twice instead of once:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;language-shell&amp;quot;&amp;gt;wf-pacman -Syu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This is required because of the new repository that contains the BlocksDS pacman packages.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Changelog&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;libnds:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;An exception handler has been added to the ARM7. This one is a lot less useful than the ARM9 one because it&#039;s only called on undefined instructions and internal libnds errors.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Add &amp;lt;code&amp;gt;dldiRelocate()&amp;lt;/code&amp;gt;, which allows relocating a DLDI driver to a different memory address.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Fix DLDI memory pointers not being relocated for non-BSS/noinit areas.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Update FatFs to R0.15a.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;glColorSubTableEXT()&amp;lt;/code&amp;gt; now supports allocating empty palettes by passing a NULL pointer in the &amp;lt;code&amp;gt;table&amp;lt;/code&amp;gt; argument. This is a small compatibility break because this used to free the palette. However, the old behaviour stays as long as &amp;lt;code&amp;gt;width&amp;lt;/code&amp;gt; is 0. In most cases, &amp;lt;code&amp;gt;table&amp;lt;/code&amp;gt; would be NULL and &amp;lt;code&amp;gt;width&amp;lt;/code&amp;gt; would be 0, so this change is only a problem in unusual cases.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Disable MPU safely before calling the exit-to-loader ARM9 hook in case the hook doesn&#039;t do it properly.&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;maxmod:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Remove non-standard &amp;lt;code&amp;gt;.struct&amp;lt;/code&amp;gt; directives.&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;SDK:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;picolibc:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Add &amp;lt;code&amp;gt;asnprintf()&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;vasnprintf()&amp;lt;/code&amp;gt;, matching newlib.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Fix memory leak in &amp;lt;code&amp;gt;asprintf()&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;vasprintf()&amp;lt;/code&amp;gt;.&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;ndstool:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Add a default icon for new &amp;lt;code&amp;gt;.nds&amp;lt;/code&amp;gt; files, preventing the generation of invalid banners.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Add support for extracting static &amp;lt;code&amp;gt;.nds&amp;lt;/code&amp;gt; icons as &amp;lt;code&amp;gt;.bmp&amp;lt;/code&amp;gt; files.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Allow specifying &amp;lt;code&amp;gt;-bt&amp;lt;/code&amp;gt; without a language ID.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Fix the &amp;lt;code&amp;gt;-n&amp;lt;/code&amp;gt; (latency) argument being a no-op, add corresponding &amp;lt;code&amp;gt;-n1&amp;lt;/code&amp;gt; argument.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Fix the &amp;lt;code&amp;gt;-fh&amp;lt;/code&amp;gt; (fix header CRC) command not working with TWL-enhanced &amp;lt;code&amp;gt;.nds&amp;lt;/code&amp;gt; files.&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Docker:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;curl has been added to both the development and slim images.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Add new BlocksDS pacman repository during setup.&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;pacman:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The pacman server of BlocksDS is now independent from Wonderful Toolchain.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The repository with the package build files is now in the BlocksDS GitHub organization in this URL: https://github.com/blocksds/packages&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;BlocksDS still uses Wonderful Toolchain as source for the compiler and the standard C and C++ libraries. It will keep using wf-pacman for the forseeable future as well.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Special thanks to asie for all his help.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Updating old installations requires the user to run the following commands:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;language-shell&amp;quot;&amp;gt;wf-pacman -Sy wf-pacman&lt;br /&gt;
wf-pacman -Syu&lt;br /&gt;
wf-pacman -Syu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;New libraries are now available as pacman packages (µLibrary, libwoopsi, dsmi) as well as the tool ptexconv.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The GitHub pipeline of the SDK repository has been removed and added to the packages repository.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Documentation:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Update documentation with the instructions to use the new pacman repository.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Some outdated licensing information has been updated.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The docs generation script has been split into a script that generates it and a script that pushes the built documentation to the repository.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The updating guide has been updated for versions between 1.3.0 and 1.7.0.&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Examples:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;New example of gesture recognition using the $N Multistroke Recognizer.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;New example of how to use CMake to build a project with BlocksDS.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Update the exception handler example to also support triggering ARM7 exceptions.&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Other:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;BlocksDS now has a dedicated URL (https://blocksds.skylyrac.net/) which means that it doesn&#039;t rely on GitHub URLs anymore. This main page redirects to the documentation, GitHub organization, and a NDS homebrew development manual.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;A new prototype CMake build system has been added to the repository.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;CC&amp;lt;/code&amp;gt; makefile variables have been renamed to &amp;lt;code&amp;gt;HOSTCC&amp;lt;/code&amp;gt; when they refer to building host tools. This will make it possible to overwrite the host toolchain without also overwriting the ARM toolchain.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Use standard C types and fix includes in mkfatimg.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;bin2c now has an option (&amp;lt;code&amp;gt;--noext&amp;lt;/code&amp;gt;) that lets it export files excluding the extension from the name, the way some very old homebrew projects expect it.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Some sample defines have been added to the makefiles of the templates to clarify its syntax.&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.6.3&#039;&#039;&#039;&lt;br /&gt;
* libnds:&lt;br /&gt;
** Add compile-time warnings about unused result values to various library methods.&lt;br /&gt;
** Ensure &amp;lt;code&amp;gt;nitroFSInit()&amp;lt;/code&amp;gt; checks for successful FAT initialization.&lt;br /&gt;
** Protect the alternate vector base region (&amp;lt;code&amp;gt;0x0000000&amp;lt;/code&amp;gt; onwards) from writing and, if said base is not explicitly enabled, reading. This allows catching null pointer accesses at runtime as data aborts.&lt;br /&gt;
* SDK:&lt;br /&gt;
** crt0:&lt;br /&gt;
*** Fix thread-local storage not being initialized properly during global constructor initialization.&lt;br /&gt;
*** Fix thread-local storage not being initialized at all on ARM7.&lt;br /&gt;
** picolibc:&lt;br /&gt;
*** Add &amp;lt;code&amp;gt;memset_explicit()&amp;lt;/code&amp;gt;.&lt;br /&gt;
*** Improve wctype compatibility.&lt;br /&gt;
*** Update ctype case conversion table to Unicode 15.1.0 .&lt;br /&gt;
** Other:&lt;br /&gt;
*** Add regression test for &amp;lt;code&amp;gt;setVectorBase()&amp;lt;/code&amp;gt;.&lt;br /&gt;
*** Modify templates to use toolchain &amp;lt;code&amp;gt;gcc-ar&amp;lt;/code&amp;gt; over host &amp;lt;code&amp;gt;ar&amp;lt;/code&amp;gt; for packaging libraries; this ensures correct operation on systems without &amp;lt;code&amp;gt;binutils&amp;lt;/code&amp;gt; installed, as well as when building libraries with link-time optimized objects.&lt;br /&gt;
*** Update ARM assembly code to always use UAL syntax.&lt;br /&gt;
*** Update official Docker image to Ubuntu 24.04.&lt;br /&gt;
&#039;&#039;&#039;v1.6.2&#039;&#039;&#039;&lt;br /&gt;
* libnds:&lt;br /&gt;
** Filesystem:&lt;br /&gt;
*** Fixed a bug involving incorrect reads of recently written sectors.&lt;br /&gt;
* SDK:&lt;br /&gt;
** Changes to examples:&lt;br /&gt;
*** Clean the 8-bit double-buffered bitmap example.&lt;br /&gt;
** Other:&lt;br /&gt;
*** Improve FAQ and updating guide.&lt;br /&gt;
&#039;&#039;&#039;v1.6.1&#039;&#039;&#039;&lt;br /&gt;
* libnds:&lt;br /&gt;
** Filesystem:&lt;br /&gt;
*** This version was supposed to include a fix for a bug involving incorrect reads of recently written sectors, but the submodule wasn&#039;t updated correctly so the fix was left out.&lt;br /&gt;
&#039;&#039;&#039;v1.6.0&#039;&#039;&#039;&lt;br /&gt;
* libnds:&lt;br /&gt;
** Peripherals:&lt;br /&gt;
*** Add support for the &amp;amp;quot;retail&amp;amp;quot; (ATTiny-based) Motion Pack accelerometer to the DS Motion Card/Pak driver.&lt;br /&gt;
*** Clean up the DS Motion Card/Pak driver.&lt;br /&gt;
*** Fix the DS Motion Card driver not working on DSi consoles.&lt;br /&gt;
*** Fix the solar sensor not being detected on Boktai 1 cartridges.&lt;br /&gt;
*** Fix &amp;lt;code&amp;gt;peripheralSlot2SolarScanFast()&amp;lt;/code&amp;gt; not working correctly.&lt;br /&gt;
** GL2D:&lt;br /&gt;
*** Fix off-by-one errors when drawing textures with GL2D when the textures aren&#039;t flipped.&lt;br /&gt;
*** Reorganize GL2D setup code to reduce code duplication.&lt;br /&gt;
** Other:&lt;br /&gt;
*** Fix return types and improve performance of integer square root helpers.&lt;br /&gt;
*** In &amp;lt;code&amp;gt;initSystem()&amp;lt;/code&amp;gt;, fix video register clearing ranges and remove redundant VRAM configuration.&lt;br /&gt;
*** The GRF &amp;amp;quot;HDR&amp;amp;quot; RIFF chunk has been deprecated and it has been replaced by a new chunk called &amp;amp;quot;HDRX&amp;amp;quot;, which is exactly the same, but it includes a version field so that it is future-proof.&lt;br /&gt;
*** Fix some issues that prevented LLVM from building the library. Add missing arguments to UDF instructions in the codebase. Add some explicit casts. Use &amp;lt;code&amp;gt;inttypes.h&amp;lt;/code&amp;gt; definitions in &amp;lt;code&amp;gt;printf()&amp;lt;/code&amp;gt; instead of explicit size modifiers.&lt;br /&gt;
*** Fix undefined behaviour warnings due to left shifts of signed integers.&lt;br /&gt;
* grit:&lt;br /&gt;
** Update GRF export code to match the new format used by libnds.&lt;br /&gt;
* ndstool:&lt;br /&gt;
** Use &amp;lt;code&amp;gt;git describe&amp;lt;/code&amp;gt; output as version string instead of a hardcoded outdated version number.&lt;br /&gt;
* SDK:&lt;br /&gt;
** crt0 and linker script files:&lt;br /&gt;
*** It is now possible to place DTCM variables and data at the end of DTCM instead of the beginning. This means the stack can grow downwards without affecting the variables at the beginning of DTCM. This is done by setting the value of the new symbol &amp;lt;code&amp;gt;__dtcm_data_size&amp;lt;/code&amp;gt; to a non-zero value. The linker will helpfully point out if the data area is too small for a given program.&lt;br /&gt;
*** The user-configurable symbol &amp;lt;code&amp;gt;__shared_wram_size&amp;lt;/code&amp;gt; has been added.&lt;br /&gt;
*** Assertions have been added to check that the user-defined sizes produce a valid executable.&lt;br /&gt;
*** Support for &amp;lt;code&amp;gt;.noinit&amp;lt;/code&amp;gt; sections has been added.&lt;br /&gt;
*** Missing copyright notices have been added to linker scripts.&lt;br /&gt;
*** Minor cleanups and adjustments have been done to the crt0 code.&lt;br /&gt;
** picolibc:&lt;br /&gt;
*** Add implementation of &amp;lt;code&amp;gt;&amp;amp;lt;uchar.h&amp;amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
*** Improve &amp;lt;code&amp;gt;powf()&amp;lt;/code&amp;gt; accuracy.&lt;br /&gt;
** Documentation:&lt;br /&gt;
*** Provide information about the build process of .nds files.&lt;br /&gt;
*** Add a FAQ to the documentation.&lt;br /&gt;
*** Add IRC channels to the support channels page.&lt;br /&gt;
*** Add notes about what to do after installing BlocksDS.&lt;br /&gt;
*** Credit all known contributors to all repositories of BlocksDS.&lt;br /&gt;
** Examples:&lt;br /&gt;
*** Add NDS Motion card example.&lt;br /&gt;
*** Add example of scaling and rotating GL2D sprites.&lt;br /&gt;
*** Add &amp;lt;code&amp;gt;inttypes.h&amp;lt;/code&amp;gt; include in some examples that require it after picolibc changes.&lt;br /&gt;
&#039;&#039;&#039;v1.5.0&#039;&#039;&#039;&lt;br /&gt;
* libnds:&lt;br /&gt;
** Exception handling:&lt;br /&gt;
*** Add trivial crash handler to inform the user of unrecoverable error conditions, such as stack corruptions with stack smash protection enabled.&lt;br /&gt;
*** Add trivial release exception handler to inform the user of data aborts and other exception conditions even in release builds. This is enabled by default; this implementation omits stack and register dumps, making the &amp;lt;code&amp;gt;.nds&amp;lt;/code&amp;gt; size increase negligible.&lt;br /&gt;
*** Tweak default exception handler to use a darker red for the background.&lt;br /&gt;
** Filesystem:&lt;br /&gt;
*** Fix using Slot-2 direct access on &amp;lt;code&amp;gt;.nds&amp;lt;/code&amp;gt; files over 32 MB. In particular, this fixes accessing large NitroFS filesystems under NO$GBA.&lt;br /&gt;
** GRF loader:&lt;br /&gt;
*** Improve performance by using fast &amp;lt;code&amp;gt;memcpy()&amp;lt;/code&amp;gt; over &amp;lt;code&amp;gt;swiCopy()&amp;lt;/code&amp;gt;.&lt;br /&gt;
*** Rework loader to only read requested chunks from the filesystem, as opposed to reading all chunks and filtering them at a later stage.&lt;br /&gt;
** Sound:&lt;br /&gt;
*** Add functions to play PSG, noise and sound samples on specific channels.&lt;br /&gt;
*** Add &amp;lt;code&amp;gt;soundCaptureStart&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;soundCaptureStop&amp;lt;/code&amp;gt; high-level helpers for the sound capture functionality.&lt;br /&gt;
** Other:&lt;br /&gt;
*** Add additional error checks to NitroFS and GRF functions.&lt;br /&gt;
*** Add unused result warnings to functions which can cause memory leaks if their result is not deallocated.&lt;br /&gt;
*** Document high-level DSi camera functions.&lt;br /&gt;
*** Fix console &#039;K&#039; ANSI escape code not clearing characters on the line.&lt;br /&gt;
*** Fix includes for the latest picolibc commits.&lt;br /&gt;
* SDK:&lt;br /&gt;
** New examples:&lt;br /&gt;
*** Add ANSI escape code tests.&lt;br /&gt;
*** Add sound capture example.&lt;br /&gt;
** Changes to examples:&lt;br /&gt;
*** Add &amp;lt;code&amp;gt;.MOD&amp;lt;/code&amp;gt; files to LibXM7 examples.&lt;br /&gt;
*** Add missing &amp;lt;code&amp;gt;fclose()&amp;lt;/code&amp;gt; error checks.&lt;br /&gt;
*** Adjust examples using GRF files to showcase the loader&#039;s built-in asset decompression functionality.&lt;br /&gt;
*** Clean up camera and LibXM7 examples.&lt;br /&gt;
** picolibc:&lt;br /&gt;
*** Add support for C11 Annex K functions (&amp;lt;code&amp;gt;_s&amp;lt;/code&amp;gt;-suffixed functions).&lt;br /&gt;
*** Deprecate BSD-specific &amp;lt;code&amp;gt;&amp;amp;lt;sys/tree.h&amp;amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
*** Fix handling &amp;lt;code&amp;gt;NaN&amp;lt;/code&amp;gt; in &amp;lt;code&amp;gt;scanf()&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;strtod()&amp;lt;/code&amp;gt;.&lt;br /&gt;
*** Fix return values for &amp;lt;code&amp;gt;glob()&amp;lt;/code&amp;gt;.&lt;br /&gt;
*** Fix the &amp;lt;code&amp;gt;FD_ZERO()&amp;lt;/code&amp;gt; macro.&lt;br /&gt;
*** Initial support for POSIX.1-2024 in header files.&lt;br /&gt;
*** Other minor header file cleanups.&lt;br /&gt;
*** Replace &amp;lt;code&amp;gt;&amp;amp;lt;_ansi.h&amp;amp;gt;&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;&amp;amp;lt;sys/cdefs.h&amp;amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
** Other:&lt;br /&gt;
*** Fix support for placing the Maxmod soundbank file in the NitroFS file system.&lt;br /&gt;
*** Make the SD card root directory configurable in default Makefile templates.&lt;br /&gt;
*** Remove Teak LLVM from the &amp;lt;code&amp;gt;-slim&amp;lt;/code&amp;gt; Docker image. Most people don&#039;t need this toolchain, as it is in a highly experimental and unmaintained state; in addition, removing it from the image does not prevent people from installing it on top, but significantly reduces the download size for everyone else.&lt;br /&gt;
*** Remove usage of &amp;lt;code&amp;gt;__DATE__&amp;lt;/code&amp;gt; in teaktool.&lt;br /&gt;
&#039;&#039;&#039;1.4.0&#039;&#039;&#039;&lt;br /&gt;
* libnds:&lt;br /&gt;
** Console:&lt;br /&gt;
*** Fix &#039;D&#039; ANSI escape code, which was broken in version 1.3.1.&lt;br /&gt;
*** Document console struct fields. Some of them are only meant to be used by libnds, which has been documented.&lt;br /&gt;
*** The size of some fields in the console struct has been reduced, and the fields have been reordered to reduce padding in the struct. Some fields were unused, and they have been removed.&lt;br /&gt;
*** Now it&#039;s possible to specify the 16-color palette to be used when loading custom fonts with their own palette.&lt;br /&gt;
*** &amp;lt;code&amp;gt;fontCharOffset&amp;lt;/code&amp;gt; now works, which means that it is possible to specify that a font should be loaded after another font, so that two fonts can use the same tile block and save VRAM.&lt;br /&gt;
*** In order to be able to specify the palette and the &amp;lt;code&amp;gt;fontCharOffset&amp;lt;/code&amp;gt;, a new function has been created: &amp;lt;code&amp;gt;consoleInitEx()&amp;lt;/code&amp;gt;.&lt;br /&gt;
*** Mark the defaultConsole struct as const. It is needed to keep that data untouched because the user may initialize the default console several times in a program, and it&#039;s important to be able to return to the right initial state.&lt;br /&gt;
*** Some variables have been made private.&lt;br /&gt;
*** When a character outside of the character set of the font is printed, a space is now printed instead. Previously, it printed tiles outside of the font, which could result in garbage being printed on the screen.&lt;br /&gt;
*** New functions have been added to control the console without using awkward ANSI escape sequences: &amp;lt;code&amp;gt;consoleSetCursor()&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;consoleGetCursor()&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;consoleAddToCursor()&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;consoleSetColor()&amp;lt;/code&amp;gt;.&lt;br /&gt;
** Keyboard:&lt;br /&gt;
*** Make custom keyboards work. This seems to have never worked because libnds overwrote the custom keyboard struct with the default keyboard struct.&lt;br /&gt;
*** Keyboard struct fields have been refactored. Some field sizes are now smaller, some fields are now const. The order has been changed to reduce padding between fields and save even more RAM.&lt;br /&gt;
*** Ensure that the keyboard is always initialized to the right state with &amp;lt;code&amp;gt;keyboardShow()&amp;lt;/code&amp;gt;. This lets you make a keyboard start in uppercase or lowercase state depending on your preferences.&lt;br /&gt;
*** Prevent keyboard functions from hanging if no keyboard is actually visible.&lt;br /&gt;
** Other:&lt;br /&gt;
*** Fix crash when calling &amp;lt;code&amp;gt;peripheralSlot2InitDefault()&amp;lt;/code&amp;gt; in a DSi retail unit. This didn&#039;t happen in DS, or in debugger DSi units.&lt;br /&gt;
*** Add helper to tell the GPU to apply fog to the clear buffer.&lt;br /&gt;
*** Flush RAM before copying console graphics to VRAM.&lt;br /&gt;
*** Implement &amp;lt;code&amp;gt;assert()&amp;lt;/code&amp;gt; in the ARM9 and ARM7. In the ARM9 it works like &amp;lt;code&amp;gt;sassert()&amp;lt;/code&amp;gt;, in the ARM7 it prints a no$gba debug message.&lt;br /&gt;
*** Clarify some comments about decompression routines of the BIOS.&lt;br /&gt;
*** Stop using ANSI escape sequences everywhere. Use direct console API functions instead, which are more self-explanatory.&lt;br /&gt;
*** The functions &amp;lt;code&amp;gt;sysGetCartOwner()&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;sysGetCardOwner()&amp;lt;/code&amp;gt; have been added to be able to check the CPU owner of the Slot-1 and Slot-2 buses.&lt;br /&gt;
*** Add documentation to some functions without it, and fix some Doxygen comments.&lt;br /&gt;
* DSWiFi:&lt;br /&gt;
** Stop generating &amp;lt;code&amp;gt;dswifi_version.h&amp;lt;/code&amp;gt; as part of the build process.&lt;br /&gt;
** Some warnings have been fixed.&lt;br /&gt;
* LibXM7:&lt;br /&gt;
** Fix a crash when unloading MOD files.&lt;br /&gt;
* ndstool:&lt;br /&gt;
** Fix NitroFS filesystem corruption when no banner is generated.&lt;br /&gt;
* grit:&lt;br /&gt;
** Fix &amp;lt;code&amp;gt;libplum&amp;lt;/code&amp;gt; build error with LLVM.&lt;br /&gt;
* mmutil:&lt;br /&gt;
** Fix some incorrect types.&lt;br /&gt;
* SDK:&lt;br /&gt;
** New examples:&lt;br /&gt;
*** Using fog in a 3D scene.&lt;br /&gt;
*** Sorting 3D translucent objects based on their distance to the camera and drawing them in the correct order.&lt;br /&gt;
*** How to use Maxmod song events.&lt;br /&gt;
*** How to stream a WAV file from the filesystem using Maxmod.&lt;br /&gt;
*** How to use the sound API of libnds to play PSG, noise and PCM audio.&lt;br /&gt;
*** How to use custom keyboards with libnds.&lt;br /&gt;
** Changes to examples:&lt;br /&gt;
*** The basic Maxmod example now also shows how to play sound effects.&lt;br /&gt;
*** The example that loads custom fonts with the libnds console has been improved to load 2 fonts with custom 16-color graphics on one screen and one font with 256-color graphics on the other one.&lt;br /&gt;
*** Examples and test now don&#039;t use ANSI escape sequences. This makes the code a lot harder to understand.&lt;br /&gt;
** Other:&lt;br /&gt;
*** Add page to the documentation about how to debug programs with libnds.&lt;br /&gt;
*** dlditool: Use &amp;lt;code&amp;gt;stdbool.h&amp;lt;/code&amp;gt; instead of a custom boolean type.&lt;br /&gt;
*** Doxygen comments have been reorganized in all repositories so that they are uniform across all the codebase.&lt;br /&gt;
*** All Doxyfiles have been updated.&lt;br /&gt;
&#039;&#039;&#039;v1.3.1&#039;&#039;&#039;&lt;br /&gt;
* libnds:&lt;br /&gt;
** Added memory barriers to libnds functions which remap user-accessible memory.&lt;br /&gt;
** &amp;lt;code&amp;gt;consolePrintChar()&amp;lt;/code&amp;gt; has been exposed in the public API. Coupled with internal refactors, this allows using the built-in console without pulling in printf/scanf as a dependency.&lt;br /&gt;
** Fixed function parameters and improved parameters for BIOS RSA functions.&lt;br /&gt;
** Fixed potential memory corruption when &amp;lt;code&amp;gt;micStopRecording()&amp;lt;/code&amp;gt; was called twice.&lt;br /&gt;
** Fixed regression in new touchscreen driver on CDC (TWL).&lt;br /&gt;
** Improved documentation for the BIOS CRC-16 calculation function.&lt;br /&gt;
** Minor optimizations to videoGL and console code.&lt;br /&gt;
* SDK:&lt;br /&gt;
** New examples:&lt;br /&gt;
*** Added a 3D billboard drawing example.&lt;br /&gt;
*** Added a 3D spot lights example.&lt;br /&gt;
*** Added a 3D two-pass rendering example.&lt;br /&gt;
*** Added a BIOS bit unpacking example.&lt;br /&gt;
*** Added a BIOS CRC-16 calculation example.&lt;br /&gt;
*** Added a BIOS RSA decruption example.&lt;br /&gt;
*** Added a microphone recording example.&lt;br /&gt;
*** Added a Maxmod audio modes example.&lt;br /&gt;
*** Added a Maxmod reverb example.&lt;br /&gt;
*** Fixed a regression in the exception handler example.&lt;br /&gt;
** picolibc:&lt;br /&gt;
*** The bundled version of picolibc has been updated.&lt;br /&gt;
*** Added an implementation of &amp;lt;code&amp;gt;posix_memalign()&amp;lt;/code&amp;gt;.&lt;br /&gt;
*** Added support for &amp;lt;code&amp;gt;%a&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;%A&amp;lt;/code&amp;gt; formats in &amp;lt;code&amp;gt;scanf()&amp;lt;/code&amp;gt;.&lt;br /&gt;
*** Fixed &amp;lt;code&amp;gt;freopen()&amp;lt;/code&amp;gt; not resetting the unget buffer.&lt;br /&gt;
*** Fixed hexadecimal string conversion in &amp;lt;code&amp;gt;strtod()&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;strtof()&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;strtold()&amp;lt;/code&amp;gt;.&lt;br /&gt;
*** Fixed &amp;lt;code&amp;gt;lgammal()&amp;lt;/code&amp;gt; corrupting the application-defined &amp;lt;code&amp;gt;signgam&amp;lt;/code&amp;gt; value.&lt;br /&gt;
*** Fixed potential issue when calling &amp;lt;code&amp;gt;fclose()&amp;lt;/code&amp;gt; more than once.&lt;br /&gt;
*** Fixed &amp;lt;code&amp;gt;printf()&amp;lt;/code&amp;gt; rounding issues for &amp;lt;code&amp;gt;%a&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;%f&amp;lt;/code&amp;gt; formats.&lt;br /&gt;
*** General header cleanups have been performed.&lt;br /&gt;
** Other:&lt;br /&gt;
*** Expanded the touch input test to allow sampling input on initial pen press only, as opposed to every frame while the pen is touching the display.&lt;br /&gt;
&#039;&#039;&#039;v1.3.0&#039;&#039;&#039;&lt;br /&gt;
* libnds:&lt;br /&gt;
** New touchscreen driver:&lt;br /&gt;
*** The touchscreen driver has been rewritten from the ground up.&lt;br /&gt;
*** A new routine for filtering measurements is now used for both TSC (NTR) and CDC (TWL) touch inputs. This should provide more accurate results, particularly on more worn down displays and screen protectors. More testing is required, however.&lt;br /&gt;
*** On TSC (NTR), &amp;lt;code&amp;gt;tscMeasure()&amp;lt;/code&amp;gt; now uses the 16-clock-per-conversion method to speed up measurement readouts.&lt;br /&gt;
*** The duration of the critical (interrupt-blocking) section of the touch driver has been reduced, and the TSC (NTR) driver has had its performance optimized on top of that compared to 1.2.0 and below.&lt;br /&gt;
*** On the ARM7 side, &amp;lt;code&amp;gt;touchApplyCalibration&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;touchReadData&amp;lt;/code&amp;gt; have been added to allow more granular access to the touchscreen driver&#039;s logic.&lt;br /&gt;
*** As these commands were only intended for TSC (NTR), &amp;lt;code&amp;gt;touchRead&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;touchReadTemperature&amp;lt;/code&amp;gt; were moved to a new header, &amp;lt;code&amp;gt;tsc.h&amp;lt;/code&amp;gt;, and renamed to &amp;lt;code&amp;gt;tscRead&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;tscReadTemperature&amp;lt;/code&amp;gt; respectively.&lt;br /&gt;
** Interrupt handling:&lt;br /&gt;
*** The interrupt dispatcher has been optimized to use &amp;lt;code&amp;gt;O(1)&amp;lt;/code&amp;gt; as opposed to &amp;lt;code&amp;gt;O(n)&amp;lt;/code&amp;gt; lookups. This is always faster on ARM9, and faster for more than 2-3 defined IRQ handlers on ARM7, which is the common scenario.&lt;br /&gt;
*** Fixed a bug where &amp;lt;code&amp;gt;irqClearAUX()&amp;lt;/code&amp;gt; would disable the non-auxillary interrupt of the same bit mask on ARM7.&lt;br /&gt;
*** Fixed behaviour in setting and clearing of multiple interrupt handlers at a time (bit masks with more than one bit set). Now, setting multiple bits at once with &amp;lt;code&amp;gt;irqSet()&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;irqClear()&amp;lt;/code&amp;gt; acts the same as setting one bit at a time.&lt;br /&gt;
** Memory usage:&lt;br /&gt;
*** ITCM use has been reduced by about 320-380 bytes, depending on your codebase&#039;s use of libnds.&lt;br /&gt;
*** DTCM use has been reduced by 192 bytes - the size of the reserved section at the end of memory is now 64 bytes by default and can be controlled with the &amp;lt;code&amp;gt;__dtcm_reserved_size&amp;lt;/code&amp;gt; linker&amp;lt;br /&amp;gt;&lt;br /&gt;
symbol.&lt;br /&gt;
*** ARM7 IWRAM use has been reduced by 192 bytes - the size of the reserved section at the end of memory is now 64 bytes by default and can be controlled with the &amp;lt;code&amp;gt;__iwram_reserved_size&amp;lt;/code&amp;gt; linker symbol.&lt;br /&gt;
*** The size of the supervisor and IRQ stack can now be controlled by defining the &amp;lt;code&amp;gt;__svc_stack_size&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;__irq_stack_size&amp;lt;/code&amp;gt; linker symbols.&lt;br /&gt;
** Graphics:&lt;br /&gt;
*** A new function has been added to set the object mode (regular, bitmap, window, blended): &amp;lt;code&amp;gt;oamSetBlendMode()&amp;lt;/code&amp;gt;.&lt;br /&gt;
*** A new function has been added to get a SpriteSize entry from the size of a sprite in pixels: &amp;lt;code&amp;gt;oamDimensionsToSize()&amp;lt;/code&amp;gt;. Also, &amp;lt;code&amp;gt;SpriteSize_Invalid&amp;lt;/code&amp;gt; has been introduced to represent dimensions that aren&#039;t valid 2D sprite sizes.&lt;br /&gt;
*** New definitions have been added for the bit fields of the &amp;lt;code&amp;gt;BLDALPHA&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;BLDY&amp;lt;/code&amp;gt; registers.&lt;br /&gt;
*** The following functions now return error codes: &amp;lt;code&amp;gt;glBindTexture()&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;glAssignColorTable()&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;glGetColorTableParameterEXT()&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;glTexParameter()&amp;lt;/code&amp;gt;, making it easier to handle errors gracefully when using them.&lt;br /&gt;
*** There has been a big refactor in videoGL to handle allocation errors gracefully (or at least crash with an assertion if the code can&#039;t recover from the error).&lt;br /&gt;
** Code refactoring:&lt;br /&gt;
*** &amp;lt;code&amp;gt;RTC_CR&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;RTC_CR8&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;HALT_CR&amp;lt;/code&amp;gt; have been renamed to &amp;lt;code&amp;gt;REG_RTCCNT&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;REG_RTCCNT8&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;REG_HALTCNT&amp;lt;/code&amp;gt;, respectively.&lt;br /&gt;
*** GL2D now uses existing &amp;lt;code&amp;gt;videoGL.h&amp;lt;/code&amp;gt; helpers instead of reimplementing its own copies.&lt;br /&gt;
*** Many fields and functions have been documented, including firmware flash commands, DLDI driver structures.&lt;br /&gt;
*** Missing &amp;lt;code&amp;gt;DMA_START&amp;lt;/code&amp;gt; constants have been added.&lt;br /&gt;
*** The constants used in &amp;lt;code&amp;gt;tscReadTemperature&amp;lt;/code&amp;gt; have been documented.&lt;br /&gt;
*** &amp;lt;code&amp;gt;SerialWaitBusy&amp;lt;/code&amp;gt; has been renamed to &amp;lt;code&amp;gt;spiWaitBusy&amp;lt;/code&amp;gt;.&lt;br /&gt;
*** &amp;lt;code&amp;gt;oamSetGfx()&amp;lt;/code&amp;gt; has been moved away from the header to fix C++ builds.&lt;br /&gt;
** Other:&lt;br /&gt;
*** ARM7 SPI bus helper functions have been added: &amp;lt;code&amp;gt;spiExchange&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;spiRead&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;spiWrite&amp;lt;/code&amp;gt;.&lt;br /&gt;
*** &amp;lt;code&amp;gt;consoleLoadFont()&amp;lt;/code&amp;gt; has been cleaned up. Note that the &amp;lt;code&amp;gt;convertSingleColor&amp;lt;/code&amp;gt; option has been removed, as 1bpp fonts are now supported.&lt;br /&gt;
*** Decompression of Huffman-compressed data has been implemented. To faciliate this, &amp;lt;code&amp;gt;decompressStreamStruct()&amp;lt;/code&amp;gt; has been added.&lt;br /&gt;
*** Decompression utility functions are now available in both the ARM9 and ARM7 build of libnds.&lt;br /&gt;
*** &amp;lt;code&amp;gt;glCallList()&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;cardStartTransfer()&amp;lt;/code&amp;gt; now use the safe helper function &amp;lt;code&amp;gt;dmaSetParams()&amp;lt;/code&amp;gt;.&lt;br /&gt;
*** wf-fatfs has been updated, bringing minor performance improvements to directory lookups.&lt;br /&gt;
*** The magic numbers used to represent MPU memory regions have been replaced by definitions.&lt;br /&gt;
*** A missing include has been added to &amp;lt;code&amp;gt;grf.h&amp;lt;/code&amp;gt;.&lt;br /&gt;
* SDK:&lt;br /&gt;
** New examples:&lt;br /&gt;
*** Added an 8-bit bitmap background loading example.&lt;br /&gt;
*** Added an example of combining 3D, 2D sprite, and 2D background display.&lt;br /&gt;
*** Added an example of loading sprites of all graphics types from GRF files.&lt;br /&gt;
*** Added an example of loading bitmap sprites.&lt;br /&gt;
*** Added an example of loading and using affine sprites.&lt;br /&gt;
*** Added examples of using regular windows and windows using objects as mask.&lt;br /&gt;
*** Added examples of using extended palettes for sprites and backgrounds.&lt;br /&gt;
*** Added an example of using a text console in an extended affine background.&lt;br /&gt;
*** Added an example of using the mosaic effect in sprites and backgrounds.&lt;br /&gt;
*** Added an example of animating 2D sprites by updating frames in real time or by pre-loading all frames to VRAM from the start.&lt;br /&gt;
*** Added an example of using 2D alpha blending and fade effects.&lt;br /&gt;
*** Added a BIOS decompression example.&lt;br /&gt;
*** Added a NitroFS paletted texture loading example.&lt;br /&gt;
*** Added a touch input test, and two examples.&lt;br /&gt;
*** Added an example of creating graphics effects using the horizontal blanking interrupt.&lt;br /&gt;
*** Added a sample minigame based on Space Invaders.&lt;br /&gt;
** Changes to examples:&lt;br /&gt;
*** OAM memory and textures is now freed in all examples that allocate them. While this isn&#039;t needed in examples as short as ours, it&#039;s good practice to show developers how to free resources when they aren&#039;t needed anymore.&lt;br /&gt;
*** The names of the ROMs and the titles and subtitles in the ROM header have been modified to make them consistent across all examples.&lt;br /&gt;
*** Background IDs returned by &amp;lt;code&amp;gt;bgInit()&amp;lt;/code&amp;gt; are now used instead of hardcoded layer numbers.&lt;br /&gt;
*** &amp;lt;code&amp;gt;videoSetMode()&amp;lt;/code&amp;gt; is no longer used to enable sprites or to set sprite mapping modes, that should be done by the &amp;lt;code&amp;gt;libnds&amp;lt;/code&amp;gt; sprite API.&lt;br /&gt;
*** Tilemaps are now explicitly excluded from grit generation in all the grit files that are used to convert sprites.&lt;br /&gt;
** grit:&lt;br /&gt;
*** Fixed reading data from assembly files as input.&lt;br /&gt;
*** Fixed uninitialized memory use when loading a picture with an odd width.&lt;br /&gt;
** picolibc:&lt;br /&gt;
*** The bundled version of picolibc has been updated.&lt;br /&gt;
*** Added an implementation of &amp;lt;code&amp;gt;funopen&amp;lt;/code&amp;gt;.&lt;br /&gt;
*** Added bounds checking to &amp;lt;code&amp;gt;asctime_r&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;ctime_r&amp;lt;/code&amp;gt;.&lt;br /&gt;
*** Added implementations of &amp;lt;code&amp;gt;fgetpos&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;fsetpos&amp;lt;/code&amp;gt;.&lt;br /&gt;
*** Added stub implementations for POSIX unlocked file functions.&lt;br /&gt;
*** Fixed &amp;lt;code&amp;gt;fgetwc&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;fputwc&amp;lt;/code&amp;gt; not setting the file stream to wide orientation.&lt;br /&gt;
*** Fixed &amp;lt;code&amp;gt;regex.h&amp;lt;/code&amp;gt; not being usable when compiling C++ code.&lt;br /&gt;
** Other:&lt;br /&gt;
*** Fixed NitroFS generation in the combined ARM7+ARM9 ROM template.&lt;br /&gt;
*** The BlocksDS SDK now depends on the &amp;lt;code&amp;gt;wf-nnpack&amp;lt;/code&amp;gt; package, which provides standalone, command-line compressors for the decompression methods supported by the console&#039;s BIOS.&lt;br /&gt;
*** The code style of &amp;lt;code&amp;gt;libteak&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;DSWiFi&amp;lt;/code&amp;gt; has been changed using &amp;lt;code&amp;gt;clang-format&amp;lt;/code&amp;gt; to improve readability.&lt;br /&gt;
*** The documentation has been updated with additional notes about migrating from older and current versions of devkitARM, covering further potential issues.&lt;br /&gt;
*** The Teak LLVM toolchain is no longer mentioned in the Windows setup instructions, as it is not available there.&lt;br /&gt;
&#039;&#039;&#039;v1.2.0&#039;&#039;&#039;&lt;br /&gt;
* libnds:&lt;br /&gt;
** videoGL:&lt;br /&gt;
*** Add &amp;lt;code&amp;gt;glGetColorTablePointer()&amp;lt;/code&amp;gt; (returns pointer in VRAM to the palette of a texture).&lt;br /&gt;
*** Add &amp;lt;code&amp;gt;glGetTextureExtPointer()&amp;lt;/code&amp;gt; (returns pointer in VRAM to the additional texture data of &amp;lt;code&amp;gt;GL_COMPRESSED&amp;lt;/code&amp;gt; textures).&lt;br /&gt;
*** Fix allocation of &amp;lt;code&amp;gt;GL_COMPRESSED&amp;lt;/code&amp;gt; textures when &amp;lt;code&amp;gt;VRAM_A&amp;lt;/code&amp;gt; is not allocated to the 3D engine.&lt;br /&gt;
*** Fix crash in &amp;lt;code&amp;gt;glTexImage2D()&amp;lt;/code&amp;gt; with no active texture.&lt;br /&gt;
*** Fix error checking in &amp;lt;code&amp;gt;glColorTableEXT()&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;glTexImage2D()&amp;lt;/code&amp;gt;.&lt;br /&gt;
*** General code cleanup and improvements.&lt;br /&gt;
*** Minor optimization to loading &amp;lt;code&amp;gt;GL_RGB&amp;lt;/code&amp;gt; textures using &amp;lt;code&amp;gt;glTexImage2D()&amp;lt;/code&amp;gt;. Note that using this format is not recommended; see documentation for additional details.&lt;br /&gt;
*** &amp;lt;code&amp;gt;TEXTURE_SIZE_INVALID&amp;lt;/code&amp;gt; has been added to GL_TEXTURE_SIZE_ENUM.&lt;br /&gt;
*** &amp;lt;code&amp;gt;glTexImage2D()&amp;lt;/code&amp;gt; now fails correctly when invalid sizes are used.&lt;br /&gt;
*** Some minor comment improvements.&lt;br /&gt;
** GL2D:&lt;br /&gt;
*** Improve error checking when loading textures.&lt;br /&gt;
*** Modify sprite sets to use &amp;lt;code&amp;gt;uint16_t&amp;lt;/code&amp;gt; arrays for texture coordinates.&lt;br /&gt;
** Add &amp;lt;code&amp;gt;hw_sqrtf()&amp;lt;/code&amp;gt; - a hardware-accelerated alternative to &amp;lt;code&amp;gt;sqrtf()&amp;lt;/code&amp;gt;.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
** Small optimizations to functions that use the hardware accelerators of division and square root.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
** Add support for detecting stack smash canaries.&lt;br /&gt;
*** As a result, the debug versions of libnds are now built with the stack protector enabled.&lt;br /&gt;
** Add support for printing standard output to the debug console if the on-display console is not initialized.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
** Change &amp;lt;code&amp;gt;SOUND_FREQ&amp;lt;/code&amp;gt; (ARM7) and &amp;lt;code&amp;gt;TIMER_FREQ&amp;lt;/code&amp;gt; to always return the correct frequency value, rounded to the nearest achievable one.&lt;br /&gt;
*** This has been found in user research to be the most intuitive default; if you&#039;d like alternate options, please let us know.&lt;br /&gt;
** Fix &amp;lt;code&amp;gt;swiSwitchToGBAMode()&amp;lt;/code&amp;gt;.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
** Improve documentation of RTC structs.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* SDK:&lt;br /&gt;
** Add error code checks to 3D engine examples.&lt;br /&gt;
** Add GL2D spriteset and tileset examples.&lt;br /&gt;
** Add new tool: squeezer (by [https://github.com/huxingyi @huxingyi]), used for generating packed textures for GL2D sprite sets. It has been forked to easily export formats used by GL2D instead of generic formats.&lt;br /&gt;
** Add tests for &amp;lt;code&amp;gt;hw_sqrtf()&amp;lt;/code&amp;gt;.&lt;br /&gt;
** Avoid using &amp;lt;code&amp;gt;GL_RGB&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;TEXTURE_SIZE_n&amp;lt;/code&amp;gt; defines in 3D engine examples.&lt;br /&gt;
** Fix VRAM bank setup in &amp;amp;quot;text over 3D&amp;amp;quot; example.&lt;br /&gt;
** Improve timer example.&lt;br /&gt;
** Add a test for the videoGL functions that allocate textures and palettes.&lt;br /&gt;
&#039;&#039;&#039;v1.1.0&#039;&#039;&#039;&lt;br /&gt;
*libnds:&lt;br /&gt;
**Add keyboardExit() function to deinitialize keyboard structures.&lt;br /&gt;
**Add realpath() implementation.&lt;br /&gt;
**Adjust keyboardInit() to only link the default keyboard if no custom keyboard is being used.&lt;br /&gt;
**Fix getcwd() result when called in the root NitroFS directory.&lt;br /&gt;
**Fix Slot-1 card reads not being aligned to 512 bytes.&lt;br /&gt;
**Minor allocation/string handling bugfixes.&lt;br /&gt;
**Fix some memory allocation issues found by GCC 14.&lt;br /&gt;
*SDK:&lt;br /&gt;
**Add examples (paletted textures, rotation backgrounds, 16-bit backgrounds, sprites in sub screen, FAT file attributes, GL2D usage).&lt;br /&gt;
**Add tests for realpath().&lt;br /&gt;
**Fix warnings found by GCC 14 in examples.&lt;br /&gt;
&#039;&#039;&#039;v1.0.0&#039;&#039;&#039;&lt;br /&gt;
*libnds:&lt;br /&gt;
**Fix C++ builds (there was a missing cast from enum to int, and the Makefile&lt;br /&gt;
**was using the wrong program to link binaries).&lt;br /&gt;
**Optimize some videoGL functions (compile them as ARM instead of Thumb to&lt;br /&gt;
**take advantage of the faster multiplication instructions).&lt;br /&gt;
**Fix bug in readdir().&lt;br /&gt;
**Implement __retarget_lock_*() family of functions to allow libc functions&lt;br /&gt;
**to work in a multithreaded environment.&lt;br /&gt;
**Make glCallList() take a void pointer instead of u32.&lt;br /&gt;
**Add checks to NWRAM functions to see if MBK1-MBK5 are writable.&lt;br /&gt;
**Don&#039;t remap NWRAM-A when starting the DSP (only B and C are needed).&lt;br /&gt;
**Fix swiUnpackBits().&lt;br /&gt;
**Fix some casts to respect &amp;quot;const&amp;quot;.&lt;br /&gt;
**Fix some warnings.&lt;br /&gt;
**Improve some documentation comments.&lt;br /&gt;
**Deprecate typedef fp (the name is too short!) and PUnpackStruct.&lt;br /&gt;
**Add missing files to the Doxygen documentation.&lt;br /&gt;
*SDK:&lt;br /&gt;
**Add examples (3D object picking, 3D toon shading, building 3D display lists,&lt;br /&gt;
**3D volumetric shadows, compressed textures, orthogonal projections, using&lt;br /&gt;
**console windows with the default console API).&lt;br /&gt;
**Improve C++ test to prevent regressions like during the last few versions.&lt;br /&gt;
**Document memory map of the DS.&lt;br /&gt;
**Add note about the Makefiles of BlocksDS not supporting paths outside of the&lt;br /&gt;
**root folder of the project (thanks, @lifehackerhansol).&lt;br /&gt;
**Fix linking C++ projects in default makefiles.&lt;br /&gt;
*maxmod:&lt;br /&gt;
**Fix return type of mmEffectCancel() in ARM9 code.&lt;br /&gt;
&#039;&#039;&#039;v0.14.0&#039;&#039;&#039;&lt;br /&gt;
*libnds:&lt;br /&gt;
**The GRF loading functions have been modified to be actually useful. In some cases it wasn&#039;t possible to infer the size of some data chunks of the file (it was impossible to calculate the size of a tileset, for example). The new functions break compatibility with the old ones, but this change was required.&lt;br /&gt;
**Added glTexSizeToEnum() to convert sizes in pixels to GL_TEX_SIZE_ENUM values. Also, the funciton glTexImage2D() now accepts sizes in pixels as well as GL_TEX_SIZE_ENUM values.&lt;br /&gt;
**Added a function to return the default drive (sd: in the case of DSi, fat: in the case of a DS).&lt;br /&gt;
**FatFs has been moved to an external repository (wf-fatfs) which is included in libnds as a submodule. The documentation of FatFs has been removed from this repository.&lt;br /&gt;
**Added some missing 3D polygon attribute definitions.&lt;br /&gt;
**Fixed the return type of swiSHA1Verify().&lt;br /&gt;
**The fatfs.h header has been removed, it is redundant.&lt;br /&gt;
*SDK:&lt;br /&gt;
**Refactor documentation.&lt;br /&gt;
***It now uses Hugo, and it is available as a static website.&lt;br /&gt;
***Some old sections have been updated.&lt;br /&gt;
***The documentation of all libraries has been integrated with the documentation of BlocksDS so that everything is linked.&lt;br /&gt;
***Document how to use Slot-2 flashcards with BlocksDS applications.&lt;br /&gt;
***Reword devkitARM porting guide.&lt;br /&gt;
***A doxygen theme has been applied to the documentation of all the libraries used by BlocksDS.&lt;br /&gt;
**Add lots of examples:&lt;br /&gt;
***3D and 2D graphics.&lt;br /&gt;
***DSWifi.&lt;br /&gt;
***How to use multiple DSP binaries in the same application&lt;br /&gt;
***General NitroFS usage in an application (such as loading music for LibXM7 or graphics to be used as 2D backgrounds or sprites).&lt;br /&gt;
***DSi SHA1 functions.&lt;br /&gt;
***Hardware timers.&lt;br /&gt;
***Video capture (render to texture, dual screen 3D, save screenshot as PNG).&lt;br /&gt;
***More text console examples.&lt;br /&gt;
**Small change to makefiles that modifies the destination folder of build artifacts.&lt;br /&gt;
*LibXM7:&lt;br /&gt;
**It now uses timer 0 instead of timer 1, so that Maxmod and LibXM7 use the same timer and it&#039;s easier to switch libraries.&lt;br /&gt;
**The documentation has been improved.&lt;br /&gt;
*DSWifi:&lt;br /&gt;
**WEP modes have been documented.&lt;br /&gt;
**The prototypes of some functions have been cleaned up.&lt;br /&gt;
**The documentation has been improved.&lt;br /&gt;
*Maxmod:&lt;br /&gt;
**The return type of mmEffectCancel() has been fixed.&lt;br /&gt;
**Some definitions have been turned into enums.&lt;br /&gt;
**inline functions in headers have been turned into static inline.&lt;br /&gt;
&#039;&#039;&#039;v0.13.0&#039;&#039;&#039;&lt;br /&gt;
*libnds:&lt;br /&gt;
**Breaking change: Refactor input handling in the ARM9. In order to fix a race condition where the touch screen state could be updated between calls to scanKeys() and touchRead() it has become mandatory to call scanKeys() before touchRead(), keyboardGetChar(), keyboardUpdate() and the deprecated touchReadXY(). Most programs are already doing this, but this may break a small number of programs that don&#039;t do it.&lt;br /&gt;
**Implemented isHwDebugger(), which returns 1 if the console running the code is a hardware debugger, regardless of the DS model and CPU state. This is meant to replace swiIsDebugger(), which only works if the cache is disabled, and only in DS models (not DSi). The documentation of swiIsDebugger() has been updated to mention its limitations.&lt;br /&gt;
**Fix Slot-2 tilt API introduced in version 0.11.0, which hadn&#039;t been tested on hardware. The old peripheralSlot2TiltUpdate() has been replaced by peripheralSlot2TiltStart() and peripheralSlot2TiltRead().&lt;br /&gt;
**Implemented utime() and utimes() for changing file modification dates.&lt;br /&gt;
**Implemented scandir(), alphasort() and versionsort(),&lt;br /&gt;
**Fixed statvfs() and fstatvfs() on NitroFS paths and files.&lt;br /&gt;
**Added stubs for getwd() and get_current_dir_name().&lt;br /&gt;
**Added stubs for getuid(), getgid(), etc.&lt;br /&gt;
**Add helpers to load GRF files generated by grit.&lt;br /&gt;
**Reintroduce logic to read Slot-1 cartridges with card commands from the ARM7 to save CPU cycles on the ARM9.&lt;br /&gt;
**The value of the RAM size field in REG_SCFG_EXT in the ARM9 is now set to 16 MB or 32 MB instead of being fixed to 32 MB even in retail DSi units.&lt;br /&gt;
**Some CP15 defines have been fixed.&lt;br /&gt;
**Simplify logic in ARM7 input handler.&lt;br /&gt;
**Generate default font from a PNG at build time instead of doing it from a preconverted BIN file to make it easier to replace it in the future.&lt;br /&gt;
*grit:&lt;br /&gt;
**Added the -D argument, specifying the destination folder for non-shared data as a counterpart to -O.&lt;br /&gt;
**Fixed a situation in which the first color in an image&#039;s palette would be used as transparent if the user-provided color (with -gT) was not present in the image.&lt;br /&gt;
**Breaking change: Fixed GRF file output to properly follow the RIFF chunk format. It will also export new information in the file header, like using special magic values to specify the formats A3I5, A5I3 and TEX4x4, and specifying the number of colors contained in the palette (for 16-bit&lt;br /&gt;
**textures it&#039;s 0). In order for the new information to fit in the header, some fields have been increased in size.&lt;br /&gt;
**Fixed palette size calculation for DS textures.&lt;br /&gt;
**Improvements to error messages.&lt;br /&gt;
*libxm7:&lt;br /&gt;
**Make types XM7_XMModuleHeader_Type and XM7_MODModuleHeader_Type private. Developers consider their MOD/XM files as a typeless blob of data, they shouldn&#039;t need to cast it to anything, the library should do it itself.&lt;br /&gt;
**The structs that define the MOD and XM formats have been made private, as well as some definitions internal to the player.&lt;br /&gt;
**Some defines have been turned into enums, which will help developers and IDEs identify what to use in which functions.&lt;br /&gt;
**The documentation has been updated.&lt;br /&gt;
*Tests:&lt;br /&gt;
**Add test to read DSi SCFG registers to see which DSi features are available with the loader that has been used to launch the application.&lt;br /&gt;
**Add test to display all configured MPU regions.&lt;br /&gt;
&#039;&#039;&#039;v0.12.0&#039;&#039;&#039;&lt;br /&gt;
*libnds:&lt;br /&gt;
**Dot and dot-dot entries are now properly emitted in readdir(). In line with common software expectations, they mirror standard FAT filesystem behaviour, that is are present for all subdirectories. For NitroFS, these entries are emulated accordingly.&lt;br /&gt;
**The d_ino field in readdir() output is now correctly populated, to match stat() and fstat().&lt;br /&gt;
**Added nitroFSOpenById() and nitroFSFopenById() functions, allowing opening files directly without paying the cost of a directory lookup.&lt;br /&gt;
**Accordingly, NitroFS file systems which contain a FAT table but no FNT table can now be opened.&lt;br /&gt;
**Optimized glMaterialShinyness().&lt;br /&gt;
*SDK:&lt;br /&gt;
**The default Makefiles have been simplified and now use compiler-provided .specs files. In turn, a few additional features have been added:&lt;br /&gt;
***Support for picolibc&#039;s compiler define-based selection of the printf and scanf implementations.&lt;br /&gt;
***The __BLOCKSDS__ define, which can be used to detect a BlocksDS environment during building.&lt;br /&gt;
**Fixed camera initialization with the default ARM7 binary.&lt;br /&gt;
*grit:&lt;br /&gt;
**Added the -ftB argument, which outputs files with .img, .map, .meta, .pal extensions, as opposed to .img.bin, .map.bin, .meta.bin and .pal.bin.&lt;br /&gt;
&#039;&#039;&#039;v0.11.3&#039;&#039;&#039;&lt;br /&gt;
*libnds:&lt;br /&gt;
**Added helpers to control microphone power independently from recording. This can be used for scenarios in which the DSP is tasked from recording microphone input.&lt;br /&gt;
**Added helpers and definitions for the DSi GPIO registers.&lt;br /&gt;
**Added function to detect availability of NWRAM.&lt;br /&gt;
**Fixed atexit() handlers not being called during a normal main() return.&lt;br /&gt;
**Fixed TSC configuration for enabling 47 kHz input/output in DSi mode.&lt;br /&gt;
**Improved error handling in Teak DSP code execution helpers.&lt;br /&gt;
**The Teak DSP is now powered off before loading a DSP binary.&lt;br /&gt;
*dswifi:&lt;br /&gt;
**Reduced memory usage, especially while Wi-Fi is not initialized.&lt;br /&gt;
*ndstool:&lt;br /&gt;
**Breaking: Instead of providing alternate-language banner text using -bt5 &amp;quot;Text&amp;quot;, the form -bt 5 &amp;quot;Text&amp;quot; is now required.&lt;br /&gt;
**Added support for providing mutliple root directories for building NitroFS images. All specified root directories are combined to create the root of the file system.&lt;br /&gt;
**Fixed -w treating other options as file masks.&lt;br /&gt;
**Improved argument handling.&lt;br /&gt;
*SDK:&lt;br /&gt;
**Updated compiler flags:&lt;br /&gt;
***The superfluous -mtune=arm7tdmi has been removed from ARM7 Makefiles.&lt;br /&gt;
***-march=armv5te -mtune=arm946e-s has been replaced with -mcpu=arm946e-s+nofp in ARM9 Makefiles.&lt;br /&gt;
***-Wl,--use-blx has been added to ARM9 linker flags. This allows the use of the BLX opcode for linking ARM/Thumb code in place of trampolines, slightly improving final executable size and performance.&lt;br /&gt;
&#039;&#039;&#039;v0.11.2&#039;&#039;&#039;&lt;br /&gt;
*libnds:&lt;br /&gt;
**Fixed a bug introduced in version 0.11.1 that didn&#039;t initialize audio hardware correctly in DSi mode.&lt;br /&gt;
**Some superfluous audio helpers added in version 0.11.1 have been removed.&lt;br /&gt;
**Move libteak to its own repository so that it can be reused by other toolchains.&lt;br /&gt;
**Modify functions to load DSP binaries to return int instead of bool for more flexibility.&lt;br /&gt;
*DSP:&lt;br /&gt;
**Move crt0 and linkerscript to libteak repository.&lt;br /&gt;
**Preprocess all assembly files, not just the crt0.&lt;br /&gt;
&#039;&#039;&#039;v0.11&#039;&#039;&#039;&lt;br /&gt;
*libc:&lt;br /&gt;
**Fixed an important regression in memcpy() and memset() implementations.&lt;br /&gt;
*Improved file I/O performance:&lt;br /&gt;
**Added support for batch reads and writes of contiguous clusters, improving SD card performance for very large sequential reads/writes.&lt;br /&gt;
**Added fatInitLookupCacheFile(). This allows opting a file into having a special in-memory cache which significantly speeds up file seek operations.&lt;br /&gt;
**Provisionally automatically enabled the in-memory cache for NitroFS files. If you&#039;re experiencing slowdowns, make sure to defragment your SD card - this requirement will be loosened in future releases (but it&#039;s still a good idea).&lt;br /&gt;
**Integrated profi200&#039;s dsi_sdmmc driver, improving reliability and performance for reading from and writing to the DSi&#039;s SD card.&lt;br /&gt;
**Optimized unaligned buffer I/O performance for the DSi&#039;s SD card.&lt;br /&gt;
**Only cluster table/directory-related reads will now be cached by the built-in sector cache. This allows better use of this sector cache; one can use setvbuf() to enable a larger cache for file I/O.&lt;br /&gt;
**Other minor optimizations have been made throughout the code.&lt;br /&gt;
*Added a new Slot-2 API (arm9/peripherals/slot2.h).&lt;br /&gt;
**Added support for detecting external RAM cartridges (SuperCard, M3, G6, DS Memory Expansion Pak, EZ-Flash variants, EverDrive).&lt;br /&gt;
**Added support for enabling and disabling the data cache on the Slot-2 memory area. Combined with suitable bus speed detection for these cartridges, this allows efficient usage of such an external RAM area.&lt;br /&gt;
**Added support for detecting and using the Gyro, Solar and Tilt sensors available on various GBA game cartridges.&lt;br /&gt;
**Fixed detection of GBA cartridge rumble (WarioWare, Drill Dozer).&lt;br /&gt;
**Modify rumble example to show how to use the new API.&lt;br /&gt;
*DLDI:&lt;br /&gt;
**Moved the built-in sector cache into unused memory occupied by the reserved DLDI driver area. This effectly saves ~20KB of heap RAM for most homebrew.&lt;br /&gt;
**The DLDI driver area size can now be changed by defining the __dldi_size symbol to a value away from the default of 16384, such as 8192 (if your application is highly RAM-constrained - this may break support with some cartridges, however) or 32768 (restores compatibility with MoonShell versions at the cost of an additional 16KB of RAM).&lt;br /&gt;
**The DLDI driver area is now guaranteed to be close to the beginning of the .nds file, which may slightly improve load times.&lt;br /&gt;
*DSP:&lt;br /&gt;
**Add BTDMP and ICU helpers.&lt;br /&gt;
**Refactor crt0.s.&lt;br /&gt;
**Add examples of handling interrupts, including timer interrupts.&lt;br /&gt;
*libnds:&lt;br /&gt;
**Rename some cache helpers for consistency.&lt;br /&gt;
**Fixed a file handle leak that could occur if nitroFSInit() was pointed to an .nds file which does not contain a NitroFS file system.&lt;br /&gt;
**Fixed a rare case in which nitroFSInit() could try reading from the GBA slot on the DSi, causing an exception.&lt;br /&gt;
**Added readFirmwareJEDEC() function to read the ID of the DS firmware flash chip. (lifehackerhansol)&lt;br /&gt;
**Minor optimizations have been done to readUserSettings().&lt;br /&gt;
**Fixed the NDMA_DST_FIX macro definition.&lt;br /&gt;
&#039;&#039;&#039;v0.10.2&#039;&#039;&#039;&lt;br /&gt;
*NitroFS: Fix file traversal not working without running a chdir() first.&lt;br /&gt;
&#039;&#039;&#039;v0.10.1&#039;&#039;&#039;&lt;br /&gt;
*Fix NitroFS directory reads occasionally failing on non-DLDI environments.&lt;br /&gt;
&#039;&#039;&#039;v0.10.0&#039;&#039;&#039;&lt;br /&gt;
*Build system:&lt;br /&gt;
**The default makefiles no longer rely on the toolchain being in the current&lt;br /&gt;
**PATH. Now, the default Makefiles have the default path to Wonderful&lt;br /&gt;
**Toolchain, which can be overriden by the user if desired.&lt;br /&gt;
**The makefiles used by the tests and examples have been moved to a system&lt;br /&gt;
**location so that they are more easily reused.&lt;br /&gt;
**dldipatch has replaced dlditool as the default to apply DLDI&lt;br /&gt;
**patches, due to bugs in dlditool&#039;s patch application process:&lt;br /&gt;
**https://problemkaputt.de/gbatek-ds-cart-dldi-driver-guessed-address-adjustments.htm&lt;br /&gt;
**Update your makefiles to take advantage of the updates.&lt;br /&gt;
*Filesystem improvements:&lt;br /&gt;
**Replaced NitroFAT by a new Zlib-licensed implementation of the NitroFS&lt;br /&gt;
**filesystem by @asiekierka. This fixes the performance drawbacks of NitroFAT.&lt;br /&gt;
**In stat() and fstat(), the fields st_dev and st_ino are now&lt;br /&gt;
**properly populated.&lt;br /&gt;
**Fixed stat() not acknowledging / as a directory.&lt;br /&gt;
**Remove NitroFAT support from ndstool.&lt;br /&gt;
**The example makefiles have been modified to stop using mkfatimg.&lt;br /&gt;
*DSP:&lt;br /&gt;
**Initial experimental, incomplete support for the Teak DSP of the DSi.&lt;br /&gt;
**This isn&#039;t ready to be used, it&#039;s still under development and it&#039;s going&lt;br /&gt;
**through a lot of changes. Most of the code is derived from @Gericom&#039;s&lt;br /&gt;
**prototype code.&lt;br /&gt;
**Support for building DSP binaries won&#039;t be present on Windows until it&#039;s&lt;br /&gt;
**more stable. However, if you already have pre-built DSP binaries, it&#039;s&lt;br /&gt;
**possible to use them on Windows.&lt;br /&gt;
**Introduced teaktool, which converts ELF files into TLF (Teak Loadable&lt;br /&gt;
**Format) files that can be loaded by libnds.&lt;br /&gt;
**Added ARM9 functions to libnds to handle the DSP, load TLF files and&lt;br /&gt;
**communicate with programs running on the DSP.&lt;br /&gt;
**Introduce libteak, a library with helpers to use the AHBM, DMA, APBP,&lt;br /&gt;
**ICU and timer peripherals. It has been documented and added to the Doxygen&lt;br /&gt;
**pages of libnds.&lt;br /&gt;
**Added a few examples of how to use the currently supported DSP features.&lt;br /&gt;
**Update user instructions and Dockerfile to use and mention the LLVM Teak&lt;br /&gt;
**toolchain.&lt;br /&gt;
**Add NWRAM defintions and helpers.&lt;br /&gt;
*DLDI improvements:&lt;br /&gt;
**The DLDI template now automatically calculates the &amp;quot;size&amp;quot; and &amp;quot;fix flags&amp;quot;&lt;br /&gt;
**fields of the header.&lt;br /&gt;
**The binary R4 DLDI driver, used for DeSmuMe compatibility, has been replaced&lt;br /&gt;
**by a Zlib-licensed impementation built from source.&lt;br /&gt;
*libnds:&lt;br /&gt;
**Microphone samples can now be captured using full 16-bit precision on DSi.&lt;br /&gt;
**Cleaned up and added some missing MMIO/bitfield defines throughout libnds.&lt;br /&gt;
**Implemented inlined BIOS calls based on gba-hpp. This should make code&lt;br /&gt;
**using BIOS calls slightly smaller and faster.&lt;br /&gt;
**Small reorganization of syscalls code.&lt;br /&gt;
**Slightly optimized coroutine threading code.&lt;br /&gt;
**Added documentation about ARM7 audio helpers.&lt;br /&gt;
*Submodules:&lt;br /&gt;
**Before this version, repositories owned by third parties were added as&lt;br /&gt;
**submodules to the SDK repository. This can be a problem if the owner isn&#039;t&lt;br /&gt;
**responsive, changes name, deletes the repository... In order to avoid&lt;br /&gt;
**issues, forks have been created under the BlocksDS organization.&lt;br /&gt;
**It is expected to contribute to the original repositories and update the&lt;br /&gt;
**fork to stay in sync. Contributing to the forks is a last resort option.&lt;br /&gt;
*Tests:&lt;br /&gt;
**Added a new test for SWI functions.&lt;br /&gt;
&#039;&#039;&#039;v0.9.1&#039;&#039;&#039;&lt;br /&gt;
*Revert changes in maxmod that duplicated some symbols.&lt;br /&gt;
&#039;&#039;&#039;v0.9.0&#039;&#039;&#039;&lt;br /&gt;
*SDK:&lt;br /&gt;
**Native windows support added. Wonderful toolchains now distribute native Windows binaries, and the only required change in BlocksDS was to change a library used by Grit. Thanks you, Generic and asie!&lt;br /&gt;
**The stdio implementation of picolibc provided by Wonderful Toolchains has been patched by asie and this has substantially improved direct SD card read and write speeds.&lt;br /&gt;
**The RTC interrupt is no longer used in any test, example or template. Users are now expected to timer interrupt instead because the RTC interrupt isn&#039;t supported on 3DS in DS/DSi mode or most emulators. Check the new code to see how to adapt old code. The RTC interrupt functions will still be supported to preserve compatibility with old projects that aren&#039;t updated.&lt;br /&gt;
**Document the ARM9 &amp;lt;-&amp;gt; ARM7 boot synchronization routine.&lt;br /&gt;
**In the dockerfile, set a locale to be able to pass UTF-8 characters to ndstool to appear in the title of the NDS ROM.&lt;br /&gt;
**Add a test to ensure that the libnds modules that use the ARM9 &amp;lt;-&amp;gt; ARM7 transfer memory region don&#039;t break.&lt;br /&gt;
**New examples:&lt;br /&gt;
***Getting key input state.&lt;br /&gt;
***Using NitroFAT, DLDI and DSi SD in the same program.&lt;br /&gt;
***Send a buffer in main RAM to the ARM7 from the ARM9.&lt;br /&gt;
***Read battery status.&lt;br /&gt;
***Set the real time clock of the NDS.&lt;br /&gt;
*libnds:&lt;br /&gt;
**RTC:&lt;br /&gt;
***Add new helpers to get and set the date. They use typedefs to move values between functions instead of byte arrays.&lt;br /&gt;
***The old helpers that use byte arrays have been deprecated.&lt;br /&gt;
***Using the RTC interrupt as a way to update the time every second has been deprecated.&lt;br /&gt;
***Documentation:&lt;br /&gt;
***Document values returned by the battery read function.&lt;br /&gt;
***Document RTC helpers.&lt;br /&gt;
***Add some ARM7 modules to the front page of the Doxygen documentation.&lt;br /&gt;
**Memory:&lt;br /&gt;
***Disable data cache and instruction fetch access to DTCM.&lt;br /&gt;
***Rumble detection functions won&#039;t try to detect anything on DSi.&lt;br /&gt;
***Change location of transfer region area on DSi so that it&#039;s uncached.&lt;br /&gt;
***Import safe DMA helpers written by Gericom and use them from all DMA helpers.&lt;br /&gt;
**Video:&lt;br /&gt;
***Make glGetInt() wait for the GPU to be idle when getting the polygon and vertices count. It is common for developers to forget to wait.&lt;br /&gt;
***Cleanup some helpers and add some missing VRAM definitions.&lt;br /&gt;
***Document hardware bug of the DMA in GFX FIFO mode.&lt;br /&gt;
**Other:&lt;br /&gt;
***FatFs updated to R0.15p3.&lt;br /&gt;
***Support the debug button (only available in emulators and debug consoles).&lt;br /&gt;
***Switch to using ARM unified syntax (UAL).&lt;br /&gt;
*Grit:&lt;br /&gt;
**Switch from libfreeimage to libplum. This allows us to build Grit on Windows easier.&lt;br /&gt;
&#039;&#039;&#039;v0.8.1&#039;&#039;&#039;&lt;br /&gt;
*libnds:&lt;br /&gt;
**Fix NitroFAT in emulators. It only worked when DLDI was initialized correctly, which isn&#039;t the case in emulators like no$gba.&lt;br /&gt;
**Set the right CPU as owner of the Slot-1 bus in NitroFAT handling functions.&lt;br /&gt;
*SDK:&lt;br /&gt;
**Update build systems to generate Maxmod soundbanks in the NitroFAT filesystem if the filesystem is used. This isn&#039;t supported by ARM9 + ARM7 makefiles for now, only by ARM9 makefiles.&lt;br /&gt;
**Fix segmentation fault in mkfatimg when not enough arguments are provided.&lt;br /&gt;
**Stop relying on make -j in Makefiles. It is passed by make to any sub-make, so it isn&#039;t required.&lt;br /&gt;
**Add basic Maxmod and Maxmod + NitroFAT examples.&lt;br /&gt;
&#039;&#039;&#039;v0.8&#039;&#039;&#039;&lt;br /&gt;
*libnds:&lt;br /&gt;
**Document MPU setup code properly.&lt;br /&gt;
**Cleanup exception handling code.&lt;br /&gt;
**Add asynchronous math functions to complement the previous synchronous ones.&lt;br /&gt;
**Support redirecting stdout and stderr to user functions.&lt;br /&gt;
**Fix code that selects the default filesystem (DSi SD or DLDI).&lt;br /&gt;
**Fix leaking file handlers in truncate().&lt;br /&gt;
**Fix memory leaks in image and pcx modules.&lt;br /&gt;
**Support more rumble packs.&lt;br /&gt;
*ndstool:&lt;br /&gt;
**Fix warnings.&lt;br /&gt;
**Remove non-homebrew-related functionality.&lt;br /&gt;
*SDK:&lt;br /&gt;
**Automatically link with libc and libstdc++ rather than forcing users to do it explicitly.&lt;br /&gt;
**Support *.arm.c and *.arm.cpp filenames for compatibility with devkitARM.&lt;br /&gt;
**Correctly initialize TLS in the ARM7.&lt;br /&gt;
**Improve bin2c.&lt;br /&gt;
**Update libc documentation.&lt;br /&gt;
**Improve and cleanup some examples.&lt;br /&gt;
&#039;&#039;&#039;v0.7&#039;&#039;&#039;&lt;br /&gt;
*libnds:&lt;br /&gt;
**Unify all coding and documentation style of the codebase.&lt;br /&gt;
**Change license of GL2D to Zlib (with the author&#039;s permission).&lt;br /&gt;
**Improve sassert() so that it can exit to the loader instead of locking the application.&lt;br /&gt;
**Keyboard:&lt;br /&gt;
***Fix initialization glitch where it would blink for a frame.&lt;br /&gt;
***Fix backspace handling.&lt;br /&gt;
***Make it use cothread functions so that it never blocks the application.&lt;br /&gt;
**cothread:&lt;br /&gt;
***Fixed stack alignment&lt;br /&gt;
***Fixed stack size of the scheduler thread.&lt;br /&gt;
**libc:&lt;br /&gt;
***Fix no$gba debug messages on the ARM9.&lt;br /&gt;
***Add support of no$gba debug messages to the ARM7.&lt;br /&gt;
*mmutil:&lt;br /&gt;
**Fix segfault with samples with implied zero loop.&lt;br /&gt;
*SDK:&lt;br /&gt;
**Improve some old examples. Fix memory leaks in all examples that used&lt;br /&gt;
**getcwd().&lt;br /&gt;
**Fix ARM9 linkerscript to place ITCM sections in ITCM correctly.&lt;br /&gt;
**Add new examples: Exception handling, assertions, no$gba debug console.&lt;br /&gt;
**Prevent mkfatimg from generating FAT images that are so small that FatFs&lt;br /&gt;
**can&#039;t mount them.&lt;br /&gt;
**Improve installation instructions.&lt;br /&gt;
&#039;&#039;&#039;v0.6&#039;&#039;&#039;&lt;br /&gt;
*libnds:&lt;br /&gt;
**Document MPU setup steps and CP15 registers.&lt;br /&gt;
**Enable more warnings in the Makefile and fix them.&lt;br /&gt;
**FIFO subsystem:&lt;br /&gt;
***The FIFO subsystem has been cleaned up and documented.&lt;br /&gt;
***Some bugs in the FIFO subsystem have been fixed (the stress test still fails, though).&lt;br /&gt;
***Prevent using cothread_yield() in the ARM7.&lt;br /&gt;
**libc:&lt;br /&gt;
***Alignment of thread local storage sections has been fixed.&lt;br /&gt;
***Support stat() in the root directory of a filesystem.&lt;br /&gt;
***Support statvfs() and fstatvfs().&lt;br /&gt;
**Avoid including the default keyboard data if it isn&#039;t used.&lt;br /&gt;
**Allow setting the duration of the lid sleep check, and to disable it completely.&lt;br /&gt;
**Build release versions of the library as well as debug.&lt;br /&gt;
*ndstool:&lt;br /&gt;
**Support multiple languages in the banner.&lt;br /&gt;
**Support more file formats for icons (GIF, PNG).&lt;br /&gt;
**Support animated icons (from GIF files).&lt;br /&gt;
*SDK:&lt;br /&gt;
**Refactor install targets of the SDK components. Now, all components can&lt;br /&gt;
**be installed on their own, and they copy the licenses of the components to&lt;br /&gt;
**the installation directory.&lt;br /&gt;
**Emulate behaviour of bin2s of devkitPro more closely with bin2c.&lt;br /&gt;
**Use SPDX license identifiers in all libraries and components that end up in&lt;br /&gt;
**the NDS application binary.&lt;br /&gt;
**Some cleanup of code formatting.&lt;br /&gt;
**Added a DLDI driver template.&lt;br /&gt;
&#039;&#039;&#039;v0.5&#039;&#039;&#039;&lt;br /&gt;
*Define a default location for BlocksDS: /opt/blocksds/&lt;br /&gt;
*Use mkfatimg (distributed with FatFs) instead of imgbuild.sh to reduce&lt;br /&gt;
*the number of dependencies.&lt;br /&gt;
*Fix mmutil target in Makefiles in parallel builds.&lt;br /&gt;
*Cleanup of GBA slot peripherals drivers.&lt;br /&gt;
*Integrate libxm7 as a core library.&lt;br /&gt;
*Fix exit to loader code from the ARM7. It has been simplified a bit.&lt;br /&gt;
*Document exit to loader code.&lt;br /&gt;
&#039;&#039;&#039;v0.4&#039;&#039;&#039;&lt;br /&gt;
*Use Wonderful Toolchains to get full C++ standard library support.&lt;br /&gt;
*Remove picolibc and avr-libstdcpp as submodules (all previous history has been condensed to one commit).&lt;br /&gt;
*Multithreading:&lt;br /&gt;
**Add cooperative multithreading scheduler.&lt;br /&gt;
**Enable scheduler in the ARM9 by default.&lt;br /&gt;
**Add examples of having multiple threads, mutexes, and asynchronous file&lt;br /&gt;
**loading.&lt;br /&gt;
**Support thread local storage.&lt;br /&gt;
*Added mutexes to problematic parts of libnds and FatFs.&lt;br /&gt;
*Add initial support and example of DSi camera (thanks, asie!).&lt;br /&gt;
*Support malloc() in the ARM7.&lt;br /&gt;
*Simplify build system of tests and examples.&lt;br /&gt;
*Bugfixes.&lt;br /&gt;
&lt;br /&gt;
== Credits ==&lt;br /&gt;
This project wouldn&#039;t have been possible without:&lt;br /&gt;
&lt;br /&gt;
* Many thanks to [https://asie.pl asie] for his help and advice, and for [https://wonderful.asie.pl/ Wonderful Toolchains]&lt;br /&gt;
* [https://devkitpro.org/ devkitPro]&lt;br /&gt;
* [https://github.com/picolibc/picolibc picolibc]&lt;br /&gt;
* [https://github.com/devkitPro/libnds libnds]&lt;br /&gt;
* [http://akkit.org/dswifi/ dswifi]&lt;br /&gt;
* [https://maxmod.devkitpro.org/ maxmod] (and mmutil)&lt;br /&gt;
* [https://www.coranac.com/projects/grit/ grit]&lt;br /&gt;
* [https://gcc.gnu.org/ GCC]&lt;br /&gt;
* [https://www.gnu.org/software/make/ make]&lt;br /&gt;
* And many others!&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
* GitHub - https://github.com/blocksds/sdk&lt;/div&gt;</summary>
		<author><name>SkyLyrac</name></author>
	</entry>
	<entry>
		<id>https://www.gamebrew.org/index.php?title=NitrousTracker_DS&amp;diff=204751</id>
		<title>NitrousTracker DS</title>
		<link rel="alternate" type="text/html" href="https://www.gamebrew.org/index.php?title=NitrousTracker_DS&amp;diff=204751"/>
		<updated>2026-04-27T17:16:51Z</updated>

		<summary type="html">&lt;p&gt;SkyLyrac: Update link of git repository.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox DS Homebrews&lt;br /&gt;
|title=NitrousTracker&lt;br /&gt;
|image=nitroustracker.png&lt;br /&gt;
|description=DSi-compatible, enhanced fork of NitroTracker.&lt;br /&gt;
|author=NitrousTracker developers&lt;br /&gt;
|lastupdated=2026/04/17&lt;br /&gt;
|type=Music Apps&lt;br /&gt;
|version=0.6.2&lt;br /&gt;
|license=GPL-3.0&lt;br /&gt;
|download=https://dlhb.gamebrew.org/dshomebrew2/nitroustracker.7z&lt;br /&gt;
|website=https://docs.asie.pl/nitroustracker/&lt;br /&gt;
|source=https://github.com/NitrousTracker/nitroustracker&lt;br /&gt;
}}&lt;br /&gt;
NitrousTracker is a fork of [[NitroTracker]], a FastTracker II style tracker for the Nintendo DS originally created by 0xtob.&lt;br /&gt;
&lt;br /&gt;
It is a versatile tool for creating music - everywhere! It supports the popular XM file format that is used by many PC trackers and that can be played on many PC audio players such as Winamp or XMMS.&lt;br /&gt;
&lt;br /&gt;
You can learn more about NitrousTracker on [https://docs.asie.pl/nitroustracker the official documentation website].&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
Copy NitrousTracker and some music and samples to any folder of your memory card and start tracking.&lt;br /&gt;
&lt;br /&gt;
== Compatibility ==&lt;br /&gt;
Full DSi/3DS support (in DSi mode).&lt;br /&gt;
&lt;br /&gt;
== Changelog ==&lt;br /&gt;
&#039;&#039;&#039;v0.6.2 2026/04/17&#039;&#039;&#039;&lt;br /&gt;
* New features:&lt;br /&gt;
** four new themes! (Orjis)&lt;br /&gt;
* Improvements:&lt;br /&gt;
** moved sample editor and envelope editor zoom buttons to the horizontal scrollbar (prayerie)&lt;br /&gt;
** confirmation dialog box before previewing a large sample (prayerie)&lt;br /&gt;
** increase maximum note skip from 8 to 32 (prayerie)&lt;br /&gt;
** updated BlocksDS to 1.19.1&lt;br /&gt;
* Fixes:&lt;br /&gt;
** fix accessing uninitialized memory when playing auto notes (asie)&lt;br /&gt;
** fix record box RAM check crashing (asie)&lt;br /&gt;
** fix use-after-free when loading modules (asie)&lt;br /&gt;
** fix effects commands not displaying a parameter of &amp;lt;code&amp;gt;00&amp;lt;/code&amp;gt; (prayerie)&lt;br /&gt;
** fix incorrect fx parameter interpolation (prayerie)&lt;br /&gt;
** other minor fixes&lt;br /&gt;
* Additional thanks to oxygenfad for helping to test this release!&lt;br /&gt;
&#039;&#039;&#039;v0.6.1 2026/03/21&#039;&#039;&#039;&lt;br /&gt;
* New features:&lt;br /&gt;
** sample trim button (prayerie)&lt;br /&gt;
* Improvements:&lt;br /&gt;
** removed confusing quirk in &amp;amp;quot;clr&amp;amp;quot; button behaviour added in v0.4.6 (prayerie)&lt;br /&gt;
** the &amp;amp;quot;ren&amp;amp;quot; button is now disabled when not useful (prayerie)&lt;br /&gt;
** touch keyboard can now be used while the song is playing (prayerie)&lt;br /&gt;
** updated BlocksDS to 1.19.0&lt;br /&gt;
* Fixes:&lt;br /&gt;
** fixed memory corruption by adding more than 256 patterns&lt;br /&gt;
** fixed scroll bar not becoming visible after inserting patterns (prayerie)&lt;br /&gt;
** fixed visual bug when scrolling the envelope editor with sustain set&lt;br /&gt;
** fixed visual bug when switching instruments in effect mode (prayerie)&lt;br /&gt;
** fixed wifi crash when trying to enable dsmidi&lt;br /&gt;
&#039;&#039;&#039;v0.6.0 2026/03/03&#039;&#039;&#039;&lt;br /&gt;
* New features:&lt;br /&gt;
** &#039;&#039;&#039;effect editing keyboard&#039;&#039;&#039; (prayerie, exelotl)&lt;br /&gt;
** support for loading 24/32-bit WAV files (asie)&lt;br /&gt;
** support for loading WAV files with JUNK headers (prayerie)&lt;br /&gt;
** support for 09xx sample offset effect (prayerie)&lt;br /&gt;
** support for E1x/E2x/X1x/X2x fine portamento effects (exelotl)&lt;br /&gt;
* Improvements:&lt;br /&gt;
** improved portamento accuracy (exelotl)&lt;br /&gt;
** optimized sample display drawing (prayerie)&lt;br /&gt;
** separated message box and sample editor zoom button colors (prayerie)&lt;br /&gt;
** updated BlocksDS to 1.18.0&lt;br /&gt;
* Fixes:&lt;br /&gt;
** fixed disk tab being visible without DLDI driver (asie)&lt;br /&gt;
** fixed scroll bar not working in sample drawing mode (asie)&lt;br /&gt;
&#039;&#039;&#039;v0.5.2 2025/11/29&#039;&#039;&#039;&lt;br /&gt;
*New features:&lt;br /&gt;
** automatic normalization for samples (prayerie)&lt;br /&gt;
** instrument zapping can now filter to selected or unused&lt;br /&gt;
*instruments only (prayerie)&lt;br /&gt;
** songs with unsaved changes now have a visual indicator&lt;br /&gt;
*in the file tab icon (prayerie)&lt;br /&gt;
** typewriter theming support (prayerie)&lt;br /&gt;
*Improvements:&lt;br /&gt;
** clear button in typewriter (prayerie)&lt;br /&gt;
** support for polyphony in DSMIDI and for Easy Piano (exelotl)&lt;br /&gt;
*Fixes:&lt;br /&gt;
** fixed libntxm loading &amp;amp;gt;16-channel XM files which it could not&lt;br /&gt;
*play (asie)&lt;br /&gt;
** fixed memory leak in NormalizeBox (prayerie)&lt;br /&gt;
** fixed red border disappearing after recording from mic in edit&lt;br /&gt;
*mode (prayerie)&lt;br /&gt;
** fixed regression in selection pasting (prayerie)&lt;br /&gt;
** fixed settings reading uninitialized values on first boot&lt;br /&gt;
*(prayerie)&lt;br /&gt;
** fixed visual indicators for mute/solo channels being incorrect&lt;br /&gt;
*upon changing songs (asie)&lt;br /&gt;
&#039;&#039;&#039;v0.5.1 2025/11/22&#039;&#039;&#039;&lt;br /&gt;
*New features:&lt;br /&gt;
** Additional themes! (oxygenfad, prayerie).&lt;br /&gt;
** Support for the piano in interface theming (prayerie).&lt;br /&gt;
*Improvements:&lt;br /&gt;
** Improved button disabling depending on state (prayerie).&lt;br /&gt;
** Reduced flicker when adjusting sample loop points.&lt;br /&gt;
** The currently displayed/selected sample is now switched based on the multisample note just played (prayerie).&lt;br /&gt;
** The piano is now outlined when in mapping mode (prayerie).&lt;br /&gt;
** When out of memory, the tracker will now &amp;amp;quot;fail fast&amp;amp;quot; instead of causing potential unwanted memory corruption and leading to unpredictable errors.&lt;br /&gt;
*Fixes:&lt;br /&gt;
** Fixed a slight inconsistency regarding the current sample when clicking on a new instrument which should reset it to 0, but only did so visually (prayerie).&lt;br /&gt;
** Fixed drawing mapping labels when in mapping mode but after disabling the sample listbox (prayerie).&lt;br /&gt;
** Fixed memory corruption issues involving ping-pong loop samples.&lt;br /&gt;
** Fixed minor theme color calculation bugs (prayerie).&lt;br /&gt;
** Fixed piano not respecting volume envelope (prayerie).&lt;br /&gt;
** Fixed strange behaviour when mapping a key to a null sample then playing that after playing a non-null one (prayerie).&lt;br /&gt;
** Fixed tabbox rounding disappearing after selecting a tab (prayerie).&lt;br /&gt;
&#039;&#039;&#039;v0.5.0 2025/11/12&#039;&#039;&#039;&lt;br /&gt;
* New features:&lt;br /&gt;
** Interface theming support! (prayerie).&lt;br /&gt;
*** Many themes are bundled with this release, with more to come.&lt;br /&gt;
*** The .nttheme format is documented here: https://docs.asie.pl/nitroustracker/contributing/theming/&lt;br /&gt;
* Improvements:&lt;br /&gt;
** Disabled live memory indicator updates, improving stability.&lt;br /&gt;
** Slight tweaks to UI font and button layout.&lt;br /&gt;
** Songs and samples are now saved as .tmp files first, preventing data loss if a crash occurs mid-saving.&lt;br /&gt;
** Updated BlocksDS toolchain.&lt;br /&gt;
* Fixes:&lt;br /&gt;
** [&amp;lt;nowiki/&amp;gt;[https://github.com/NitrousTracker/nitroustracker/pull/146 #146]] fixed not displaying instrument values properly in edge cases, part 2 (Arikari405).&lt;br /&gt;
** Fixed incorrectly trying to load .xm files with OpenMPT format hacks (prayerie).&lt;br /&gt;
** Fixed regression in tab box rendering.&lt;br /&gt;
** Fixed text being overzealously trimmed.&lt;br /&gt;
** Fixed typewriter not showing when paused (prayerie).&lt;br /&gt;
** General stability improvements and minor fixes.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;0.4.16 2025/10/22&#039;&#039;&#039;&lt;br /&gt;
* Improvements:&lt;br /&gt;
** [&amp;lt;nowiki/&amp;gt;[https://github.com/asiekierka/nitroustracker/pull/147 #147]] transpose buttons! hold R to transpose selection by an octave (Arikari405).&lt;br /&gt;
** updated BlocksDS toolchain.&lt;br /&gt;
* Fixes:&lt;br /&gt;
** [&amp;lt;nowiki/&amp;gt;[https://github.com/asiekierka/nitroustracker/pull/142 #142]] fixed oversized pastes not working (prayerie).&lt;br /&gt;
** [&amp;lt;nowiki/&amp;gt;[https://github.com/asiekierka/nitroustracker/issues/143 #143]] fixed crashes on too short microphone samples.&lt;br /&gt;
** [&amp;lt;nowiki/&amp;gt;[https://github.com/asiekierka/nitroustracker/pull/146 #146]] fixed not displaying instrument values properly in edge cases (Arikari405).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;0.4.15 2025/07/12&#039;&#039;&#039;&lt;br /&gt;
* Improvements:&lt;br /&gt;
** DSMIDI now better handles polyphony (Rachel Birdy).&lt;br /&gt;
** updated BlocksDS toolchain.&lt;br /&gt;
* Fixes:&lt;br /&gt;
** [&amp;lt;nowiki/&amp;gt;[https://github.com/asiekierka/nitroustracker/issues/126 #126]] poor performance in large directories.&lt;br /&gt;
** [&amp;lt;nowiki/&amp;gt;[https://github.com/asiekierka/nitroustracker/issues/128 #128]] fixed bugs in DSMIDI USB support (Rachel Birdy).&lt;br /&gt;
&#039;&#039;&#039;0.4.14 2025/04/26&#039;&#039;&#039;&lt;br /&gt;
*Improvements:&lt;br /&gt;
** actually enabled USB cartridge support for DSMIDI.&lt;br /&gt;
** updated BlocksDS toolchain.&lt;br /&gt;
Fixes:&lt;br /&gt;
** [&amp;lt;nowiki/&amp;gt;[https://github.com/asiekierka/nitroustracker/issues/125 #125]] Fix playback regressions from v0.4.12.&lt;br /&gt;
&#039;&#039;&#039;0.4.13 2024/11/10&#039;&#039;&#039;&lt;br /&gt;
*Fixes:&lt;br /&gt;
** [&amp;lt;nowiki/&amp;gt;[https://github.com/asiekierka/nitroustracker/issues/40 #40]] Fix freeze when attempting to loop samples in certain .xm files.&lt;br /&gt;
** [&amp;lt;nowiki/&amp;gt;[https://github.com/asiekierka/nitroustracker/issues/117 #117]] Fix &amp;amp;quot;map samples&amp;amp;quot; button UI overlap.&lt;br /&gt;
** [&amp;lt;nowiki/&amp;gt;[https://github.com/asiekierka/nitroustracker/issues/123 #123]] Fix playback regressions from v0.4.12.&lt;br /&gt;
** [&amp;lt;nowiki/&amp;gt;[https://github.com/asiekierka/nitroustracker/issues/84 #84]] Fix sample selection glitch.&lt;br /&gt;
&#039;&#039;&#039;0.4.12 2024/11/10&#039;&#039;&#039;&lt;br /&gt;
*New features:&lt;br /&gt;
** [&amp;lt;nowiki/&amp;gt;[https://github.com/asiekierka/nitroustracker/issues/95 #95]] WAV sample import and export now supports loop points.&lt;br /&gt;
** [&amp;lt;nowiki/&amp;gt;[https://github.com/asiekierka/nitroustracker/issues/111 #111]] adjustable lines per beat.&lt;br /&gt;
*Improvements:&lt;br /&gt;
** minor maintenance work in libntxm.&lt;br /&gt;
** updated BlocksDS toolchain.&lt;br /&gt;
** updated DSMIDI NRIO USB support library.&lt;br /&gt;
*Fixes:&lt;br /&gt;
** fixed some scrollbar render issues in list boxes.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;0.4.11 2024/11/04&#039;&#039;&#039;&lt;br /&gt;
*New features:&lt;br /&gt;
** DSMIDI support for NRIO/DS Linker Writer Slot-2 USB cartridges.&lt;br /&gt;
*** This allows using a special cartridge with a mini-USB port to connect your DS to a PC as a MIDI device.&lt;br /&gt;
*** More information available [https://wiki.asie.pl/doku.php?id=notes:flashcart:ds_linker_writer here].&lt;br /&gt;
*Improvements:&lt;br /&gt;
** updated BlocksDS toolchain to 1.6.2.&lt;br /&gt;
** the about screen now lists the version and the Git commit hash of the build.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;0.4.10 2024/07/29&#039;&#039;&#039;&lt;br /&gt;
*New features:&lt;br /&gt;
** Support for Bxx XM command (exelotl).&lt;br /&gt;
** Support for EEx XM command (exelotl).&lt;br /&gt;
*Improvements:&lt;br /&gt;
** Updated BlocksDS toolchain to 1.3.0.&lt;br /&gt;
*Fixes:&lt;br /&gt;
** [&amp;lt;nowiki/&amp;gt;[https://github.com/asiekierka/nitrotracker/issues/112 #112]] fixed freeze on recording long samples.&lt;br /&gt;
** Fixed XM pattern decoding bug leading to missing notes (exelotl).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;0.4.9 2024/04/26&#039;&#039;&#039;&lt;br /&gt;
*New features:&lt;br /&gt;
** env sustain playback + configuration (LeviathaninWaves).&lt;br /&gt;
** Player now supports more pattern effects (LeviathaninWaves).&lt;br /&gt;
*Improvements:&lt;br /&gt;
** NitrousTracker now uses a distinct logo.&lt;br /&gt;
** Updated BlocksDS toolchain.&lt;br /&gt;
*Fixes:&lt;br /&gt;
** Fixed about message box width.&lt;br /&gt;
** Fixed crash if paths were set without trailing slashes in config file.&lt;br /&gt;
** Fixed combined loop and lock not working correctly.&lt;br /&gt;
** Fixed panning being incorrectly set (exelotl).&lt;br /&gt;
** Fixed sample panning slider (exelotl).&lt;br /&gt;
** Fixed saving of sample panning information (exelotl).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;0.4.8 2024/11/28&#039;&#039;&#039;&lt;br /&gt;
*Improvements:&lt;br /&gt;
** Updated BlocksDS toolchain.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;0.4.7 2023/11/27&#039;&#039;&#039;&lt;br /&gt;
*Improvements:&lt;br /&gt;
** Updated BlocksDS toolchain.&lt;br /&gt;
*Fixes:&lt;br /&gt;
** Fixed microphone recording length.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;0.4.6 2023/11/10&#039;&#039;&#039;&lt;br /&gt;
*New features:&lt;br /&gt;
** Holding &amp;amp;quot;clr&amp;amp;quot; while playing music will now continue clearing notes.&lt;br /&gt;
*Improvements:&lt;br /&gt;
** fFster file I/O operations.&lt;br /&gt;
** Updated BlocksDS toolchain.&lt;br /&gt;
*Fixes:&lt;br /&gt;
** Fixed &amp;amp;quot;..&amp;amp;quot; appearing in root directory.&lt;br /&gt;
** Fixed pattern lock and loop being enabled at the same time.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;0.4.5 2023/04/08&#039;&#039;&#039;&lt;br /&gt;
*New features:&lt;br /&gt;
** nowifi build: ~100K more free RAM, but no dsmidiwifi support.&lt;br /&gt;
** Scroll lock: loop pattern + detach cursor from song playback.&lt;br /&gt;
*** The old &amp;amp;quot;loop ptn&amp;amp;quot; option has been moved to the pattern/song tab.&lt;br /&gt;
*Improvements:&lt;br /&gt;
** General layout adjustments&lt;br /&gt;
** Shaved ~10K more from the filesize/starting RAM usage.&lt;br /&gt;
** The &amp;amp;quot;sel&amp;amp;quot; button can now be used to clear a selectiont.&lt;br /&gt;
*Fixes:&lt;br /&gt;
** Fixed sample tune value not displaying correctly for values below -99.&lt;br /&gt;
** Fixed some directories being above &amp;amp;quot;..&amp;amp;quot; in file selector.&lt;br /&gt;
** General minor visual glitch fixes.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;0.4.4-unofficial 2023/04/08&#039;&#039;&#039;&lt;br /&gt;
*New features:&lt;br /&gt;
** &amp;amp;quot;Lock&amp;amp;quot; option in pattern/song tab.&lt;br /&gt;
*** Allows queueing patterns to be played without immediately jumping to them.&lt;br /&gt;
** New directory creation button in file manager.&lt;br /&gt;
** Mono/Stereo output override in the options tab.&lt;br /&gt;
*Improvements:&lt;br /&gt;
** Sample highlight visual now darkens the sample area.&lt;br /&gt;
** Adjusted the pattern/song tab&#039;s button layout.&lt;br /&gt;
*Fixes:&lt;br /&gt;
** Fixed visual glitch upon a failed file save.&lt;br /&gt;
** Fixed visual glitches when font goes outside a list box.&lt;br /&gt;
** Further fixes to saving files in subdirectories.&lt;br /&gt;
** Provided missing license files.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;0.4.3-unofficial 2023/04/07&#039;&#039;&#039;&lt;br /&gt;
*Improvements:&lt;br /&gt;
** Migrated to the BlocksDS toolchain.&lt;br /&gt;
*** The most visible difference is about ~140KB more free RAM on start.&lt;br /&gt;
** Minor optimizations.&lt;br /&gt;
** Support renaming longer filenames.&lt;br /&gt;
*Fixes:&lt;br /&gt;
** Fixed crash related to song renaming.&lt;br /&gt;
** Fixed loading 8-bit stereo .WAV files.&lt;br /&gt;
** Fixed minor memory leak when loading .WAV files.&lt;br /&gt;
** Fixed race condition causing some sample files to not be previewable.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;0.4.2-beta 2023/02/19&#039;&#039;&#039;&lt;br /&gt;
*New features:&lt;br /&gt;
** In-tracker file deletion support ([https://github.com/asiekierka/nitrotracker/issues/5 #5]).&lt;br /&gt;
*Improvements:&lt;br /&gt;
** Further filesize reduction.&lt;br /&gt;
** Further improvements to file selector.&lt;br /&gt;
*Fixes:&lt;br /&gt;
** Fixed file selector crashing when tapping &amp;amp;quot;..&amp;amp;quot; on the root directory.&lt;br /&gt;
** Updated to devkitARM r59, libnds 1.8.2.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;0.4.1-beta 2020/07/09&#039;&#039;&#039;&lt;br /&gt;
*New features:&lt;br /&gt;
** Full DSi/3DS support:&lt;br /&gt;
*** Improved CPU/RAM specifications.&lt;br /&gt;
*** Support for built-in SD card reader.&lt;br /&gt;
*** Support for built-in microphone (with 16-bit samples).&lt;br /&gt;
** Undo/Redo buffer:&lt;br /&gt;
*** Use undo and redo buttons in the UI to prevent mistakes.&lt;br /&gt;
*** Currently limited to pattern operations (no order table/sample/instrument).&lt;br /&gt;
** Untested DS Easy Piano peripheral support.&lt;br /&gt;
** It is now possible to exit NitroTracker by tapping on the logo and selecting &amp;amp;quot;exit&amp;amp;quot; -&amp;amp;gt; &amp;amp;quot;yes&amp;amp;quot;.&lt;br /&gt;
*Improvements:&lt;br /&gt;
** Pattern viewer:&lt;br /&gt;
*** New, more readable 3x5 font.&lt;br /&gt;
*** Slight tweak to font colors for better readability.&lt;br /&gt;
*** Selections are now visible behind current row highlight.&lt;br /&gt;
** Pattern editing:&lt;br /&gt;
*** ins/del/clr/--/vol now operate on selections in addition to single cells.&lt;br /&gt;
** Piano:&lt;br /&gt;
*** Added the ability to slide your stylus on the keyboard (@reinvdwoerd).&lt;br /&gt;
** &amp;amp;quot;Stop&amp;amp;quot; immediately jumps back to top of pattern (@reinvdwoerd).&lt;br /&gt;
** NitroTracker now starts in the directory it&#039;s launched from.&lt;br /&gt;
** The &amp;amp;quot;disk&amp;amp;quot; tab is now only shown if a filesystem has been detected.&lt;br /&gt;
** The memory indicator is now dynamically updated as a .XM/.WAV file is being loaded.&lt;br /&gt;
** The config is now saved explicitly as opposed to automatically, to reduce SD card wear and improve UI performance.&lt;br /&gt;
** Major performance improvements to tobkit (widget drawing library).&lt;br /&gt;
** Minor performance improvements in other areas.&lt;br /&gt;
** Minor visual tweaks.&lt;br /&gt;
** Better mechanisms for checking free RAM.&lt;br /&gt;
*Fixes:&lt;br /&gt;
** Settings now work even without a filesystem ([https://github.com/0xtob @0xtob]).&lt;br /&gt;
** Fixed file browser crashing after deleting a folder ([https://github.com/0xtob @0xtob]).&lt;br /&gt;
** Slight improvements to executable size.&lt;br /&gt;
** Fixed many memory leaks (including fixes by [https://github.com/fincs @fincs]).&lt;br /&gt;
** Updated to devkitARM r54, libnds 1.8.0.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NitroTracker-unofficial 2020/07/05&#039;&#039;&#039;&lt;br /&gt;
*Additions:&lt;br /&gt;
** Full DSi mode support (including SD/MMC and microphone).&lt;br /&gt;
** New, more readable 3x5 font (for the pattern view).&lt;br /&gt;
** Soft reset support (hold START+SELECT).&lt;br /&gt;
** Untested DS Easy Piano support.&lt;br /&gt;
** Pressing &amp;amp;quot;Stop&amp;amp;quot; immediately jumps back to top. (reinvdwoerd)&lt;br /&gt;
** Dragging the pen across the piano now works. (inspired by reinvdwoerd)&lt;br /&gt;
*Bugfixes:&lt;br /&gt;
** Performance improvements to GUI drawing (some through fincs&#039;s fork).&lt;br /&gt;
** Fixed certain memory leaks in NTXM and NitroTracker (some through fincs&#039;s fork).&lt;br /&gt;
** Many edge case string handling fixes (some through fincs&#039;s fork).&lt;br /&gt;
&lt;br /&gt;
== Credits ==&lt;br /&gt;
NitrousTracker is built using a large number of components, each with their own distinct licenses:&lt;br /&gt;
* NitrousTracker: [https://github.com/NitrousTracker/nitroustracker/blob/new/licenses/COPYING.nitrotracker GNU General Public License v3]&lt;br /&gt;
** libdsmi: [https://github.com/NitrousTracker/nitroustracker/blob/new/licenses/COPYING.nitrotracker GNU Lesser General Public License v2.1]&lt;br /&gt;
*** dserial: [https://github.com/NitrousTracker/nitroustracker/blob/new/licenses/COPYING.dserial BSD-3-Clause License]&lt;br /&gt;
*** tinyusb: [https://github.com/NitrousTracker/nitroustracker/blob/new/licenses/COPYING.tinyusb MIT License]&lt;br /&gt;
** libntxm: [https://github.com/NitrousTracker/nitroustracker/blob/new/licenses/COPYING.nitrotracker GNU General Public License v3]&lt;br /&gt;
** tobkit: [https://github.com/NitrousTracker/nitroustracker/blob/new/licenses/COPYING.tobkit Apache License 2.0]&lt;br /&gt;
* BlocksDS SDK:&lt;br /&gt;
** crt0: [https://github.com/NitrousTracker/nitroustracker/blob/new/licenses/COPYING.crt0 Mozilla Public License v2]&lt;br /&gt;
** dswifi: [https://github.com/NitrousTracker/nitroustracker/blob/new/licenses/COPYING.dswifi MIT License]&lt;br /&gt;
** FatFs: [https://github.com/NitrousTracker/nitroustracker/blob/new/licenses/COPYING.fatfs FatFs License]&lt;br /&gt;
** libnds: [https://github.com/NitrousTracker/nitroustracker/blob/new/licenses/COPYING.libnds zlib License]&lt;br /&gt;
** lwIP: [https://github.com/NitrousTracker/nitroustracker/blob/new/licenses/COPYING.lwip BSD-3-Clause License]&lt;br /&gt;
** mbedTLS: [https://github.com/NitrousTracker/nitroustracker/blob/new/licenses/COPYING.mbedtls Apache License 2.0]&lt;br /&gt;
** picolibc: [https://github.com/NitrousTracker/nitroustracker/blob/new/licenses/COPYING.picolibc MIT/BSD-style licenses]&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
* Official website - https://docs.asie.pl/nitroustracker/&lt;br /&gt;
* GitHub - https://github.com/asiekierka/nitrotracker/&lt;br /&gt;
* The Mod Archive - https://modarchive.org/forums/index.php?topic=4510.0&lt;/div&gt;</summary>
		<author><name>SkyLyrac</name></author>
	</entry>
	<entry>
		<id>https://www.gamebrew.org/index.php?title=UCity_GB&amp;diff=203685</id>
		<title>UCity GB</title>
		<link rel="alternate" type="text/html" href="https://www.gamebrew.org/index.php?title=UCity_GB&amp;diff=203685"/>
		<updated>2026-01-25T15:53:34Z</updated>

		<summary type="html">&lt;p&gt;SkyLyrac: Update link to user guide&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox GB Homebrews&lt;br /&gt;
|title=uCity&lt;br /&gt;
|image=ucitygbc.png&lt;br /&gt;
|description=The open-source city-building game for Game Boy Color.&lt;br /&gt;
|author=AntonioND (SkyLyrac)&lt;br /&gt;
|lastupdated=2025/08/09&lt;br /&gt;
|type=Strategy&lt;br /&gt;
|version=1.3&lt;br /&gt;
|license=GPL-3.0&lt;br /&gt;
|format=CGB&lt;br /&gt;
|download=https://dlhb.gamebrew.org/gbhomebrews/ucitygbc.7z&lt;br /&gt;
|website=https://github.com/AntonioND/ucity/&lt;br /&gt;
|source=https://codeberg.org/SkyLyrac/ucity&lt;br /&gt;
}}&lt;br /&gt;
{{#seo:&lt;br /&gt;
|title=GameBrew&lt;br /&gt;
|title_mode=append&lt;br /&gt;
|image=ucitygbc.png&lt;br /&gt;
|image_alt=uCity&lt;br /&gt;
}}{{lowercase title}}&lt;br /&gt;
This is µCity (also spelled &#039;uCity&#039;, pronounced &#039;micro-city&#039;), the open-source city-building game for Game Boy Color.&lt;br /&gt;
&lt;br /&gt;
Note: There&#039;s also a version for GBA [https://www.gamebrew.org/wiki/Ucity_Advance_GBA here].&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
The ROM file can be used with an emulator or on a real Game Boy.&lt;br /&gt;
&lt;br /&gt;
There are two available ROMs. ucity.gbc is the preferred ROM that you should use. It can save up to 16 cities depending on the memory available in your emulator or flashcart.&lt;br /&gt;
&lt;br /&gt;
If your emulator fails to load this ROM because of an unknown RAM size or your flashcart fails to save data, try ucity_compat.gbc. This ROM will only be able to save up to 4 cities, but it is more likely to work in all cases.&lt;br /&gt;
&lt;br /&gt;
== User guide ==&lt;br /&gt;
Game manual can be found [https://codeberg.org/SkyLyrac/ucity/src/branch/master/manual.rst here].&lt;br /&gt;
&lt;br /&gt;
=== Getting started ===&lt;br /&gt;
The game&#039;s objective is city-building. You can choose to start with a predefined scenario or with a completely empty random map.&lt;br /&gt;
&lt;br /&gt;
If you decide to go for a random map, remember that the number used as seed to generate the map will always generate the same map, in case you want to play again the same map.&lt;br /&gt;
&lt;br /&gt;
Note that, at some point, a red dot may appear on the screen and not let you do certain actions. This means that the game is simulating something and it can&#039;t let you do that until the simulation step has ended.&lt;br /&gt;
&lt;br /&gt;
=== Building ===&lt;br /&gt;
Most buildings can be built by the player, but some of the most important ones can&#039;t. Residential, commercial and industrial buildings (houses, shops and factories respectively) must be created by the city. The player can only try to attract people to the city.&lt;br /&gt;
&lt;br /&gt;
Also, buildings can&#039;t be built on top of others. The exception are power lines, which can be replaced by any building (not roads or train tracks).&lt;br /&gt;
&lt;br /&gt;
Demolishing buildings is as easy as building them, just select the dynamite in the building selection menu.&lt;br /&gt;
&lt;br /&gt;
There are some buildings that require specific things to be built (like having more than a certain number of people, having a specific technological level, etc).&lt;br /&gt;
&lt;br /&gt;
The type of the building can be checked by pressing A when the cursor is over it. However, as an additional help, this is the list of available buildings in the menu:&lt;br /&gt;
&lt;br /&gt;
* Delete - Demolish building.&lt;br /&gt;
* RCI Zones - Residential, commercial, industrial.&lt;br /&gt;
* Roads and power - Road, train tracks, power lines.&lt;br /&gt;
* Services - Police department, fire department, hospital.&lt;br /&gt;
* Parks and Recreation - Small park, big park, stadium.&lt;br /&gt;
* Education - School, high school, university.&lt;br /&gt;
* Culture - Museum, library.&lt;br /&gt;
* Transportation - Port, airport.&lt;br /&gt;
* Fossil power plants - Coal, oil, nuclear fission.&lt;br /&gt;
* Renewable power plants - Solar, wind, nuclear fusion.&lt;br /&gt;
&lt;br /&gt;
=== Services ===&lt;br /&gt;
Services are needed to make the population happy. While all buildings have a level of happiness based on the needs that are met, it is specially important for residential, commercial and industrial zones. If those zones don&#039;t have their needs covered, people will leave them.&lt;br /&gt;
&lt;br /&gt;
The services needed by people are determined by the class of the settlement.&lt;br /&gt;
&lt;br /&gt;
Police departments and schools are always needed. It is only needed to build fire department, hospitals and high schools when the settlement becomes a town.&lt;br /&gt;
&lt;br /&gt;
Universities are a special case. They are not needed to cover the needs of the population, but they are the only ways of making the technological level of the city increase. This is the only way of unlocking fission nuclear power plants and, eventually, fusion power plants.&lt;br /&gt;
&lt;br /&gt;
=== Transportation ===&lt;br /&gt;
Transportation is essential to allow people move between different buildings. Residential areas are sources of traffic and other areas are sinks of traffic.&lt;br /&gt;
&lt;br /&gt;
If people in residential areas cannot reach schools and workplaces (commercial and industrial zones, for example) they will leave.&lt;br /&gt;
&lt;br /&gt;
Roads and train tracks have a specific capacity. The more people using them, the less people will want to use them. At some point, they are too crowded for more people to use them.&lt;br /&gt;
&lt;br /&gt;
Roads and train tracks can be interleaved and they count as being connected even if the drawing of the tiles in the map don&#039;t look like they are connected. It is enough for them to be next to each other.&lt;br /&gt;
&lt;br /&gt;
Ports and airports don&#039;t have any effect on transportation within a city, they are only a source of income, like stadiums.&lt;br /&gt;
&lt;br /&gt;
=== Power ===&lt;br /&gt;
Power plants are needed to provide energy to all your buildings (even parks!). Buildings with no power can&#039;t work.&lt;br /&gt;
&lt;br /&gt;
The generation depends on the time of the year. Some power plants are more effective in summer, like solar power plants, and others are more effective in winter, like wind power plants. All other power plants are slightly affected by the time of the year, the efficiency depends on the temperature of the environment after all.&lt;br /&gt;
&lt;br /&gt;
=== Pollution ===&lt;br /&gt;
Transportation, factories, polluting power plants... They all create pollution. A polluted city will make less people want to come!&lt;br /&gt;
&lt;br /&gt;
=== City class ===&lt;br /&gt;
A settlement changes class depending on the population and the presence of some buildings.&lt;br /&gt;
&lt;br /&gt;
* Village - From the start.&lt;br /&gt;
* Town - Population &amp;amp;gt;= 500.&lt;br /&gt;
* City - At least one library. Population &amp;amp;gt;= 1000.&lt;br /&gt;
* Metropolis - At least one stadium, university and museum. Population &amp;amp;gt;= 3000.&lt;br /&gt;
* Capital - At least one port and an airport. Population &amp;amp;gt;= 6000.&lt;br /&gt;
&lt;br /&gt;
The requirements add up, that is, to upgrade to a capital it is needed to meet all requirements of the lower classes.&lt;br /&gt;
&lt;br /&gt;
Similarly, some building types are unlocked by reaching specific classes.&lt;br /&gt;
&lt;br /&gt;
* City - Unlocks stadiums, ports and airports.&lt;br /&gt;
&lt;br /&gt;
=== Loans ===&lt;br /&gt;
If you are short of money, you can ask the bank for a loan. Information about the payments is in the same screen where you can get them. You can only have one loan at a time.&lt;br /&gt;
&lt;br /&gt;
=== Disasters ===&lt;br /&gt;
Sometimes, unexpected disastrous events can happen. In this game, fires can happen anytime, as well as nuclear meltdowns (if there are fission nuclear power plants).&lt;br /&gt;
&lt;br /&gt;
The more fire departments, the lower the risk of fires. However, once a fire has started, the best way to get rid of it is to demolish every tile around it as soon as possible, edit mode isn&#039;t disabled during disasters.&lt;br /&gt;
&lt;br /&gt;
Nuclear meltdowns always have the same risk of happening. When a fission nuclear power plant explodes it spreads radiation (even if the fire was propagated from another building). Radiation takes a really long time to disappear, and there is no way of building things on top of it or of removing it. It can stay in both water and land.&lt;br /&gt;
&lt;br /&gt;
Disasters can be turned off in the options menu, if you prefer to play that way.&lt;br /&gt;
&lt;br /&gt;
=== Game Over ===&lt;br /&gt;
The only way to lose in this game is to have a negative budget 4 times in a row. If there is a positive budget, the counter decreases back to 0 once per positive budget. Note that negative funds don&#039;t matter in this case.&lt;br /&gt;
&lt;br /&gt;
After 4 negative budgets, the population will get tired of you and remove you from your position as mayor.&lt;br /&gt;
&lt;br /&gt;
There is no way to win - Isn&#039;t the satisfaction of a fully developed city enough for everybody?&lt;br /&gt;
&lt;br /&gt;
== Controls ==&lt;br /&gt;
&#039;&#039;&#039;City map:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Select - Build menu&lt;br /&gt;
&lt;br /&gt;
Start - Pause menu&lt;br /&gt;
&lt;br /&gt;
B - Hold to move around the map&lt;br /&gt;
&lt;br /&gt;
A - If not building, show the name of the element under the cursor&lt;br /&gt;
&lt;br /&gt;
== Screenshots ==&lt;br /&gt;
https://dlhb.gamebrew.org/gbhomebrews/ucitygbc2.png&lt;br /&gt;
https://dlhb.gamebrew.org/gbhomebrews/ucitygbc3.png&lt;br /&gt;
&lt;br /&gt;
==Media==&lt;br /&gt;
&#039;&#039;&#039;[GBC Game] µCity v1.0&#039;&#039;&#039; ([https://www.youtube.com/watch?v=2rir-TVx020 Antonio Niño Díaz]) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;youtube&amp;gt;2rir-TVx020&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Changelog ==&lt;br /&gt;
&#039;&#039;&#039;v1.3 2025/08/09&#039;&#039;&#039;&lt;br /&gt;
* Improve multiplication routine. [https://github.com/lancekindle @lancekindle]&lt;br /&gt;
* Update source code syntax for new versions of rgbasm.&lt;br /&gt;
* Fix a bug that prevented disabling the cartridge RAM and kept it writeable. [https://github.com/Rangi42 @Rangi42]&lt;br /&gt;
* Fix the maximum and minimum memory limits. [https://github.com/Rangi42 @Rangi42]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.2 2018/01/31&#039;&#039;&#039;&lt;br /&gt;
* Update links to website.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.1 2017/12/13&#039;&#039;&#039;&lt;br /&gt;
* Fixed bug that would prevent the background from being updated if the animations were disabled.&lt;br /&gt;
* Small improvements to the documentation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.0 2017/06/15&#039;&#039;&#039;&lt;br /&gt;
* First official release of the game.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Beta v0.5 2017/05/03&#039;&#039;&#039;&lt;br /&gt;
* Final beta version. All elements of the game are implemented. Remaining tasks are testing, cleanup and documentation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Beta v0.4 2017/02/01&#039;&#039;&#039;&lt;br /&gt;
* Beta version. Most of the elements of the game are implemented, but they need to be polished.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Alpha 3 2016/08/15&#039;&#039;&#039;&lt;br /&gt;
* Alpha version - Non playable.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Alpha 2 2016/06/05&#039;&#039;&#039;&lt;br /&gt;
* Alpha version - Non playable.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Alpha 1 2016/04/09&#039;&#039;&#039;&lt;br /&gt;
* Alpha version - Non playable.&lt;br /&gt;
&lt;br /&gt;
== Credits ==&lt;br /&gt;
Game made by AntonioND/SkyLyrac (Antonio Niño Díaz).&lt;br /&gt;
&lt;br /&gt;
Tools:&lt;br /&gt;
* [https://openmpt.org/ Open ModPlug Tracker]&lt;br /&gt;
* [https://github.com/AntonioND/gbt-player GBT Player]&lt;br /&gt;
* [http://www.devrs.com/gb/hmgd/gbmb.html GBTD (Game Boy Tile Designer)]&lt;br /&gt;
* [http://www.devrs.com/gb/hmgd/gbtd.html GBMB (Game Boy Map Builder)]&lt;br /&gt;
&lt;br /&gt;
Thanks to:&lt;br /&gt;
* beware: For the emulator [http://bgb.bircd.org/ BGB], extremely useful tool used to develop this game.&lt;br /&gt;
* Pan of Anthrox, Marat Fayzullin, Pascal Felber, Paul Robson, Martin Korth (nocash) and kOOPa for the pandocs.&lt;br /&gt;
* Otaku No Zoku (Justin Lloyd) for the Gameboy Crib Sheet.&lt;br /&gt;
* Everyone that has contributed to develop &amp;lt;code&amp;gt;RGBDS&amp;lt;/code&amp;gt; over the years, specially Carsten Sorensen, Justin Lloyd, Vegard Nossum and Anthony J. Bentley.&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
* Author&#039;s website - http://www.skylyrac.net/&lt;br /&gt;
* Codeberg - https://codeberg.org/SkyLyrac/ucity&lt;br /&gt;
* GitHub - https://github.com/AntonioND/ucity/&lt;/div&gt;</summary>
		<author><name>SkyLyrac</name></author>
	</entry>
	<entry>
		<id>https://www.gamebrew.org/index.php?title=UCity_GB&amp;diff=203684</id>
		<title>UCity GB</title>
		<link rel="alternate" type="text/html" href="https://www.gamebrew.org/index.php?title=UCity_GB&amp;diff=203684"/>
		<updated>2026-01-25T15:52:28Z</updated>

		<summary type="html">&lt;p&gt;SkyLyrac: Fix links and add link to uCity Advance&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox GB Homebrews&lt;br /&gt;
|title=uCity&lt;br /&gt;
|image=ucitygbc.png&lt;br /&gt;
|description=The open-source city-building game for Game Boy Color.&lt;br /&gt;
|author=AntonioND (SkyLyrac)&lt;br /&gt;
|lastupdated=2025/08/09&lt;br /&gt;
|type=Strategy&lt;br /&gt;
|version=1.3&lt;br /&gt;
|license=GPL-3.0&lt;br /&gt;
|format=CGB&lt;br /&gt;
|download=https://dlhb.gamebrew.org/gbhomebrews/ucitygbc.7z&lt;br /&gt;
|website=https://github.com/AntonioND/ucity/&lt;br /&gt;
|source=https://codeberg.org/SkyLyrac/ucity&lt;br /&gt;
}}&lt;br /&gt;
{{#seo:&lt;br /&gt;
|title=GameBrew&lt;br /&gt;
|title_mode=append&lt;br /&gt;
|image=ucitygbc.png&lt;br /&gt;
|image_alt=uCity&lt;br /&gt;
}}{{lowercase title}}&lt;br /&gt;
This is µCity (also spelled &#039;uCity&#039;, pronounced &#039;micro-city&#039;), the open-source city-building game for Game Boy Color.&lt;br /&gt;
&lt;br /&gt;
Note: There&#039;s also a version for GBA [https://www.gamebrew.org/wiki/Ucity_Advance_GBA here].&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
The ROM file can be used with an emulator or on a real Game Boy.&lt;br /&gt;
&lt;br /&gt;
There are two available ROMs. ucity.gbc is the preferred ROM that you should use. It can save up to 16 cities depending on the memory available in your emulator or flashcart.&lt;br /&gt;
&lt;br /&gt;
If your emulator fails to load this ROM because of an unknown RAM size or your flashcart fails to save data, try ucity_compat.gbc. This ROM will only be able to save up to 4 cities, but it is more likely to work in all cases.&lt;br /&gt;
&lt;br /&gt;
== User guide ==&lt;br /&gt;
Game manual can be found [https://github.com/AntonioND/ucity/blob/master/manual.rst here].&lt;br /&gt;
&lt;br /&gt;
=== Getting started ===&lt;br /&gt;
The game&#039;s objective is city-building. You can choose to start with a predefined scenario or with a completely empty random map.&lt;br /&gt;
&lt;br /&gt;
If you decide to go for a random map, remember that the number used as seed to generate the map will always generate the same map, in case you want to play again the same map.&lt;br /&gt;
&lt;br /&gt;
Note that, at some point, a red dot may appear on the screen and not let you do certain actions. This means that the game is simulating something and it can&#039;t let you do that until the simulation step has ended.&lt;br /&gt;
&lt;br /&gt;
=== Building ===&lt;br /&gt;
Most buildings can be built by the player, but some of the most important ones can&#039;t. Residential, commercial and industrial buildings (houses, shops and factories respectively) must be created by the city. The player can only try to attract people to the city.&lt;br /&gt;
&lt;br /&gt;
Also, buildings can&#039;t be built on top of others. The exception are power lines, which can be replaced by any building (not roads or train tracks).&lt;br /&gt;
&lt;br /&gt;
Demolishing buildings is as easy as building them, just select the dynamite in the building selection menu.&lt;br /&gt;
&lt;br /&gt;
There are some buildings that require specific things to be built (like having more than a certain number of people, having a specific technological level, etc).&lt;br /&gt;
&lt;br /&gt;
The type of the building can be checked by pressing A when the cursor is over it. However, as an additional help, this is the list of available buildings in the menu:&lt;br /&gt;
&lt;br /&gt;
* Delete - Demolish building.&lt;br /&gt;
* RCI Zones - Residential, commercial, industrial.&lt;br /&gt;
* Roads and power - Road, train tracks, power lines.&lt;br /&gt;
* Services - Police department, fire department, hospital.&lt;br /&gt;
* Parks and Recreation - Small park, big park, stadium.&lt;br /&gt;
* Education - School, high school, university.&lt;br /&gt;
* Culture - Museum, library.&lt;br /&gt;
* Transportation - Port, airport.&lt;br /&gt;
* Fossil power plants - Coal, oil, nuclear fission.&lt;br /&gt;
* Renewable power plants - Solar, wind, nuclear fusion.&lt;br /&gt;
&lt;br /&gt;
=== Services ===&lt;br /&gt;
Services are needed to make the population happy. While all buildings have a level of happiness based on the needs that are met, it is specially important for residential, commercial and industrial zones. If those zones don&#039;t have their needs covered, people will leave them.&lt;br /&gt;
&lt;br /&gt;
The services needed by people are determined by the class of the settlement.&lt;br /&gt;
&lt;br /&gt;
Police departments and schools are always needed. It is only needed to build fire department, hospitals and high schools when the settlement becomes a town.&lt;br /&gt;
&lt;br /&gt;
Universities are a special case. They are not needed to cover the needs of the population, but they are the only ways of making the technological level of the city increase. This is the only way of unlocking fission nuclear power plants and, eventually, fusion power plants.&lt;br /&gt;
&lt;br /&gt;
=== Transportation ===&lt;br /&gt;
Transportation is essential to allow people move between different buildings. Residential areas are sources of traffic and other areas are sinks of traffic.&lt;br /&gt;
&lt;br /&gt;
If people in residential areas cannot reach schools and workplaces (commercial and industrial zones, for example) they will leave.&lt;br /&gt;
&lt;br /&gt;
Roads and train tracks have a specific capacity. The more people using them, the less people will want to use them. At some point, they are too crowded for more people to use them.&lt;br /&gt;
&lt;br /&gt;
Roads and train tracks can be interleaved and they count as being connected even if the drawing of the tiles in the map don&#039;t look like they are connected. It is enough for them to be next to each other.&lt;br /&gt;
&lt;br /&gt;
Ports and airports don&#039;t have any effect on transportation within a city, they are only a source of income, like stadiums.&lt;br /&gt;
&lt;br /&gt;
=== Power ===&lt;br /&gt;
Power plants are needed to provide energy to all your buildings (even parks!). Buildings with no power can&#039;t work.&lt;br /&gt;
&lt;br /&gt;
The generation depends on the time of the year. Some power plants are more effective in summer, like solar power plants, and others are more effective in winter, like wind power plants. All other power plants are slightly affected by the time of the year, the efficiency depends on the temperature of the environment after all.&lt;br /&gt;
&lt;br /&gt;
=== Pollution ===&lt;br /&gt;
Transportation, factories, polluting power plants... They all create pollution. A polluted city will make less people want to come!&lt;br /&gt;
&lt;br /&gt;
=== City class ===&lt;br /&gt;
A settlement changes class depending on the population and the presence of some buildings.&lt;br /&gt;
&lt;br /&gt;
* Village - From the start.&lt;br /&gt;
* Town - Population &amp;amp;gt;= 500.&lt;br /&gt;
* City - At least one library. Population &amp;amp;gt;= 1000.&lt;br /&gt;
* Metropolis - At least one stadium, university and museum. Population &amp;amp;gt;= 3000.&lt;br /&gt;
* Capital - At least one port and an airport. Population &amp;amp;gt;= 6000.&lt;br /&gt;
&lt;br /&gt;
The requirements add up, that is, to upgrade to a capital it is needed to meet all requirements of the lower classes.&lt;br /&gt;
&lt;br /&gt;
Similarly, some building types are unlocked by reaching specific classes.&lt;br /&gt;
&lt;br /&gt;
* City - Unlocks stadiums, ports and airports.&lt;br /&gt;
&lt;br /&gt;
=== Loans ===&lt;br /&gt;
If you are short of money, you can ask the bank for a loan. Information about the payments is in the same screen where you can get them. You can only have one loan at a time.&lt;br /&gt;
&lt;br /&gt;
=== Disasters ===&lt;br /&gt;
Sometimes, unexpected disastrous events can happen. In this game, fires can happen anytime, as well as nuclear meltdowns (if there are fission nuclear power plants).&lt;br /&gt;
&lt;br /&gt;
The more fire departments, the lower the risk of fires. However, once a fire has started, the best way to get rid of it is to demolish every tile around it as soon as possible, edit mode isn&#039;t disabled during disasters.&lt;br /&gt;
&lt;br /&gt;
Nuclear meltdowns always have the same risk of happening. When a fission nuclear power plant explodes it spreads radiation (even if the fire was propagated from another building). Radiation takes a really long time to disappear, and there is no way of building things on top of it or of removing it. It can stay in both water and land.&lt;br /&gt;
&lt;br /&gt;
Disasters can be turned off in the options menu, if you prefer to play that way.&lt;br /&gt;
&lt;br /&gt;
=== Game Over ===&lt;br /&gt;
The only way to lose in this game is to have a negative budget 4 times in a row. If there is a positive budget, the counter decreases back to 0 once per positive budget. Note that negative funds don&#039;t matter in this case.&lt;br /&gt;
&lt;br /&gt;
After 4 negative budgets, the population will get tired of you and remove you from your position as mayor.&lt;br /&gt;
&lt;br /&gt;
There is no way to win - Isn&#039;t the satisfaction of a fully developed city enough for everybody?&lt;br /&gt;
&lt;br /&gt;
== Controls ==&lt;br /&gt;
&#039;&#039;&#039;City map:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Select - Build menu&lt;br /&gt;
&lt;br /&gt;
Start - Pause menu&lt;br /&gt;
&lt;br /&gt;
B - Hold to move around the map&lt;br /&gt;
&lt;br /&gt;
A - If not building, show the name of the element under the cursor&lt;br /&gt;
&lt;br /&gt;
== Screenshots ==&lt;br /&gt;
https://dlhb.gamebrew.org/gbhomebrews/ucitygbc2.png&lt;br /&gt;
https://dlhb.gamebrew.org/gbhomebrews/ucitygbc3.png&lt;br /&gt;
&lt;br /&gt;
==Media==&lt;br /&gt;
&#039;&#039;&#039;[GBC Game] µCity v1.0&#039;&#039;&#039; ([https://www.youtube.com/watch?v=2rir-TVx020 Antonio Niño Díaz]) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;youtube&amp;gt;2rir-TVx020&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Changelog ==&lt;br /&gt;
&#039;&#039;&#039;v1.3 2025/08/09&#039;&#039;&#039;&lt;br /&gt;
* Improve multiplication routine. [https://github.com/lancekindle @lancekindle]&lt;br /&gt;
* Update source code syntax for new versions of rgbasm.&lt;br /&gt;
* Fix a bug that prevented disabling the cartridge RAM and kept it writeable. [https://github.com/Rangi42 @Rangi42]&lt;br /&gt;
* Fix the maximum and minimum memory limits. [https://github.com/Rangi42 @Rangi42]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.2 2018/01/31&#039;&#039;&#039;&lt;br /&gt;
* Update links to website.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.1 2017/12/13&#039;&#039;&#039;&lt;br /&gt;
* Fixed bug that would prevent the background from being updated if the animations were disabled.&lt;br /&gt;
* Small improvements to the documentation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.0 2017/06/15&#039;&#039;&#039;&lt;br /&gt;
* First official release of the game.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Beta v0.5 2017/05/03&#039;&#039;&#039;&lt;br /&gt;
* Final beta version. All elements of the game are implemented. Remaining tasks are testing, cleanup and documentation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Beta v0.4 2017/02/01&#039;&#039;&#039;&lt;br /&gt;
* Beta version. Most of the elements of the game are implemented, but they need to be polished.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Alpha 3 2016/08/15&#039;&#039;&#039;&lt;br /&gt;
* Alpha version - Non playable.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Alpha 2 2016/06/05&#039;&#039;&#039;&lt;br /&gt;
* Alpha version - Non playable.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Alpha 1 2016/04/09&#039;&#039;&#039;&lt;br /&gt;
* Alpha version - Non playable.&lt;br /&gt;
&lt;br /&gt;
== Credits ==&lt;br /&gt;
Game made by AntonioND/SkyLyrac (Antonio Niño Díaz).&lt;br /&gt;
&lt;br /&gt;
Tools:&lt;br /&gt;
* [https://openmpt.org/ Open ModPlug Tracker]&lt;br /&gt;
* [https://github.com/AntonioND/gbt-player GBT Player]&lt;br /&gt;
* [http://www.devrs.com/gb/hmgd/gbmb.html GBTD (Game Boy Tile Designer)]&lt;br /&gt;
* [http://www.devrs.com/gb/hmgd/gbtd.html GBMB (Game Boy Map Builder)]&lt;br /&gt;
&lt;br /&gt;
Thanks to:&lt;br /&gt;
* beware: For the emulator [http://bgb.bircd.org/ BGB], extremely useful tool used to develop this game.&lt;br /&gt;
* Pan of Anthrox, Marat Fayzullin, Pascal Felber, Paul Robson, Martin Korth (nocash) and kOOPa for the pandocs.&lt;br /&gt;
* Otaku No Zoku (Justin Lloyd) for the Gameboy Crib Sheet.&lt;br /&gt;
* Everyone that has contributed to develop &amp;lt;code&amp;gt;RGBDS&amp;lt;/code&amp;gt; over the years, specially Carsten Sorensen, Justin Lloyd, Vegard Nossum and Anthony J. Bentley.&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
* Author&#039;s website - http://www.skylyrac.net/&lt;br /&gt;
* Codeberg - https://codeberg.org/SkyLyrac/ucity&lt;br /&gt;
* GitHub - https://github.com/AntonioND/ucity/&lt;/div&gt;</summary>
		<author><name>SkyLyrac</name></author>
	</entry>
	<entry>
		<id>https://www.gamebrew.org/index.php?title=UCity_GB&amp;diff=203683</id>
		<title>UCity GB</title>
		<link rel="alternate" type="text/html" href="https://www.gamebrew.org/index.php?title=UCity_GB&amp;diff=203683"/>
		<updated>2026-01-25T15:49:34Z</updated>

		<summary type="html">&lt;p&gt;SkyLyrac: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox GB Homebrews&lt;br /&gt;
|title=uCity&lt;br /&gt;
|image=ucitygbc.png&lt;br /&gt;
|description=The open-source city-building game for Game Boy Color.&lt;br /&gt;
|author=AntonioND (SkyLyrac)&lt;br /&gt;
|lastupdated=2025/08/09&lt;br /&gt;
|type=Strategy&lt;br /&gt;
|version=1.3&lt;br /&gt;
|format=CGB&lt;br /&gt;
|license=GPL-3.0&lt;br /&gt;
|download=https://dlhb.gamebrew.org/gbhomebrews/ucitygbc.7z&lt;br /&gt;
|website=https://github.com/AntonioND/ucity/&lt;br /&gt;
|source=https://github.com/AntonioND/ucity/&lt;br /&gt;
|donation=&lt;br /&gt;
}}&lt;br /&gt;
{{#seo:&lt;br /&gt;
|title=GameBrew&lt;br /&gt;
|title_mode=append&lt;br /&gt;
|image=ucitygbc.png&lt;br /&gt;
|image_alt=uCity&lt;br /&gt;
}}{{lowercase title}}&lt;br /&gt;
This is µCity (also spelled &#039;uCity&#039;, pronounced &#039;micro-city&#039;), the open-source city-building game for Game Boy Color.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
The ROM file can be used with an emulator or on a real Game Boy.&lt;br /&gt;
&lt;br /&gt;
There are two available ROMs. ucity.gbc is the preferred ROM that you should use. It can save up to 16 cities depending on the memory available in your emulator or flashcart.&lt;br /&gt;
&lt;br /&gt;
If your emulator fails to load this ROM because of an unknown RAM size or your flashcart fails to save data, try ucity_compat.gbc. This ROM will only be able to save up to 4 cities, but it is more likely to work in all cases.&lt;br /&gt;
&lt;br /&gt;
== User guide ==&lt;br /&gt;
Game manual can be found [https://github.com/AntonioND/ucity/blob/master/manual.rst here].&lt;br /&gt;
&lt;br /&gt;
=== Getting started ===&lt;br /&gt;
The game&#039;s objective is city-building. You can choose to start with a predefined scenario or with a completely empty random map.&lt;br /&gt;
&lt;br /&gt;
If you decide to go for a random map, remember that the number used as seed to generate the map will always generate the same map, in case you want to play again the same map.&lt;br /&gt;
&lt;br /&gt;
Note that, at some point, a red dot may appear on the screen and not let you do certain actions. This means that the game is simulating something and it can&#039;t let you do that until the simulation step has ended.&lt;br /&gt;
&lt;br /&gt;
=== Building ===&lt;br /&gt;
Most buildings can be built by the player, but some of the most important ones can&#039;t. Residential, commercial and industrial buildings (houses, shops and factories respectively) must be created by the city. The player can only try to attract people to the city.&lt;br /&gt;
&lt;br /&gt;
Also, buildings can&#039;t be built on top of others. The exception are power lines, which can be replaced by any building (not roads or train tracks).&lt;br /&gt;
&lt;br /&gt;
Demolishing buildings is as easy as building them, just select the dynamite in the building selection menu.&lt;br /&gt;
&lt;br /&gt;
There are some buildings that require specific things to be built (like having more than a certain number of people, having a specific technological level, etc).&lt;br /&gt;
&lt;br /&gt;
The type of the building can be checked by pressing A when the cursor is over it. However, as an additional help, this is the list of available buildings in the menu:&lt;br /&gt;
&lt;br /&gt;
* Delete - Demolish building.&lt;br /&gt;
* RCI Zones - Residential, commercial, industrial.&lt;br /&gt;
* Roads and power - Road, train tracks, power lines.&lt;br /&gt;
* Services - Police department, fire department, hospital.&lt;br /&gt;
* Parks and Recreation - Small park, big park, stadium.&lt;br /&gt;
* Education - School, high school, university.&lt;br /&gt;
* Culture - Museum, library.&lt;br /&gt;
* Transportation - Port, airport.&lt;br /&gt;
* Fossil power plants - Coal, oil, nuclear fission.&lt;br /&gt;
* Renewable power plants - Solar, wind, nuclear fusion.&lt;br /&gt;
&lt;br /&gt;
=== Services ===&lt;br /&gt;
Services are needed to make the population happy. While all buildings have a level of happiness based on the needs that are met, it is specially important for residential, commercial and industrial zones. If those zones don&#039;t have their needs covered, people will leave them.&lt;br /&gt;
&lt;br /&gt;
The services needed by people are determined by the class of the settlement.&lt;br /&gt;
&lt;br /&gt;
Police departments and schools are always needed. It is only needed to build fire department, hospitals and high schools when the settlement becomes a town.&lt;br /&gt;
&lt;br /&gt;
Universities are a special case. They are not needed to cover the needs of the population, but they are the only ways of making the technological level of the city increase. This is the only way of unlocking fission nuclear power plants and, eventually, fusion power plants.&lt;br /&gt;
&lt;br /&gt;
=== Transportation ===&lt;br /&gt;
Transportation is essential to allow people move between different buildings. Residential areas are sources of traffic and other areas are sinks of traffic.&lt;br /&gt;
&lt;br /&gt;
If people in residential areas cannot reach schools and workplaces (commercial and industrial zones, for example) they will leave.&lt;br /&gt;
&lt;br /&gt;
Roads and train tracks have a specific capacity. The more people using them, the less people will want to use them. At some point, they are too crowded for more people to use them.&lt;br /&gt;
&lt;br /&gt;
Roads and train tracks can be interleaved and they count as being connected even if the drawing of the tiles in the map don&#039;t look like they are connected. It is enough for them to be next to each other.&lt;br /&gt;
&lt;br /&gt;
Ports and airports don&#039;t have any effect on transportation within a city, they are only a source of income, like stadiums.&lt;br /&gt;
&lt;br /&gt;
=== Power ===&lt;br /&gt;
Power plants are needed to provide energy to all your buildings (even parks!). Buildings with no power can&#039;t work.&lt;br /&gt;
&lt;br /&gt;
The generation depends on the time of the year. Some power plants are more effective in summer, like solar power plants, and others are more effective in winter, like wind power plants. All other power plants are slightly affected by the time of the year, the efficiency depends on the temperature of the environment after all.&lt;br /&gt;
&lt;br /&gt;
=== Pollution ===&lt;br /&gt;
Transportation, factories, polluting power plants... They all create pollution. A polluted city will make less people want to come!&lt;br /&gt;
&lt;br /&gt;
=== City class ===&lt;br /&gt;
A settlement changes class depending on the population and the presence of some buildings.&lt;br /&gt;
&lt;br /&gt;
* Village - From the start.&lt;br /&gt;
* Town - Population &amp;amp;gt;= 500.&lt;br /&gt;
* City - At least one library. Population &amp;amp;gt;= 1000.&lt;br /&gt;
* Metropolis - At least one stadium, university and museum. Population &amp;amp;gt;= 3000.&lt;br /&gt;
* Capital - At least one port and an airport. Population &amp;amp;gt;= 6000.&lt;br /&gt;
&lt;br /&gt;
The requirements add up, that is, to upgrade to a capital it is needed to meet all requirements of the lower classes.&lt;br /&gt;
&lt;br /&gt;
Similarly, some building types are unlocked by reaching specific classes.&lt;br /&gt;
&lt;br /&gt;
* City - Unlocks stadiums, ports and airports.&lt;br /&gt;
&lt;br /&gt;
=== Loans ===&lt;br /&gt;
If you are short of money, you can ask the bank for a loan. Information about the payments is in the same screen where you can get them. You can only have one loan at a time.&lt;br /&gt;
&lt;br /&gt;
=== Disasters ===&lt;br /&gt;
Sometimes, unexpected disastrous events can happen. In this game, fires can happen anytime, as well as nuclear meltdowns (if there are fission nuclear power plants).&lt;br /&gt;
&lt;br /&gt;
The more fire departments, the lower the risk of fires. However, once a fire has started, the best way to get rid of it is to demolish every tile around it as soon as possible, edit mode isn&#039;t disabled during disasters.&lt;br /&gt;
&lt;br /&gt;
Nuclear meltdowns always have the same risk of happening. When a fission nuclear power plant explodes it spreads radiation (even if the fire was propagated from another building). Radiation takes a really long time to disappear, and there is no way of building things on top of it or of removing it. It can stay in both water and land.&lt;br /&gt;
&lt;br /&gt;
Disasters can be turned off in the options menu, if you prefer to play that way.&lt;br /&gt;
&lt;br /&gt;
=== Game Over ===&lt;br /&gt;
The only way to lose in this game is to have a negative budget 4 times in a row. If there is a positive budget, the counter decreases back to 0 once per positive budget. Note that negative funds don&#039;t matter in this case.&lt;br /&gt;
&lt;br /&gt;
After 4 negative budgets, the population will get tired of you and remove you from your position as mayor.&lt;br /&gt;
&lt;br /&gt;
There is no way to win - Isn&#039;t the satisfaction of a fully developed city enough for everybody?&lt;br /&gt;
&lt;br /&gt;
== Controls ==&lt;br /&gt;
&#039;&#039;&#039;City map:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Select - Build menu&lt;br /&gt;
&lt;br /&gt;
Start - Pause menu&lt;br /&gt;
&lt;br /&gt;
B - Hold to move around the map&lt;br /&gt;
&lt;br /&gt;
A - If not building, show the name of the element under the cursor&lt;br /&gt;
&lt;br /&gt;
== Screenshots ==&lt;br /&gt;
https://dlhb.gamebrew.org/gbhomebrews/ucitygbc2.png&lt;br /&gt;
https://dlhb.gamebrew.org/gbhomebrews/ucitygbc3.png&lt;br /&gt;
&lt;br /&gt;
==Media==&lt;br /&gt;
&#039;&#039;&#039;[GBC Game] µCity v1.0&#039;&#039;&#039; ([https://www.youtube.com/watch?v=2rir-TVx020 Antonio Niño Díaz]) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;youtube&amp;gt;2rir-TVx020&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Changelog ==&lt;br /&gt;
&#039;&#039;&#039;v1.3 2025/08/09&#039;&#039;&#039;&lt;br /&gt;
* Improve multiplication routine. [https://github.com/lancekindle @lancekindle]&lt;br /&gt;
* Update source code syntax for new versions of rgbasm.&lt;br /&gt;
* Fix a bug that prevented disabling the cartridge RAM and kept it writeable. [https://github.com/Rangi42 @Rangi42]&lt;br /&gt;
* Fix the maximum and minimum memory limits. [https://github.com/Rangi42 @Rangi42]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.2 2018/01/31&#039;&#039;&#039;&lt;br /&gt;
* Update links to website.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.1 2017/12/13&#039;&#039;&#039;&lt;br /&gt;
* Fixed bug that would prevent the background from being updated if the animations were disabled.&lt;br /&gt;
* Small improvements to the documentation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.0 2017/06/15&#039;&#039;&#039;&lt;br /&gt;
* First official release of the game.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Beta v0.5 2017/05/03&#039;&#039;&#039;&lt;br /&gt;
* Final beta version. All elements of the game are implemented. Remaining tasks are testing, cleanup and documentation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Beta v0.4 2017/02/01&#039;&#039;&#039;&lt;br /&gt;
* Beta version. Most of the elements of the game are implemented, but they need to be polished.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Alpha 3 2016/08/15&#039;&#039;&#039;&lt;br /&gt;
* Alpha version - Non playable.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Alpha 2 2016/06/05&#039;&#039;&#039;&lt;br /&gt;
* Alpha version - Non playable.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Alpha 1 2016/04/09&#039;&#039;&#039;&lt;br /&gt;
* Alpha version - Non playable.&lt;br /&gt;
&lt;br /&gt;
== Credits ==&lt;br /&gt;
Game made by AntonioND/SkyLyrac (Antonio Niño Díaz).&lt;br /&gt;
&lt;br /&gt;
Tools:&lt;br /&gt;
* [https://openmpt.org/ Open ModPlug Tracker]&lt;br /&gt;
* [https://github.com/AntonioND/gbt-player GBT Player]&lt;br /&gt;
* [http://www.devrs.com/gb/hmgd/gbmb.html GBTD (Game Boy Tile Designer)]&lt;br /&gt;
* [http://www.devrs.com/gb/hmgd/gbtd.html GBMB (Game Boy Map Builder)]&lt;br /&gt;
&lt;br /&gt;
Thanks to:&lt;br /&gt;
* beware: For the emulator [http://bgb.bircd.org/ BGB], extremely useful tool used to develop this game.&lt;br /&gt;
* Pan of Anthrox, Marat Fayzullin, Pascal Felber, Paul Robson, Martin Korth (nocash) and kOOPa for the pandocs.&lt;br /&gt;
* Otaku No Zoku (Justin Lloyd) for the Gameboy Crib Sheet.&lt;br /&gt;
* Everyone that has contributed to develop &amp;lt;code&amp;gt;RGBDS&amp;lt;/code&amp;gt; over the years, specially Carsten Sorensen, Justin Lloyd, Vegard Nossum and Anthony J. Bentley.&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
* Author&#039;s website - http://www.skylyrac.net/&lt;br /&gt;
* GitHub - https://github.com/AntonioND/ucity/&lt;/div&gt;</summary>
		<author><name>SkyLyrac</name></author>
	</entry>
	<entry>
		<id>https://www.gamebrew.org/index.php?title=Ucity_Advance_GBA&amp;diff=203682</id>
		<title>Ucity Advance GBA</title>
		<link rel="alternate" type="text/html" href="https://www.gamebrew.org/index.php?title=Ucity_Advance_GBA&amp;diff=203682"/>
		<updated>2026-01-25T15:44:21Z</updated>

		<summary type="html">&lt;p&gt;SkyLyrac: Update links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#seo:&lt;br /&gt;
|title= (Simulation) - GameBrew&lt;br /&gt;
|title_mode=append&lt;br /&gt;
|image=ucityadvance2.png&lt;br /&gt;
|image_alt=ucity Advance&lt;br /&gt;
}}&lt;br /&gt;
{{Infobox GBA Homebrews&lt;br /&gt;
|title=ucity Advance&lt;br /&gt;
|image=ucityadvance02.png&lt;br /&gt;
|description=An open-source city-building game.&lt;br /&gt;
|author=AntonioND (SkyLyrac)&lt;br /&gt;
|lastupdated=2022/04/01&lt;br /&gt;
|type=Simulation&lt;br /&gt;
|version=1.0.2&lt;br /&gt;
|license=Mixed&lt;br /&gt;
|download=https://dlhb.gamebrew.org/gbahomebrews/ucityadvance.7z&lt;br /&gt;
|website=https://codeberg.org/SkyLyrac/ucity-advance&lt;br /&gt;
|source=https://codeberg.org/SkyLyrac/ucity-advance&lt;br /&gt;
}}&lt;br /&gt;
This is µCity Advance (also spelled &#039;uCity&#039;, pronounced &#039;micro-city&#039;), the open-source city-building game for Game Boy Advance and PC. This is a remake of the original [https://www.gamebrew.org/wiki/UCity_GB µCity for Game Boy Color].&lt;br /&gt;
&lt;br /&gt;
It was showcased in the GBA Jam 2021.&lt;br /&gt;
&lt;br /&gt;
==User guide==&lt;br /&gt;
===Getting start===&lt;br /&gt;
The aim of the game is to build a city. Simple enough.&lt;br /&gt;
&lt;br /&gt;
The first thing to do is to decide whether you want to start with a predefined scenario or with a completely empty random map.&lt;br /&gt;
&lt;br /&gt;
If you decide to go for a random map, remember that the number used as seed to generate the map will always generate the same map, in case you want to play again the same map.&lt;br /&gt;
&lt;br /&gt;
Note that, at some point, a red dot may appear on the screen and not let you do certain actions. This means that the game is simulating something and it can&#039;t let you do that until the simulation step has ended.&lt;br /&gt;
&lt;br /&gt;
===Building===&lt;br /&gt;
Most buildings can be built by the player, but some of the most important ones can&#039;t. Residential, commercial and industrial buildings (houses, shops and factories respectively) must be created by the city. The player can only try to attract people to the city.&lt;br /&gt;
&lt;br /&gt;
Also, buildings can&#039;t be built on top of others. The exception are power lines, which can be replaced by any building (not roads or train tracks).&lt;br /&gt;
&lt;br /&gt;
Demolishing buildings is as easy as building them, just select the dynamite in the building selection menu.&lt;br /&gt;
&lt;br /&gt;
There are some buildings that require specific things to be built (like having more than a certain number of people, having a specific technological level, etc).&lt;br /&gt;
&lt;br /&gt;
The type of the building can be checked by pressing A when the cursor is over it. However, as an additional help, this is the list of available buildings in the menu:&lt;br /&gt;
&lt;br /&gt;
* Delete - Demolish building.&lt;br /&gt;
* RCI Zones - Residential, commercial, industrial.&lt;br /&gt;
* Roads and power - Road, train tracks, power lines.&lt;br /&gt;
* Services - Police department, fire department, hospital.&lt;br /&gt;
* Parks and Recreation - Small park, big park, stadium.&lt;br /&gt;
* Education - School, high school, university.&lt;br /&gt;
* Culture - Museum, library.&lt;br /&gt;
* Transportation - Port, airport.&lt;br /&gt;
* Fossil power plants - Coal, oil, nuclear fission.&lt;br /&gt;
* Renewable power plants - Solar, wind, nuclear fusion.&lt;br /&gt;
&lt;br /&gt;
===Services===&lt;br /&gt;
Services are needed to make the population happy. While all buildings have a level of happiness based on the needs that are met, it is specially important for residential, commercial and industrial zones. If those zones don&#039;t have their needs covered, people will leave them.&lt;br /&gt;
&lt;br /&gt;
The services needed by people are determined by the class of the settlement.&lt;br /&gt;
&lt;br /&gt;
Police departments and schools are always needed. It is only needed to build fire department, hospitals and high schools when the settlement becomes a town.&lt;br /&gt;
&lt;br /&gt;
Universities are a special case. They are not needed to cover the needs of the population, but they are the only ways of making the technological level of the city increase. This is the only way of unlocking fission nuclear power plants and, eventually, fusion power plants.&lt;br /&gt;
&lt;br /&gt;
===Transportation===&lt;br /&gt;
Transportation is essential to allow people move between different buildings. Residential areas are sources of traffic and other areas are sinks of traffic.&lt;br /&gt;
&lt;br /&gt;
If people in residential areas cannot reach schools and workplaces (commercial and industrial zones, for example) they will leave.&lt;br /&gt;
&lt;br /&gt;
Roads and train tracks have a specific capacity. The more people using them, the less people will want to use them. At some point, they are too crowded for more people to use them.&lt;br /&gt;
&lt;br /&gt;
Roads and train tracks can be interleaved and they count as being connected even if the drawing of the tiles in the map don&#039;t look like they are connected. It is enough for them to be next to each other.&lt;br /&gt;
&lt;br /&gt;
Ports and airports don&#039;t have any effect on transportation within a city, they are only a source of income, like stadiums.&lt;br /&gt;
&lt;br /&gt;
===Power===&lt;br /&gt;
Power plants are needed to provide energy to all your buildings (even parks!). Buildings with no power can&#039;t work.&lt;br /&gt;
&lt;br /&gt;
The generation depends on the time of the year. Some power plants are more effective in summer, like solar power plants, and others are more effective in winter, like wind power plants. All other power plants are slightly affected by the time of the year, the efficiency depends on the temperature of the environment after all.&lt;br /&gt;
&lt;br /&gt;
===Pollution===&lt;br /&gt;
Transportation, factories, polluting power plants... They all create pollution. A polluted city will make less people want to come!&lt;br /&gt;
&lt;br /&gt;
===City class===&lt;br /&gt;
A settlement changes class depending on the population and the presence of some buildings.&lt;br /&gt;
&lt;br /&gt;
*Village - From the start.&lt;br /&gt;
*Town - Population &amp;gt;= 500.&lt;br /&gt;
*City - At least one library. Population &amp;gt;= 1000.&lt;br /&gt;
*Metropolis - At least one stadium, university and museum. Population &amp;gt;= 3000.&lt;br /&gt;
*Capital - At least one port and an airport. Population &amp;gt;= 6000.&lt;br /&gt;
&lt;br /&gt;
The requirements add up, that is, to upgrade to a capital it is needed to meet all requirements of the lower classes.&lt;br /&gt;
&lt;br /&gt;
Similarly, some building types are unlocked by reaching specific classes.&lt;br /&gt;
&lt;br /&gt;
*City - Unlocks stadiums, ports and airports.&lt;br /&gt;
&lt;br /&gt;
===Loans===&lt;br /&gt;
If you are short of money, you can ask the bank for a loan. Information about the payments is in the same screen where you can get them. You can only have one loan at a time.&lt;br /&gt;
&lt;br /&gt;
===Disasters===&lt;br /&gt;
Sometimes, unexpected disastrous events can happen. In this game, fires can happen anytime, as well as nuclear meltdowns (if there are fission nuclear power plants).&lt;br /&gt;
&lt;br /&gt;
The more fire departments, the lower the risk of fires. However, once a fire has started, the best way to get rid of it is to demolish every tile around it as soon as possible, edit mode isn&#039;t disabled during disasters.&lt;br /&gt;
&lt;br /&gt;
Nuclear meltdowns always have the same risk of happening. When a fission nuclear power plant explodes it spreads radiation (even if the fire was propagated from another building). Radiation takes a really long time to disappear, and there is no way of building things on top of it or of removing it. It can stay in both water and land.&lt;br /&gt;
&lt;br /&gt;
Disasters can be turned off in the options menu, if you prefer to play that way.&lt;br /&gt;
&lt;br /&gt;
===Game Over===&lt;br /&gt;
The only way to lose in this game is to have a negative budget 4 times in a row. If there is a positive budget, the counter decreases back to 0 once per positive budget. Note that negative funds don&#039;t matter in this case.&lt;br /&gt;
&lt;br /&gt;
After 4 negative budgets, the population will get tired of you and remove you from your position as mayor.&lt;br /&gt;
&lt;br /&gt;
There is no way to win - Isn&#039;t the satisfaction of a fully developed city enough for everybody?&lt;br /&gt;
&lt;br /&gt;
==Controls==&lt;br /&gt;
&#039;&#039;&#039;City map:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Select/L - Build menu&lt;br /&gt;
&lt;br /&gt;
Start/R - Pause menu&lt;br /&gt;
&lt;br /&gt;
B - Hold to move around the map&lt;br /&gt;
&lt;br /&gt;
A - If not building, show the name of the element under the cursor&lt;br /&gt;
&lt;br /&gt;
==Screenshots==&lt;br /&gt;
https://dlhb.gamebrew.org/gbahomebrews/ucityadvance3.png&lt;br /&gt;
https://dlhb.gamebrew.org/gbahomebrews/ucityadvance4.png&lt;br /&gt;
&lt;br /&gt;
https://dlhb.gamebrew.org/gbahomebrews/ucityadvance5.png&lt;br /&gt;
https://dlhb.gamebrew.org/gbahomebrews/ucityadvance6.png&lt;br /&gt;
&lt;br /&gt;
==Media==&lt;br /&gt;
&#039;&#039;&#039;[GBA Game] µCity Advance v1.0&#039;&#039;&#039; ([https://www.youtube.com/watch?v=xYQfRM_zih0 Antonio Niño Díaz]) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;youtube&amp;gt;xYQfRM_zih0&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Compatibility==&lt;br /&gt;
Runs on GBA emulator like mGBA, or a flashcart and a real GBA.&lt;br /&gt;
&lt;br /&gt;
==Changelog==&lt;br /&gt;
&#039;&#039;&#039;v1.0.2&#039;&#039;&#039;&lt;br /&gt;
*Fix potential issue when accessing SRAM. This hasn&#039;t been confirmed to be an issue, but it&#039;s better to be safe than sorry.&lt;br /&gt;
*Change game code to tell the EverDrive GBA that the save type of this game is SRAM.&lt;br /&gt;
*Lots of build system changes under the hood that don&#039;t affect the game.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.0.1&#039;&#039;&#039;&lt;br /&gt;
*Add some missing credits.&lt;br /&gt;
&lt;br /&gt;
==Credits==&lt;br /&gt;
Game, art, SFXs and some music made by AntonioND/SkyLyrac (Antonio Niño Díaz).&lt;br /&gt;
&lt;br /&gt;
Most music obtained from [https://modarchive.org/ The Mod Archive].&lt;br /&gt;
&lt;br /&gt;
Third party tools and libraries used:&lt;br /&gt;
* [https://devkitpro.org/ devkitPro].&lt;br /&gt;
* [https://www.libsdl.org/ SDL 2].&lt;br /&gt;
* [http://www.libpng.org/pub/png/libpng.html libpng].&lt;br /&gt;
* [https://codeberg.org/SkyLyrac/giibiiadvance GiiBiiAdvance].&lt;br /&gt;
* [https://www.aseprite.org/ Aseprite].&lt;br /&gt;
* [https://www.mapeditor.org/ Tiled].&lt;br /&gt;
* [https://jfxr.frozenfractal.com/ JFXR].&lt;br /&gt;
* [https://openmpt.org/ Open ModPlug Tracker].&lt;br /&gt;
* [https://modarchive.org/ The Mod Archive].&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
* Author&#039;s website - http://www.skylyrac.net/&lt;br /&gt;
* itch.io - https://skylyrac.itch.io/ucity-advance&lt;br /&gt;
* Codeberg - https://codeberg.org/SkyLyrac/ucity-advance&lt;br /&gt;
* GitHub - https://github.com/AntonioND/ucity-advance&lt;br /&gt;
&lt;br /&gt;
[[Category:GBA Jam 2021]]&lt;/div&gt;</summary>
		<author><name>SkyLyrac</name></author>
	</entry>
	<entry>
		<id>https://www.gamebrew.org/index.php?title=Meteora_Galatic_Battle&amp;diff=203632</id>
		<title>Meteora Galatic Battle</title>
		<link rel="alternate" type="text/html" href="https://www.gamebrew.org/index.php?title=Meteora_Galatic_Battle&amp;diff=203632"/>
		<updated>2026-01-22T22:54:45Z</updated>

		<summary type="html">&lt;p&gt;SkyLyrac: Update link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox DS Homebrews&lt;br /&gt;
|title=Meteora Galactic Battle&lt;br /&gt;
|image=meteora.png&lt;br /&gt;
|description=Meteroa is a space/fantasy based god-sim game by J.&lt;br /&gt;
|author=Jerome Wax (X-Blaster)&lt;br /&gt;
|lastupdated=2007/08/21&lt;br /&gt;
|type=Simulation&lt;br /&gt;
|version=0.9.2&lt;br /&gt;
|license=Mixed&lt;br /&gt;
|download=https://dlhb.gamebrew.org/dshomebrew2/meteora.7z?k33p0fil35 0.8.0 &amp;amp; 0.9.2&lt;br /&gt;
|downloadraw=http://meteora.lo2k.net/download/meteora-src.rar&lt;br /&gt;
|website=http://meteora.lo2k.net&lt;br /&gt;
|source=https://codeberg.org/SkyLyrac/meteora&lt;br /&gt;
}}&lt;br /&gt;
Meteroa is a space fantasy based god-sim game by Jerome Wax that lies somewhere between populous, world of sand and pong. From over 8 months of development, it is a game of strategy action in space.&lt;br /&gt;
&lt;br /&gt;
It was submitted to the NEO Summer Coding Compo 2007 (NDS Game, 3rd place). Verion 0.8.0 Meteora Evolution was presented in the Dev-fr Coding Compo 2007 (Game, 2nd place).&lt;br /&gt;
&lt;br /&gt;
In 2024, the game was ported to [https://blocksds.skylyrac.net BlocksDS] by AntonioND to support modern tools and for better compatibility on DSi mode.&lt;br /&gt;
&lt;br /&gt;
==Feature==&lt;br /&gt;
* An engine containing a garbage collector to avoid memory leaks during development.&lt;br /&gt;
* Use the microphone for certain powers.&lt;br /&gt;
* Use of gestures.&lt;br /&gt;
* Visual effects (explosions, earthquakes, meteor streaks).&lt;br /&gt;
* Use of dual-screen 3D (thanks to the ulib).&lt;br /&gt;
* Sprites more than 1200 on the screen.&lt;br /&gt;
&lt;br /&gt;
==User guide==&lt;br /&gt;
Meteora is an action version of meteos. It is a game where planets attack each other. You control one of the two planets and by sending mana your goal is to get your opponent&#039;s life to zero before you do.&lt;br /&gt;
&lt;br /&gt;
You and your opponent have:&lt;br /&gt;
* Mana (to use your powers).&lt;br /&gt;
* A shield that constantly regenerates.&lt;br /&gt;
* The clean energy of your planet.&lt;br /&gt;
&lt;br /&gt;
Whenever you send an attack up the screen, your opponent will receive it (planets can be several light years apart). Your opponent can deflect your attacks as you might, ie by using his God Powers.&lt;br /&gt;
&lt;br /&gt;
You must therefore send as many attacks as possible towards your opponent while trying to stop the attacks coming from your opponent.&lt;br /&gt;
&lt;br /&gt;
===Mana===&lt;br /&gt;
Your planet has a certain amount of mana you regain all the time. Free the mana to deflect, destroy the enemy attacks.&lt;br /&gt;
&lt;br /&gt;
Your Stylus acts as a magnet to which you belong. The more you&#039;re ready for a ball of mana, the more you attract, the more you are away, your pen is less effective. Keep this principle in mind as you play. To successfully send an attack so do not give a boost with the stylus but with your attack.&lt;br /&gt;
&lt;br /&gt;
===Powers of God===&lt;br /&gt;
You can at any time use your powers of god. However, you should have enough mana and respect the cooldown (cooldown).&lt;br /&gt;
&lt;br /&gt;
Some powers require additional action on your part such as creating glyphs or a certain breath.&lt;br /&gt;
&lt;br /&gt;
The list of powers is quite long, it is suggested to read [http://meteora.lo2k.net/Master/pouvoirs the list of powers] for more information of each of them.&lt;br /&gt;
&lt;br /&gt;
===Attacks===&lt;br /&gt;
* &#039;&#039;&#039;Instant:&#039;&#039;&#039;&lt;br /&gt;
** Send a volley of meteorites towards your opponent (e.g. Multiple Shot). A formidable weapon, the more you use it, the less its cost and reload time will be.&lt;br /&gt;
** You can direct your attacks with your stylus.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Charged:&#039;&#039;&#039;&lt;br /&gt;
** These attacks will load over time (e.g. Frost Flame). 10 to 15 seconds and your mana size is maximum. Leave no respite and send this kind of monster on your opponent.&lt;br /&gt;
** Merge the different types of charged mana together, they will grow even faster. Also remember to bring them back to your planet to grow your mana.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Shrapnel:&#039;&#039;&#039;&lt;br /&gt;
** The shrapnel attack explodes at the slightest shock with an attack from your opponent. Indispensable to decimate an enemy attack or to create an effective defense.&lt;br /&gt;
** Merge there with a charged attack to make it even more effective. If you manage to merge several shrapnel between them ... your attack can become ultimate.&lt;br /&gt;
&lt;br /&gt;
===Defenses===&lt;br /&gt;
* &#039;&#039;&#039;God&#039;s wind:&#039;&#039;&#039;&lt;br /&gt;
** The Wind of God can repel enemy attacks or send your own attacks more effectively. When you activate it, you have a limited time of use (icons available in the upper right corner of the bottom screen). If you blow on the Nintendo DS while the icon is visible, your breath will be transmitted in the game and it will allow many things to happen.&lt;br /&gt;
** Be careful not to hyperventilate. The more you use it, the longer its reload time...&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Change of sides:&#039;&#039;&#039;&lt;br /&gt;
** When you activate this spell, you will need to perform a glyph in a limited time. &lt;br /&gt;
** To do this, you have to touch the yellow symbols before they disappear. It is also necessary to make sure that nothing touches a symbol during the invocation of this spell. If you can do it right, whatever is on the screen will be yours. If you perform it during an enemy attack, that attack will be in your possession. You are free to return it to your opponent or to attract it to your planet in order to benefit from a mana bonus.&lt;br /&gt;
** If you have a hard time at first, use it in conjunction with god&#039;s wind, so that the bottom part of the screen is blank while the glyph is running.&lt;br /&gt;
&lt;br /&gt;
===Power ups===&lt;br /&gt;
* &#039;&#039;&#039;Mana increase:&#039;&#039;&#039;&lt;br /&gt;
** You can increase the maximum mana rate and the speed of your mana gain. Don&#039;t overlook this kind of power, they can actually play a big part in the game. Be careful though, the more you use them, the more they cost.&lt;br /&gt;
&lt;br /&gt;
==Controls==&lt;br /&gt;
Up/Down - Release mana&lt;br /&gt;
&lt;br /&gt;
Stylus - Attract mana&lt;br /&gt;
&lt;br /&gt;
L/R - Use God Powers&lt;br /&gt;
&lt;br /&gt;
==Screenshots==&lt;br /&gt;
https://dlhb.gamebrew.org/dshomebrew/meteora2.png&lt;br /&gt;
https://dlhb.gamebrew.org/dshomebrew/meteora4.png&lt;br /&gt;
&lt;br /&gt;
https://dlhb.gamebrew.org/dshomebrew/meteora3.png&lt;br /&gt;
https://dlhb.gamebrew.org/dshomebrew/meteora5.png&lt;br /&gt;
&amp;lt;!--BEGIN Online Emulator Section--&amp;gt;&lt;br /&gt;
==Online emulator==&lt;br /&gt;
{{EmulatorJS Main&lt;br /&gt;
|width=515px&lt;br /&gt;
|height=384px&lt;br /&gt;
|EJS_backgroundImage=https://www.gamebrew.org/images/c/c8/Meteora.png&lt;br /&gt;
|EJS_core=nds&lt;br /&gt;
|EJS_gameName=Meteora Galactic Battle&lt;br /&gt;
|EJS_gameUrl=https://dlhb.gamebrew.org/onlineemulators/nds/meteora.7z&lt;br /&gt;
}}&lt;br /&gt;
{{DS Control Settings}}&lt;br /&gt;
&amp;lt;!--END Online Emulator Section--&amp;gt;&lt;br /&gt;
==Credits==&lt;br /&gt;
Brunni, Mollusk, Reppa, Benoit Charcosset, Audrey.&lt;br /&gt;
&lt;br /&gt;
Everyone in dev-fr.&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
* Official website - [https://web.archive.org/web/20140615140612/http://meteora.lo2k.net http://meteora.lo2k.net] (archived)&lt;br /&gt;
* NeoFlash - [https://web.archive.org/web/20210208003002/https://www.neoflash.com/forum/index.php?topic=4569.0 https://www.neoflash.com/forum/index.php?topic=4569.0] (archived)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:NEO Summer Coding Compo 2007]]&lt;br /&gt;
[[Category:Dev-fr Coding Compo 2007]]&lt;/div&gt;</summary>
		<author><name>SkyLyrac</name></author>
	</entry>
	<entry>
		<id>https://www.gamebrew.org/index.php?title=Bunjalloo&amp;diff=203510</id>
		<title>Bunjalloo</title>
		<link rel="alternate" type="text/html" href="https://www.gamebrew.org/index.php?title=Bunjalloo&amp;diff=203510"/>
		<updated>2026-01-09T02:41:38Z</updated>

		<summary type="html">&lt;p&gt;SkyLyrac: Update URL of git repository.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox DS Homebrews&lt;br /&gt;
|title=Bunjalloo&lt;br /&gt;
|image=Snapshot 2025-11-02 02-42-36.png&lt;br /&gt;
|description=Simple web browser for the Nintendo DS.&lt;br /&gt;
|author=quirkysoft, AntonioND&lt;br /&gt;
|lastupdated=2025/11/29&lt;br /&gt;
|type=Utilities&lt;br /&gt;
|version=0.12.0&lt;br /&gt;
|license=Mixed&lt;br /&gt;
|download=https://codeberg.org/SkyLyrac/bunjalloo/releases&lt;br /&gt;
|website=https://codeberg.org/SkyLyrac/bunjalloo&lt;br /&gt;
|source=https://codeberg.org/SkyLyrac/bunjalloo&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;!--Bunjalloo.7z?k33p0fil35--&amp;gt;&lt;br /&gt;
This is Bunjalloo, the open source Nintendo DS web browser. It was originally developed by Richard Quirk until 2010. This repository contains a working fork that you can build with modern BlocksDS.&lt;br /&gt;
&lt;br /&gt;
Bunjalloo has been implemented from scratch [http://www.whatwg.org/ using the whatwg user agent design rules].&lt;br /&gt;
&lt;br /&gt;
This version can take advantage of the additional RAM, CPU power, and WPA2 support of DSi. It also uses modern cryptographic libraries to support modern TLS protocols.&lt;br /&gt;
&lt;br /&gt;
==Features==&lt;br /&gt;
* Bookmark support.&lt;br /&gt;
* Cookie and image support.&lt;br /&gt;
* Optional CA certificate checks.&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
Extract the data folder and contents to the root of your SD card.&lt;br /&gt;
&lt;br /&gt;
Extract the .nds file to the root of your SD Card.&lt;br /&gt;
&lt;br /&gt;
[[DLDI|DLDI]] patch the .nds file if your card needs it.&lt;br /&gt;
&lt;br /&gt;
==Controls==&lt;br /&gt;
* Start: Enter a URL&lt;br /&gt;
* Up/Down: Scroll screen up and down&lt;br /&gt;
* Left/Right: Scroll screen a page at a time&lt;br /&gt;
* R: Move forwards in the history&lt;br /&gt;
* L: Move backwards in the history&lt;br /&gt;
* Click stylus: Follow link, enter data in forms, press keys.&lt;br /&gt;
* Hold stylus: Scroll.&lt;br /&gt;
&lt;br /&gt;
==Changelog==&lt;br /&gt;
&#039;&#039;&#039;Version 0.12.0&#039;&#039;&#039;&lt;br /&gt;
* User changes:&lt;br /&gt;
** Lists (unordered and ordered) are now supported. They aren&#039;t perfect, but they make lots of websites a lot more readable than before.&lt;br /&gt;
** The system that lays out elements on the screen has been heavily reworked, which was needed to support lists. Some websites display more spaces than before in some places.&lt;br /&gt;
** Links of the type &amp;lt;code&amp;gt;//yourdomain.com/about/example.html&amp;lt;/code&amp;gt; now work. They are absolute links that contain everything except for the schema (HTTP, HTTPS, etc), which is preserved.&lt;br /&gt;
** The download queue used to stop before some files were fully downloaded. This prevented some images from being displayed, for example.&lt;br /&gt;
** MIME type &amp;lt;code&amp;gt;text/xhtml&amp;lt;/code&amp;gt; is now allowed. It&#039;s parsed the same way as HTML.&lt;br /&gt;
** Editable text areas were very buggy. The caret jumped around when editing text around the edges, adding and deleting characters could make the application crash. This has been fixed.&lt;br /&gt;
** Combo boxes with entries that were too long displayed text outside of the box, on the right (only after selecting a too long entry). The text is now clipped correctly.&lt;br /&gt;
** The font Bitstream Vera has been replaced by DejaVu, which is based on Bitstream Vera and adds a lot of additional characters. The license text has been replaced as well. Note that it wasn&#039;t possible to keep using the old TTF file because the converted font wasn&#039;t created using &amp;lt;code&amp;gt;convertftf&amp;lt;/code&amp;gt;, but a conversion script that was removed before version 0.8.0.&lt;br /&gt;
** Charset detection has been improved. Some websites, like Wikipedia, were using &amp;lt;code&amp;gt;meta&amp;lt;/code&amp;gt; tags to communicate the encoding, and they were ignored by the parser.&lt;br /&gt;
** Websites are now considered to be encoded in UTF-8 instead of ISO 8859-1. This is needed because some websites may communicate the encoding in ways that Bunjalloo doesn&#039;t understand, and most websites are in UTF-8 anyway.&lt;br /&gt;
** ISO 8859-1 decoding has been improved. Replacement characters are printed when invalid encodings are found.&lt;br /&gt;
** The home page of the browser has been simplified.&lt;br /&gt;
** Websites that ended with an incomplete UTF-8 character would hang the HTML parser. This has been fixed.&lt;br /&gt;
** Version 0.11.0 partially fixed a bug where combo boxes would remain open after going forwards or backwards in the browsing history, for example. This has now been fixed properly.&lt;br /&gt;
** The SDL application will exit instead of crashing if the inittialization of SDL fails.&lt;br /&gt;
* Dev changes:&lt;br /&gt;
** Components now support having indentation. ViewRender and BoxLayout have been modified to support components with indentation, like lists. In a list, new text areas are created whenever a new indentation is needed.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
** The HTML renderer and BoxLayout have been modified to support indentation.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
** 3 digit color codes are now supported in the HTML parser. They will be used to change the background color, but it isn&#039;t supported yet.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
** The HTML formatting of the in-application user documentation has been fixed.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
** The build system has been heavily refactored. Instead of building many libraries (libbunjalloo, libbwt, libndspp) and linking them with the final binary (Bunjalloo and unit tests), now there&#039;s a common makefile that generates libbunjalloo and the Bunjalloo binary. Thanks to this the makefiles of the tests only have to link one library instead of three. Also, it&#039;s easier to make changes to Bunjalloo because any changes in the code will trigger a rebuild of the final binary (with different libraries the Makefile of the binary couldn&#039;t detect changes to the libraries).&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
** The HTML parser now looks for &amp;lt;code&amp;gt;noscript&amp;lt;/code&amp;gt; tags explicitly. Previously it still displayed the contents inside of them, but now it will be easier to change their display style if needed.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
** libvera has been renamed to libfont to be more generic and to not require more changes in the future.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
** Some outdated documentation has been cleaned and moved out of the wiki folder where they were initially saved.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
** All remaining tests with issues have been fixed. For example, the updater tests no longer crash on exit (it was caused due to a call to a pure virtual function in the Client class, which has been fixed).&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
** There is now some debug code that paints rectangles around website elements on the screen. This is useful for debugging only, and it requires a rebuild to be enabled.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
** Some hardcoded strings have been replaced by constant names.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
** Bunjalloo now requests UTF-8 encoding before ISO 8859-1 in GET requests.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
** &amp;lt;code&amp;gt;convertftf&amp;lt;/code&amp;gt; has been improved:&lt;br /&gt;
*** It has more error checks.&lt;br /&gt;
*** It allows cutting off pixels from the top or bottom of the font so that it fits better in the current widgets.&lt;br /&gt;
*** Color rounding has been simplified.&lt;br /&gt;
*** An additional shell script has been added to convert DejaVu automatically instead of having to remember how to run &amp;lt;code&amp;gt;convertftf&amp;lt;/code&amp;gt; every time.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 0.11.0&#039;&#039;&#039;&lt;br /&gt;
* User changes:&lt;br /&gt;
** Slot-2 RAM expansion cartridges (such as the one that came with Opera) is now supported. They are used as temporary storage for images.&lt;br /&gt;
** Search engine shortcuts have been updated. Google and Yahoo have been removed because they no longer work. The Wikipedia search string has been updated, and DuckDuckGo, FrogFind! and GitHub have been added to the list.&lt;br /&gt;
** The URL used by the auto-updater has been fixed, so future versions of Bunjalloo can be downloaded by Bunjalloo itself. Note that auto-update only seems to work if the Bunjalloo ROM is in the root of the SD card.&lt;br /&gt;
** The NDS ROM of Bunjalloo now contains all the files it needs to run, it doesn&#039;t need to be distributed with a folder with lots of extra files. &amp;lt;code&amp;gt;data/bunjalloo&amp;lt;/code&amp;gt; is now only used as temporary storage and for user configuration storage. Unfortunately, changing the font of the CA certificates now requires the user to use &amp;lt;code&amp;gt;ndstool&amp;lt;/code&amp;gt; to modify the NitroFS files. Also, if &amp;lt;code&amp;gt;data/bunjalloo&amp;lt;/code&amp;gt; doesn&#039;t exist at boot it will be created automatically.&lt;br /&gt;
** The text box used for keyboard input has been made a lot more stable. Sometimes some lines would be too long to fit and they would overflow to the next one displaying the last character. Sometimes deleting a character or adding a character would make the caret go over the line limit and cause a crash. This has been fixed. Also, now it&#039;s possible to press the white area after the text and the caret will be set to the last line with text instead of disappearing.&lt;br /&gt;
** A new protocol called &amp;lt;code&amp;gt;about://&amp;lt;/code&amp;gt; has been added. This protocol is used for built-in pages that aren&#039;t stored in the filesystem or downloaded. Also, the home page &amp;lt;code&amp;gt;file://licence&amp;lt;/code&amp;gt; has been moved to a file in NitroFS.&lt;br /&gt;
** The &amp;lt;code&amp;gt;file://&amp;lt;/code&amp;gt; URI schema support has been improved. Now it supports servers. &amp;lt;code&amp;gt;file://localhost/file.txt&amp;lt;/code&amp;gt; accesses a file at the root of the filesystem, &amp;lt;code&amp;gt;file://bunjalloo/file.txt&amp;lt;/code&amp;gt; accesses a file inside &amp;lt;code&amp;gt;data/bunjalloo&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;file://nitro/file.txt&amp;lt;/code&amp;gt; accesses a file inside the NitroFS filesystem of Bunjalloo.&lt;br /&gt;
** A new internal page called &amp;lt;code&amp;gt;about://sysinfo&amp;lt;/code&amp;gt; has been added. It shows system information such as available RAM. This page can be loaded while browsing a website and it will show the memory available after loading that website.&lt;br /&gt;
** Add missing credits and licenses to the homepage of the browser.&lt;br /&gt;
** Implement option that allows user to decide to clear the cache at boot or not. The setting was there, but it was unused.&lt;br /&gt;
** Transparency has been fixed in images that don&#039;t need to be scaled down to fit on the screen.&lt;br /&gt;
** The palette of the scroll touch screen icon is now loaded correctly so that it doesn&#039;t overlap with the colors used by the toolbar.&lt;br /&gt;
** Combo boxes have been made a lot more stable. Boxes that were too big would have a scroll bar outside of the screen (or cause a crash). If a combo box was left open and the user, for example, pressed &amp;amp;quot;back&amp;amp;quot; in the toolbar, or button Y to open the bookmarks, it would cause a crash. This all has been fixed in this version.&lt;br /&gt;
** In the SDL version, allow the user to set the gap between screens and the zoom factor with the environment variables &amp;lt;code&amp;gt;BUNJALLOO_SCREEN_GAP&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;BUNJALLOO_SCREEN_SCALE&amp;lt;/code&amp;gt;. &amp;lt;code&amp;gt;NDS_GAP&amp;lt;/code&amp;gt; is no longer supported.&lt;br /&gt;
** The SDL window now displays &amp;amp;quot;Bunjalloo&amp;amp;quot; as title instead of &amp;amp;quot;SDL Application&amp;amp;quot;.&lt;br /&gt;
** In the SDL version, keyboard input with the PC input now works in a fluid way rather than having to wait for a second or so between each key press. Backspace and return keys are also supported now.&lt;br /&gt;
** Some checks have been added to the Canvas class to avoid crashes because of writting out bounds.&lt;br /&gt;
** Environment variable &amp;lt;code&amp;gt;NDS_DLDI&amp;lt;/code&amp;gt; has been renamed to &amp;lt;code&amp;gt;BUNJALLOO_DLDI&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;NDS_LANG&amp;lt;/code&amp;gt; has been renamed to &amp;lt;code&amp;gt;BUNJALLOO_LANGUAGE&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Dev changes:&lt;br /&gt;
** The HTML parser doesn&#039;t support partial parsing of data. The code is organized to fed it partial data, but the parser has several loops that assume that there is more data to be used, and they hang if there isn&#039;t more data. Instead of modifying the whole parser, a partial fix has been added: the HTML parser is now only called when the full website has been downloaded. This only fixes well-formed websites, and it will still hang on malformed websites.&lt;br /&gt;
** Codebase reorganized. Different libraries are now in different folders and can be built independently as static archives. This makes it possible to build tests without rebuilding all the codebase for each tests.&lt;br /&gt;
** Fully replace the old build system by a new one. Tools and tests can now be built with the new build system. Tests can also be run automatically with &amp;lt;code&amp;gt;make PLAT=SDL run&amp;lt;/code&amp;gt; from the &amp;lt;code&amp;gt;tests&amp;lt;/code&amp;gt; folder.&lt;br /&gt;
** GoogleTest v1.17.0 has been added to the repository. It is used by the test binaries.&lt;br /&gt;
** The instructions to change the TTF font used by Bunjalloo have been updated to work with &amp;lt;code&amp;gt;convertftf&amp;lt;/code&amp;gt;.&lt;br /&gt;
** The crashes in the HtmlParser tests have been fixed.&lt;br /&gt;
** Some tests have been fixed. Some of them were broken during the development of versions 0.9.0 and 0.10.0 because the behaviour of some things changed.&lt;br /&gt;
** Most tests can be run automatically with one command from make.&lt;br /&gt;
** Many classes have been refactored to require fewer dynamic instantiations and reduce heap fragmentation.&lt;br /&gt;
** Lots of checks have been added to dynamic allocations. This should prevent some crashes due to running out of memory.&lt;br /&gt;
** Some memory leaks have been fixed.&lt;br /&gt;
** C++ exceptions have been enabled in DS builds. They were already enabled in SDL builds.&lt;br /&gt;
** Some code has been moved to ITCM to increase speed.&lt;br /&gt;
** The home page is now a file in NitroFS rather than being hardcoded in the Bunjalloo binary.&lt;br /&gt;
** Cache management has been fixed. The destination (VRAM) was flushed instead of the source (main RAM).&lt;br /&gt;
&#039;&#039;&#039;Version 0.10.0&#039;&#039;&#039;&lt;br /&gt;
* Fixed SSL connections. Entropy is now gathered correctly and the main thread yields every now and then to let the SSL handshake finish.&lt;br /&gt;
* Support checking CA certificates when using SSL. This uses a lot of RAM and it&#039;s a bit slow so it&#039;s disabled by default, and there&#039;s a new option in the settings menu to enable it or disable it. Also, users can provide their own sets of CA certificates.&lt;br /&gt;
* Fixed the type of position markers when searching strings. It was only valid in 32-bit platforms like the DS, so some code wasn&#039;t working on the SDL port. This prevented the configuration settings page from showing up.&lt;br /&gt;
* The DS version now expects the &amp;quot;data/bunjalloo&amp;quot; folder to be in the root of the SD, not in the same folder as the NDS ROM.&lt;br /&gt;
* The home page has been updated. The page with the licenses used by components of Bunjalloo has been split into multiple pages. Also, the licenses of BlocksDS libraries are now included as well.&lt;br /&gt;
* Support BMP and APNG formats.&lt;br /&gt;
* Fix scale down calculations for very big images. Sometimes they were left too big in one dimension.&lt;br /&gt;
* Display transparent pixels as white instead of black.&lt;br /&gt;
* A bad debug check has been removed. This prevented some elements from loading, like some (but not all) images.&lt;br /&gt;
* Improved handling of errors when receiving packets.&lt;br /&gt;
* Restore code that parses dates.&lt;br /&gt;
* Fix timeout counter so that it uses seconds instead of retry attempts.&lt;br /&gt;
* Zlib has been updated to version 1.3.1.&lt;br /&gt;
* Some unused features of Mbed TLS have been disabled to reduce code size.&lt;br /&gt;
* The code is now built with &amp;quot;-Os&amp;quot; to save RAM.&lt;br /&gt;
* Flush data cache before doing a DMA copy.&lt;br /&gt;
* Removed some superfluous waits for VBL.&lt;br /&gt;
* Fixed some warnings, silenced some of them.&lt;br /&gt;
* Some internal code cleanup.&lt;br /&gt;
* Updated instructions in readme.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 0.9.0&#039;&#039;&#039;&lt;br /&gt;
* Migrated to BlocksDS from devkitARM. Now Bunjalloo can take advantage of the Wifi driver in DSi mode, with WPA2 support and the additional RAM of DSi.&lt;br /&gt;
* The old versions of libpng, libjpeg and giflib have been replaced by libplum.&lt;br /&gt;
* MatrixSsl isn&#039;t currently maintained and it has been replaced by Mbed TLS. Switching between HTTP and HTTPS is still a bit unreliable.&lt;br /&gt;
* The PC port has been fixed. It builds, some infinite loops have been fixed, and images are now displayed correctly.&lt;br /&gt;
* Test can&#039;t be built at the moment, they will be re-enabled in the future.&lt;br /&gt;
* Initialize keyboard state correctly so that the extra symbols aren&#039;t displayed after the first key press.&lt;br /&gt;
* Modify cache CRC32 calculation to include the protocol, not just the rest of the address. This lets us retry a website with http and then https if it fails, for example. Previously it would just reload the cached error page.&lt;br /&gt;
* Added missing copyright notices to the &amp;quot;show copying&amp;quot; page.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 0.8&#039;&#039;&#039;&lt;br /&gt;
* Updated to the latest devkitARM, libnds, libfat and libpng.&lt;br /&gt;
* Fix the updater that was broken in 0.7.7.&lt;br /&gt;
* Fix some layout randomness (on e.g config screen).&lt;br /&gt;
* Change the progress bar to be textless.&lt;br /&gt;
* Fix for occasional giant whitespaces.&lt;br /&gt;
* Use last-modified in cache calculations.&lt;br /&gt;
* Fix flashing when swapping from browser to keyboard.&lt;br /&gt;
* Show on-screen password fields with circles.&lt;br /&gt;
* Change the password field to use circles.&lt;br /&gt;
* Speed up scrolling.&lt;br /&gt;
* Performance improvements.&lt;br /&gt;
* Change to Okiwi font generation and rendering.&lt;br /&gt;
* Fix some major memory leaks.&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
* Codeberg (new) - https://codeberg.org/SkyLyrac/bunjalloo/releases&lt;br /&gt;
* Google Code (old archive) - http://code.google.com/p/quirkysoft&lt;/div&gt;</summary>
		<author><name>SkyLyrac</name></author>
	</entry>
	<entry>
		<id>https://www.gamebrew.org/index.php?title=WolveSlayer&amp;diff=203509</id>
		<title>WolveSlayer</title>
		<link rel="alternate" type="text/html" href="https://www.gamebrew.org/index.php?title=WolveSlayer&amp;diff=203509"/>
		<updated>2026-01-09T02:20:24Z</updated>

		<summary type="html">&lt;p&gt;SkyLyrac: Update URL of git repository.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox DS Homebrews&lt;br /&gt;
|title=WolveSlayer&lt;br /&gt;
|image=wolveslayer.png&lt;br /&gt;
|description=3D hack n slash game.&lt;br /&gt;
|author=Firehazard Studio, AntonioND&lt;br /&gt;
|lastupdated=2024/07/31&lt;br /&gt;
|type=Action&lt;br /&gt;
|version=v20240731&lt;br /&gt;
|license=MIT&lt;br /&gt;
|download=https://dlhb.gamebrew.org/dshomebrew2/wolveslayer.7z?0714&lt;br /&gt;
|website=https://codeberg.org/SkyLyrac/wolveslayer&lt;br /&gt;
|source=https://codeberg.org/SkyLyrac/wolveslayer&lt;br /&gt;
}}&lt;br /&gt;
WolveSlayer is a 3D hack&#039;n&#039;slash game for the NDS. Its graphics engine uses effects that have yet to be seen on commercial DS games.&lt;br /&gt;
&lt;br /&gt;
Developed by Firehazard Studio, this homebrew game was released for the NEO Spring Coding Compo 2007, where it won 1st place in the GBA/NDS Game category. &lt;br /&gt;
&lt;br /&gt;
In 2024, the game was ported to [https://blocksds.skylyrac.net/ BlocksDS] by AntonioND to support modern tools.&lt;br /&gt;
&lt;br /&gt;
==Features==&lt;br /&gt;
* 3D graphics (effect of lighting and bump mapping).&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
&amp;lt;tabber&amp;gt;&lt;br /&gt;
|-|BlocksDS port=&lt;br /&gt;
&lt;br /&gt;
Copy the .nds file to your storage device.&lt;br /&gt;
&lt;br /&gt;
|-|Neoflash compo ver.=&lt;br /&gt;
&lt;br /&gt;
[[DLDI|DLDI]] patch the ROM if needed and copy it to your flashcard.&lt;br /&gt;
&lt;br /&gt;
One of those ROMs has an icon and ROM infos attached. But this causes bugs on some flashcards (e.g. sccf and ds-x). If you have trouble use the other rom (blank rom). &lt;br /&gt;
&lt;br /&gt;
Don&#039;t forget to copy the folder wolveslayer to the root of your flashcard.&lt;br /&gt;
&amp;lt;/tabber&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==User guide==&lt;br /&gt;
Main aim of this game is to find and slay down a big grey wolf (you will meet smaller ones too). Of course you will lose if they kill you. &lt;br /&gt;
&lt;br /&gt;
==Controls==&lt;br /&gt;
D-Pad - Move character&lt;br /&gt;
&lt;br /&gt;
A - Open doors (so far only one)&lt;br /&gt;
&lt;br /&gt;
B - Swing the sword&lt;br /&gt;
&lt;br /&gt;
==Screenshots==&lt;br /&gt;
https://dlhb.gamebrew.org/dshomebrew/wolveslayer2.png&lt;br /&gt;
https://dlhb.gamebrew.org/dshomebrew/wolveslayer3.png&lt;br /&gt;
&lt;br /&gt;
https://dlhb.gamebrew.org/dshomebrew/wolveslayer4.png&lt;br /&gt;
https://dlhb.gamebrew.org/dshomebrew/wolveslayer5.png&lt;br /&gt;
&lt;br /&gt;
==Media==&lt;br /&gt;
&#039;&#039;&#039;WolveSlayer (walktrough and killing endbss)&#039;&#039;&#039; ([https://www.youtube.com/watch?v=q-SZ4lWB1Qs DrunkencoderPayk]) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;515&amp;quot;&amp;gt;q-SZ4lWB1Qs&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--BEGIN Online Emulator Section--&amp;gt;&lt;br /&gt;
==Online emulator==&lt;br /&gt;
{{EmulatorJS Main&lt;br /&gt;
|width=515px&lt;br /&gt;
|height=384px&lt;br /&gt;
|EJS_backgroundImage=https://www.gamebrew.org/images/c/c7/Wolveslayer.png&lt;br /&gt;
|EJS_core=nds&lt;br /&gt;
|EJS_gameName=WolveSlayer&lt;br /&gt;
|EJS_gameUrl=https://dlhb.gamebrew.org/onlineemulators/nds/wolveslayer.7z&lt;br /&gt;
}}&lt;br /&gt;
{{DS Control Settings}}&lt;br /&gt;
&amp;lt;!--END Online Emulator Section--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Changelog==&lt;br /&gt;
&#039;&#039;&#039;2024/07/31&#039;&#039;&#039; &lt;br /&gt;
* The internal code of the game engine has been cleaned up and reorganized.&lt;br /&gt;
* Some of the code that loads assets has been optimized.&lt;br /&gt;
* Many checks have been added to the code to make the code more memory-safe.&lt;br /&gt;
* A buffer underflow buffer has been fixed. This sometimes manifested as video glitches when swinging the sword to the right of the screen (but only with custom builds, not with the builds on GitHub).&lt;br /&gt;
* The MOD player has been replaced by LibXM7. This reduces the amount of code to maintain in this repository and will mean that this game gets the benefits of other projects that also use LibXM7 and fix bugs there.&lt;br /&gt;
* The code of the repository has been licensed under the MIT license with permission from Payk.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2024/07/14&#039;&#039;&#039; &lt;br /&gt;
* This version fixes the super slow speed when loading files, which was particularly bad on DSi. It also changes the format of fatal error messages so that they are more readable.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2024/07/12&#039;&#039;&#039; (AntonioND)&lt;br /&gt;
* First release of the port to BlocksDS.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2007/03/24&#039;&#039;&#039; &lt;br /&gt;
* This version has a bit shorter loading times in the first map and solved umlaut problem.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2007/03/20&#039;&#039;&#039; (Firehazard Studio)&lt;br /&gt;
* Released for the Neoflash Spring Coding Compo 07.&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
* Author&#039;s website (Payk) - [https://web.archive.org/web/20071212183823/http://payk.drunkencoders.com http://payk.drunkencoders.com] (archived)&lt;br /&gt;
* GitHub (AntonioND) - https://codeberg.org/SkyLyrac/wolveslayer/releases/&lt;br /&gt;
* NeoFlash - https://www.neoflash.com/forum/index.php?topic=3895.0&lt;br /&gt;
* Forum - https://forums.gamebrew.org/threads/old-release-wolveslayer-source-code.601/&lt;br /&gt;
&lt;br /&gt;
[[Category:NEO Spring Coding Compo 2007]]&lt;/div&gt;</summary>
		<author><name>SkyLyrac</name></author>
	</entry>
	<entry>
		<id>https://www.gamebrew.org/index.php?title=PA_lib&amp;diff=203508</id>
		<title>PA lib</title>
		<link rel="alternate" type="text/html" href="https://www.gamebrew.org/index.php?title=PA_lib&amp;diff=203508"/>
		<updated>2026-01-09T00:14:02Z</updated>

		<summary type="html">&lt;p&gt;SkyLyrac: Update URL of git repository.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox DS Homebrews&lt;br /&gt;
|title=PAlib&lt;br /&gt;
|image=palib4.png&lt;br /&gt;
|description=A Nintendo DS library used to create homebrew games/apps.&lt;br /&gt;
|author=Mollusk&lt;br /&gt;
|lastupdated=2025/02/28&lt;br /&gt;
|contributor=AntonioND&lt;br /&gt;
|type=Development&lt;br /&gt;
|version=250228&lt;br /&gt;
|license=Mixed&lt;br /&gt;
|download=https://codeberg.org/SkyLyrac/palib&lt;br /&gt;
|downloadraw=https://dlhb.gamebrew.org/dshomebrew2/pallib_100707.rar&lt;br /&gt;
|website=https://codeberg.org/SkyLyrac/palib&lt;br /&gt;
|source=https://codeberg.org/SkyLyrac/palib&lt;br /&gt;
}}&lt;br /&gt;
PAlib is a DS library that works on top of libnds. It is aimed towards simple DS development to make DS games and programs in c and C++. It used to work with devkitARM, but now it is only compatible with BlocksDS.&lt;br /&gt;
&lt;br /&gt;
It was presented in the NEO Coding Compo 2005 (App, 1st place).&lt;br /&gt;
&lt;br /&gt;
While this library isn&#039;t recommended for new projects due to its design flaws, it is still useful to build old projects that were built using it.&lt;br /&gt;
&lt;br /&gt;
==Features==&lt;br /&gt;
* Sprites functions.&lt;br /&gt;
* Background function. &lt;br /&gt;
* Text functions.&lt;br /&gt;
* An API for buttons.&lt;br /&gt;
* Sliders.&lt;br /&gt;
* Checks.&lt;br /&gt;
* Sound effects support.&lt;br /&gt;
* MOD/XM/S3M/IT support thanks to Maxmod.&lt;br /&gt;
* MP3 support thanks to ASlib&lt;br /&gt;
* Stylus and Pad.&lt;br /&gt;
* Draw function.&lt;br /&gt;
* Variable case text.&lt;br /&gt;
* Retrieve info on DS (user name, birthday, language, time/date, etc).&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
To install PAlib follow the instructions [https://codeberg.org/SkyLyrac/palib here].&lt;br /&gt;
&lt;br /&gt;
==User guide==&lt;br /&gt;
Tutorials can be found [http://code.google.com/p/palib-tutorial-pdf here].&lt;br /&gt;
&lt;br /&gt;
==Screenshots==&lt;br /&gt;
https://dlhb.gamebrew.org/dshomebrew/palib2.png&lt;br /&gt;
&lt;br /&gt;
==Media==&lt;br /&gt;
&#039;&#039;&#039;C/PALib Simple Nintendo DS Platformer&#039;&#039;&#039; ([https://www.youtube.com/watch?v=HzqdLHI0SG8 bl0ckeduser]) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;youtube&amp;gt;HzqdLHI0SG8&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Changelog==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;PAlib 250228 beta | AntonioND&#039;&#039;&#039;&lt;br /&gt;
* [Fix] Fix code that sets the LED blink speed.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;PAlib 250114 beta | AntonioND&#039;&#039;&#039;&lt;br /&gt;
* [Fix] Flush cache whenever a DMA copy is made so that users of PAlib don&#039;t need to worry about it.&lt;br /&gt;
* [ASlib] Flush data cache when a MP3 file is played from RAM so that the developer doesn&#039;t need to do it.&lt;br /&gt;
* [DMA_Copy] Use safe BlocksDS libnds DMA functions instead of the old PAlib macros.&lt;br /&gt;
* [Fix] Actually send temperature and battery level to the ARM9 from the ARM7.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;PAlib 250107 beta: PAlib lives on | AntonioND&#039;&#039;&#039;&lt;br /&gt;
* [General] PAlib builds and works again, even on DSi consoles.&lt;br /&gt;
* [General] devkitARM build system has been removed in favour of BlocksDS.&lt;br /&gt;
* [General] Repository structure has been refactored so that it&#039;s clearer.&lt;br /&gt;
* [ARM7] The ARM7 cores have been slightly refactored for modern libnds and to support DSi. Also, the libnds exception handler for the ARM7 is now enabled by default.&lt;br /&gt;
* [ASlib] Interrupts are now enabled in the VBL handler of ASlib so that it doesn&#039;t block multithreading.&lt;br /&gt;
* [Fix] The IPC structure is now allocated at runtime instead of using a hardcoded address, which doesn&#039;t work on DSi.&lt;br /&gt;
* [Fix] Several bugs in ASlib have been fixed.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;PAlib 100707 QuickFix: The last PAlib release | fincs&#039;&#039;&#039;&lt;br /&gt;
* [General] Removed the ASlib IPC clear code, it was doing more harm than good.&lt;br /&gt;
* [3DSprites] PA_3DCreateSprite now returns the GFX number.&lt;br /&gt;
* [Linux] Fixed a backslash (\) path to use forward slash (/).&lt;br /&gt;
* [Examples] The updating script screwed up some sound examples, it&#039;s now fixed.&lt;br /&gt;
* [EFS] EFS support was dropped in favor of libfilesystem.&lt;br /&gt;
* [Editors] PN support is now dropped.&lt;br /&gt;
* [Fix] PAlib now works with devkitARM r31.&lt;br /&gt;
* [Sprite] Fixed PA_DeleteSprite bug (thanks BassAceGold).&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
* devkitPro wiki - http://devkitpro.org/wiki/PAlib&lt;br /&gt;
* Google Code - http://code.google.com/p/palib-tutorial-pdf&lt;br /&gt;
* NeoFlash - https://www.neoflash.com/forum/index.php?topic=563.0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:PC utilities for DS]]&lt;br /&gt;
[[Category:NEO Coding Compo 2005]]&lt;/div&gt;</summary>
		<author><name>SkyLyrac</name></author>
	</entry>
	<entry>
		<id>https://www.gamebrew.org/index.php?title=%CE%9CLibrary&amp;diff=203507</id>
		<title>ΜLibrary</title>
		<link rel="alternate" type="text/html" href="https://www.gamebrew.org/index.php?title=%CE%9CLibrary&amp;diff=203507"/>
		<updated>2026-01-09T00:06:44Z</updated>

		<summary type="html">&lt;p&gt;SkyLyrac: Update URL of git repository.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox DS Homebrews&lt;br /&gt;
|title=µLibrary&lt;br /&gt;
|image=ulibrary.png&lt;br /&gt;
|description=New library to use the 3D GPU to create nice 2D games very easily.&lt;br /&gt;
|author=Brunni&lt;br /&gt;
|lastupdated=2024/08/05&lt;br /&gt;
|type=Game Engine&lt;br /&gt;
|version=1.13&lt;br /&gt;
|license=Mixed&lt;br /&gt;
|download=https://dlhb.gamebrew.org/dshomebrew2/ulibrary_1.12.rar 1.12&lt;br /&gt;
|website=http://brunni.dev-fr.org/index.php?page=ndssoft_ulib&lt;br /&gt;
|source=https://codeberg.org/blocksds/ulibrary&lt;br /&gt;
}}&lt;br /&gt;
µLibrary is a new library for Nintendo DS. Basically, it is meant to use the 3D GPU to create nice 2D games very easily, using a different approach than existing libraries (similar to OSLib). A few examples are supplied, as well as a Doxygen documentation and a small .chm documentation with a FAQ. There are also 2 templates for VHAM, Programmers Notepad or just make, one with PALib and one without it.&lt;br /&gt;
&lt;br /&gt;
The 3D GPU provides additional effects over the 2D GPU, like full transparency with alpha channel (objects can blend amongst them), a larger number of sprites (up to 1536 instead of 128), no zoom or rotation limit (2x with the 2D GPU), a larger limit for the sprite size (2048x2048 instead of 64x64). It is also possible to draw primitives like lines, rectangles, etc. allowing nice effects like in Yoshi&#039;s island for example.&lt;br /&gt;
&lt;br /&gt;
µLibrary also provides a low level layer and is open to the hardware. You can also mix 2D and 3D in a single project. &lt;br /&gt;
&lt;br /&gt;
It was participated in the NEO Spring Coding Compo 2007 (NDS App).&lt;br /&gt;
&lt;br /&gt;
In 2024, the library was ported to [https://blocksds.skylyrac.net/ BlocksDS] by AntonioND to support modern tools.&lt;br /&gt;
&lt;br /&gt;
==Features==&lt;br /&gt;
* Supported image formats: PNG, GIF, JPG.&lt;br /&gt;
* Special image effects: stretching, tinting (4 corners), mirroring, rotation (with a defined center), selection of an image frame to display (just like on spritesheets).&lt;br /&gt;
* 18-bit render quality instead of 15-bit: provides 8 times more colors.&lt;br /&gt;
* Virtual file system: possible to load files independantly from the actual support (RAM, libFat, GBFS are supported by default, but you can define your own). Allows to create more easily software that are compatible with all existing linkers.&lt;br /&gt;
* Untextured geometry (rectangles, gradients, lines, etc).&lt;br /&gt;
* Basic message box system.&lt;br /&gt;
* VideoGL wrapper for texture and palette loading in VRAM: Able to load and unload things dynamically and more flexible (you can choose which banks you want to use for what, etc).&lt;br /&gt;
* Keypad and touchscreen handler namely with support of stylus speed and double click and support of autorepeated keys (menus for example).&lt;br /&gt;
* Includes 2 splash screens.&lt;br /&gt;
* Low level wrapper to draw primitives.&lt;br /&gt;
* Text system using the same font format as OSLib.&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
&amp;lt;tabber&amp;gt;&lt;br /&gt;
|-|BlocksDS port=&lt;br /&gt;
&lt;br /&gt;
Follow the instructions in [https://codeberg.org/blocksds/ulibrary the repository].&lt;br /&gt;
&lt;br /&gt;
|-|Neoflash compo ver.=&lt;br /&gt;
&lt;br /&gt;
Enter into the Install folder of your distribution. &lt;br /&gt;
&lt;br /&gt;
There is a batch file, named Install.bat, that will copy files. First edit it and verify that the paths are corrects (ROOTPATH=C:\devkitpro\libnds by default, change it to the path where libnds is located). &lt;br /&gt;
&lt;br /&gt;
Once finished, execute it. After a confirmation, it will copy all files to their respective locations so that you can use it.&lt;br /&gt;
&amp;lt;/tabber&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==User guide==&lt;br /&gt;
Library comes with two templates, located in the Templates folder of its install:&lt;br /&gt;
* uLib_without_PALib - This project will begin with µLibrary only.&lt;br /&gt;
* uLib_with_PALib - As its name suggests, this project contains everything to get started on a new project using simultaneously µLibrary and PALib.&lt;br /&gt;
&lt;br /&gt;
The render method is similar to a sheet of paper. You first draw a background, then put some mountains, then some trees, some characters and so on: you draw your objects in the order they should appear on the screen (the first is behind, the last one is over the others).&lt;br /&gt;
&lt;br /&gt;
Some examples are provided by the developer:&lt;br /&gt;
* [http://www.mobile-dev.ch/ulib/tmp/Example01b.rar Example01b.rar]&lt;br /&gt;
* [http://www.mobile-dev.ch/ulib/tmp/Example09.rar Example09.rar]&lt;br /&gt;
&lt;br /&gt;
The doxygen documentation is available [http://www.mobile-dev.ch/ulib/doc/doxygen/index.html here].&lt;br /&gt;
&lt;br /&gt;
==Screenshots==&lt;br /&gt;
https://dlhb.gamebrew.org/dshomebrew/ulibrary2.png&lt;br /&gt;
&lt;br /&gt;
==Changelog==&lt;br /&gt;
&#039;&#039;&#039;Version 1.13 05.08.2024&#039;&#039;&#039;&lt;br /&gt;
* µLibrary has been ported to BlocksDS, allowing programs that use it to be built with modern tools.&lt;br /&gt;
* ulBindTextureToGl() has been removed, as it required access to internal state of libnds, which is no longer exposed.&lt;br /&gt;
* libpng and zlib are no longer included in the repository, they are taken from the toolchain. The code that loads PNG images with libpng has been updated to work with modern libpng.&lt;br /&gt;
* PAlib examples are broken until there is a new version of PAlib that works with BlocksDS.&lt;br /&gt;
* The Doxygen documentation has been fixed and updated.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.12 2009/03/17&#039;&#039;&#039;&lt;br /&gt;
* This release is only to keep working with the newest devkitpro &amp;amp; libnds releases.&lt;br /&gt;
* A lot of things have changed and some important things must have been rewritten.&lt;br /&gt;
* This was the occasion of creating better makefiles, update samples, changing the logo and do other minor changes.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.11 2008/08/23&#039;&#039;&#039;&lt;br /&gt;
* devKitPro has not really changed (thankfully), so no mandatory updates were needed.&lt;br /&gt;
* Fixes a few bugs, namely the palette issues reported by some people.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.10 2007/12/26&#039;&#039;&#039;&lt;br /&gt;
* As usual, works with and requires the latest libnds version; that&#039;s a shame because nothing will run on emulators from now. You can however solve this problem by replacing your copy of basic.arm7 in your libnds folder by mine (you can find it in the tools folder).&lt;br /&gt;
* Added ulMoveScreenView, ulRotateScreenView, ulScaleScreenView and ulResetScreenView to apply special transformations to your screen. You can for example rotate the screen as a whole or only a list of objects without any effort. This will namely allow you to scale and rotate objects like maps and text, which isn&#039;t available by default.&lt;br /&gt;
* Fonts now work better. Now the font2oft tool is in the &#039;tools&#039; folder.&lt;br /&gt;
* Added ulGetColorRed, ulGetColorGreen, ulGetColorBlue to retrieve the component values of a color.&lt;br /&gt;
* Added ulLoadFontFile to directly load a font from a file.&lt;br /&gt;
* PNG files with alpha can now be loaded directly as UL_PF_PAL5_A3 and UL_PF_PAL3_A5. The alpha will be taken in account and set in the resulting image. Note that you will have to enable blending as usual with ulSetAlpha and by setting another polygroup, because if all objects are with the same polygroup, none will blend with any other.&lt;br /&gt;
* Loading unpaletted PNG files to paletted formats reworked. If there isn&#039;t enough colors for the whole image, the nearest is taken. However you should avoid this situation because it&#039;s an extremely simple but weak method for reducing the colors of an image.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.00 bêta 4 2007/07/14&#039;&#039;&#039;&lt;br /&gt;
* Works with, and requires the last libnds version.&lt;br /&gt;
* Added ulDeleteMap function.&lt;br /&gt;
* Using bank B for textures wasn&#039;t working correctly; all my excuses.&lt;br /&gt;
* Some JPG files with a vertical size not multiple of 8 or 16 were loaded incorrectly.&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
* Author&#039;s website - [https://web.archive.org/web/20080507043108/http://brunni.dev-fr.org/index.php?page=ndssoft_ulib http://brunni.dev-fr.org/index.php?page=ndssoft_ulib] (archived)&lt;br /&gt;
* NeoFlash - https://www.neoflash.com/forum/index.php?topic=3954.0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:NEO Spring Coding Compo 2007]]&lt;/div&gt;</summary>
		<author><name>SkyLyrac</name></author>
	</entry>
	<entry>
		<id>https://www.gamebrew.org/index.php?title=Tetris_3DS&amp;diff=203506</id>
		<title>Tetris 3DS</title>
		<link rel="alternate" type="text/html" href="https://www.gamebrew.org/index.php?title=Tetris_3DS&amp;diff=203506"/>
		<updated>2026-01-08T23:53:14Z</updated>

		<summary type="html">&lt;p&gt;SkyLyrac: Update URL of git repository.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox DS Homebrews&lt;br /&gt;
|title=Tetris 3DS&lt;br /&gt;
|image=tetris3dsant.png&lt;br /&gt;
|description=Tetris in 3D.&lt;br /&gt;
|author=AntonioND&lt;br /&gt;
|lastupdated=2025/01/07&lt;br /&gt;
|type=Puzzle&lt;br /&gt;
|version=1.4&lt;br /&gt;
|license=Mixed&lt;br /&gt;
|download=https://github.com/AntonioND/tetris-3ds/releases/download/v1.4/Tetris_3DS_v1.4.zip&lt;br /&gt;
|downloadraw=https://dlhb.gamebrew.org/dshomebrew2/tetris3ds_antonio.rar&lt;br /&gt;
|website=https://codeberg.org/SkyLyrac/tetris-3ds&lt;br /&gt;
|source=https://codeberg.org/SkyLyrac/tetris-3ds&lt;br /&gt;
}}&lt;br /&gt;
This is a 3D tetris game for Nintendo DS and DSi that lets you listen to your own MP3 songs while you play.&lt;br /&gt;
&lt;br /&gt;
This was submitted to the Scenery Beta 2008 (NDS Games, 1st place).&lt;br /&gt;
&lt;br /&gt;
==User guide==&lt;br /&gt;
&lt;br /&gt;
Create folder Tetris_3DS in the root of your SD card. Then, add as many songs as you want with the name Song_XX.mp3. The game iterates over all songs until there is a missing number, which will restart the loop. You can also add a song called Menu.mp3, which will play in a loop while in the main menu.&lt;br /&gt;
&lt;br /&gt;
Since version 1.4 the game can also run in DSi mode, so it can also find the files in the internal SD card of the DSi, not just in a flashcard. If you&#039;re running the game from a regular DS, remember to patch your rom with DLDI (if your loader doesn&#039;t do it automatically).&lt;br /&gt;
&lt;br /&gt;
 SD root&lt;br /&gt;
 |&lt;br /&gt;
 |-Tetris_3DS&lt;br /&gt;
   |&lt;br /&gt;
   |-Tetris_3DS.nds (It can be here or somewhere else!)&lt;br /&gt;
   |-Menu.mp3&lt;br /&gt;
   |-Song_00.mp3&lt;br /&gt;
   |-Song_XX.mp3 (From 01 to 99)&lt;br /&gt;
   |-Tetris3DS_Config.dat (Created automatically by the game.)&lt;br /&gt;
&lt;br /&gt;
The game will create a file called Error_Log.txt if there is a decoding error so that you can check which files are problematic.&lt;br /&gt;
&lt;br /&gt;
There is a JUKEBOX option that allows you to listen to the music without having to play the game.&lt;br /&gt;
&lt;br /&gt;
==Controls==&lt;br /&gt;
&lt;br /&gt;
L+R+Select+Start - Switch off DS in main menu&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Classic mode:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Can be controlled with Stylus or Keypad.&lt;br /&gt;
&lt;br /&gt;
Up/Down - Left/Right&lt;br /&gt;
&lt;br /&gt;
Left - Down speed increased&lt;br /&gt;
&lt;br /&gt;
Right - Automatically go down&lt;br /&gt;
&lt;br /&gt;
A or Double tap - Rotate&lt;br /&gt;
&lt;br /&gt;
X - Reserve&lt;br /&gt;
&lt;br /&gt;
Start - Pause&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Multiplayer:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Select+Start - Enter Versus CPU mode &lt;br /&gt;
&lt;br /&gt;
Start - Pause&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 400px;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!style=&amp;quot;width: 25%;&amp;quot;| Player 1 &lt;br /&gt;
!style=&amp;quot;width: 25%;&amp;quot;| Player 2 &lt;br /&gt;
!style=&amp;quot;width: 50%;&amp;quot;| Effect&lt;br /&gt;
|-&lt;br /&gt;
| Up || X || Reserve.&lt;br /&gt;
|-&lt;br /&gt;
| Left/Right || Y/A || Move.&lt;br /&gt;
|-&lt;br /&gt;
| Down || B || Down speed increased.&lt;br /&gt;
|-&lt;br /&gt;
| L || R || Rotate.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Screenshots==&lt;br /&gt;
https://dlhb.gamebrew.org/dshomebrew/tetris3dsant3.png&lt;br /&gt;
https://dlhb.gamebrew.org/dshomebrew/tetris3dsant4.png&lt;br /&gt;
&lt;br /&gt;
https://dlhb.gamebrew.org/dshomebrew/tetris3dsant2.png&lt;br /&gt;
https://dlhb.gamebrew.org/dshomebrew/tetris3dsant5.png&lt;br /&gt;
&amp;lt;!--BEGIN Online Emulator Section--&amp;gt;&lt;br /&gt;
==Online emulator==&lt;br /&gt;
{{EmulatorJS Main&lt;br /&gt;
|width=515px&lt;br /&gt;
|height=384px&lt;br /&gt;
|EJS_backgroundImage=https://www.gamebrew.org/images/d/d4/Tetris3dsant.png&lt;br /&gt;
|EJS_core=desmume2015&lt;br /&gt;
|EJS_gameName=Tetris 3DS&lt;br /&gt;
|EJS_gameUrl=https://dlhb.gamebrew.org/onlineemulators/nds/tetris3dsant.7z&lt;br /&gt;
}}&lt;br /&gt;
{{DS Control Settings}}&lt;br /&gt;
&amp;lt;!--END Online Emulator Section--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Credits==&lt;br /&gt;
Joat, Dovoto and WinterMute for libnds.&lt;br /&gt;
&lt;br /&gt;
Chishm for libfat.&lt;br /&gt;
&lt;br /&gt;
Mollusk for PAlib.&lt;br /&gt;
&lt;br /&gt;
Noda for ASlib.&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
* Author&#039;s website - https://github.com/AntonioND/tetris-3ds&lt;br /&gt;
* Author&#039;s old website - http://www.skylyrac.net/old-site/nds.html&lt;br /&gt;
* SceneBeta - https://nds.scenebeta.com/noticia/tetris-3ds&lt;br /&gt;
&lt;br /&gt;
[[Category:Scenery Beta 2008]]&lt;/div&gt;</summary>
		<author><name>SkyLyrac</name></author>
	</entry>
	<entry>
		<id>https://www.gamebrew.org/index.php?title=Tales_of_Dagur&amp;diff=203505</id>
		<title>Tales of Dagur</title>
		<link rel="alternate" type="text/html" href="https://www.gamebrew.org/index.php?title=Tales_of_Dagur&amp;diff=203505"/>
		<updated>2026-01-08T22:15:02Z</updated>

		<summary type="html">&lt;p&gt;SkyLyrac: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox DS Homebrews&lt;br /&gt;
|title=Tales of Dagur&lt;br /&gt;
|image=talesofdagur.png&lt;br /&gt;
|description=A complete RPG game on DS.&lt;br /&gt;
|author=LiraNuna&lt;br /&gt;
|lastupdated=2025/03/25&lt;br /&gt;
|type=Role Playing&lt;br /&gt;
|version=2&lt;br /&gt;
|license=Mixed&lt;br /&gt;
|download=https://dlhb.gamebrew.org/dshomebrew2/talesofdagur.7z?k33p0fil35&lt;br /&gt;
|downloadraw=https://github.com/AntonioND/talesofdagur/releases/tag/v20250325&lt;br /&gt;
|website=http://www.talesofdagur.com/main/index.php&lt;br /&gt;
|source=https://codeberg.org/SkyLyrac/talesofdagur&lt;br /&gt;
}}&lt;br /&gt;
Tales of Dagur is a complete RPG homebrew for the NDS.&lt;br /&gt;
&lt;br /&gt;
It was released for the NEO Spring Coding Compo 2006 (NDS Games, 1st place).&lt;br /&gt;
&lt;br /&gt;
In 2024, the game was ported to [https://github.com/blocksds/sdk BlocksDS] by AntonioND to support modern tools, DLDI and DSi.&lt;br /&gt;
&lt;br /&gt;
==User guide==&lt;br /&gt;
The kingdom of Dagur is in deep troubles: The holy stone that protects the kingdom has been stolen! Further more, the queen of Dagur has disappeared. &lt;br /&gt;
&lt;br /&gt;
A young lad named Alex is summoned by the king to fix the situation. Help Alex return the holy stone, find the queen, and by that save the kingdom!&lt;br /&gt;
&lt;br /&gt;
Don&#039;t forget to equip weapons!&lt;br /&gt;
&lt;br /&gt;
==Controls==&lt;br /&gt;
&#039;&#039;&#039;In game:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
D-Pad - Movement&lt;br /&gt;
&lt;br /&gt;
A - Perform Action&lt;br /&gt;
&lt;br /&gt;
B - Dash&lt;br /&gt;
&lt;br /&gt;
Start - In-game menu&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;In battle or shop:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
D-Pad - Scroll through options&lt;br /&gt;
&lt;br /&gt;
A - Select&lt;br /&gt;
&lt;br /&gt;
B - Cancel&lt;br /&gt;
&lt;br /&gt;
==Screenshots==&lt;br /&gt;
https://dlhb.gamebrew.org/dshomebrew/talesofdagur2.png&lt;br /&gt;
https://dlhb.gamebrew.org/dshomebrew/talesofdagur3.png&lt;br /&gt;
&lt;br /&gt;
https://dlhb.gamebrew.org/dshomebrew/talesofdagur4.png&lt;br /&gt;
https://dlhb.gamebrew.org/dshomebrew/talesofdagur5.png&lt;br /&gt;
&amp;lt;!--BEGIN Online Emulator Section--&amp;gt;&lt;br /&gt;
==Online emulator==&lt;br /&gt;
{{EmulatorJS Main&lt;br /&gt;
|width=515px&lt;br /&gt;
|height=384px&lt;br /&gt;
|EJS_backgroundImage=https://www.gamebrew.org/images/e/ea/Talesofdagur.png&lt;br /&gt;
|EJS_core=desmume2015&lt;br /&gt;
|EJS_gameName=Tales of Dagur&lt;br /&gt;
|EJS_gameUrl=https://dlhb.gamebrew.org/onlineemulators/nds/talesofdagur.7z&lt;br /&gt;
}}&lt;br /&gt;
{{DS Control Settings}}&lt;br /&gt;
&amp;lt;!--END Online Emulator Section--&amp;gt;&lt;br /&gt;
==Compatibility==&lt;br /&gt;
Tested on iDeaS.&lt;br /&gt;
&lt;br /&gt;
==Credits==&lt;br /&gt;
Code: LiraNuna.&lt;br /&gt;
&lt;br /&gt;
Moral support and font tileset: Chetic.&lt;br /&gt;
&lt;br /&gt;
Storyboard, Script, &amp;amp; Music collection: RVman.&lt;br /&gt;
&lt;br /&gt;
Graphics: Enterbrain.&lt;br /&gt;
&lt;br /&gt;
Mapping and level design: Nikolas Lahtinen.&lt;br /&gt;
&lt;br /&gt;
Beta-testing: Cameron, Chetic and Nikolas.&lt;br /&gt;
&lt;br /&gt;
Special thanks to Rat for the splash screen.&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
* Official website - [https://web.archive.org/web/20090617202956/http://www.talesofdagur.com/main/index.php http://www.talesofdagur.com/main/index.php] (archived)&lt;br /&gt;
* Author&#039;s website - [https://web.archive.org/web/20100105060038/https://www.liranuna.com/nds-projects/tales-of-dagur https://www.liranuna.com/nds-projects/tales-of-dagur] (archived)&lt;br /&gt;
* NeoFlash - https://www.neoflash.com/forum/index.php?topic=1917.0&lt;br /&gt;
* Port to BlocksDS - https://github.com/AntonioND/talesofdagur&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:NEO Spring Coding Compo 2006]]&lt;/div&gt;</summary>
		<author><name>SkyLyrac</name></author>
	</entry>
	<entry>
		<id>https://www.gamebrew.org/index.php?title=Pong_3DS_-_AntonioND&amp;diff=203504</id>
		<title>Pong 3DS - AntonioND</title>
		<link rel="alternate" type="text/html" href="https://www.gamebrew.org/index.php?title=Pong_3DS_-_AntonioND&amp;diff=203504"/>
		<updated>2026-01-08T22:12:00Z</updated>

		<summary type="html">&lt;p&gt;SkyLyrac: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox 3DS Homebrews&lt;br /&gt;
|title=Pong 3DS&lt;br /&gt;
|image=Pong3dsant2.png&lt;br /&gt;
|description=A pong with stereoscopic 3D.&lt;br /&gt;
|author=AntonioND (Antonio Niño Díaz)&lt;br /&gt;
|lastupdated=2015/02/21&lt;br /&gt;
|type=Arcade Games&lt;br /&gt;
|version=1.0.2&lt;br /&gt;
|license=GPL-3.0&lt;br /&gt;
|download=https://dlhb.gamebrew.org/3dshomebrews/pong3dsant.7z&lt;br /&gt;
|website=http://www.skylyrac.net/category/nintendo-3ds.html&lt;br /&gt;
|source=https://codeberg.org/SkyLyrac/pong-3ds&lt;br /&gt;
}}&lt;br /&gt;
Pong 3DS is a Pong game with stereoscopic 3D. This homebrew game is inspired by [[Pong_3DS|Pong 3DS]] previously written for the Nintendo DS.&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
Available in 3DSX/SMDH format.&lt;br /&gt;
&lt;br /&gt;
Copy the folder containing .3dsx and .smdh into the 3ds folder on your SD card, run it with Homebrew Launcher.&lt;br /&gt;
&lt;br /&gt;
==User guide==&lt;br /&gt;
You can choose among the following game modes in the main menu:&lt;br /&gt;
* 2D Room.&lt;br /&gt;
* 2.5D Room.&lt;br /&gt;
* 3D Room.&lt;br /&gt;
&lt;br /&gt;
When you change the 3D slider&#039;s position, the 3D engine renders each top screen in a separate core when working in 3D mode so that the game will always run at 60 FPS.&lt;br /&gt;
&lt;br /&gt;
Screenshot is saved in PNG format (2 files in 3D mode, 1 in 2D mode).&lt;br /&gt;
&lt;br /&gt;
==Controls==&lt;br /&gt;
Touchscreen - Enter game room (main menu)&lt;br /&gt;
&lt;br /&gt;
Circle Pad/Joystick - Move&lt;br /&gt;
&lt;br /&gt;
A - Jump (in 2.5D room)&lt;br /&gt;
&lt;br /&gt;
Y - Screenshot&lt;br /&gt;
&lt;br /&gt;
X - Pause&lt;br /&gt;
&lt;br /&gt;
Start - Return to menu&lt;br /&gt;
&lt;br /&gt;
Select - Exit to loader&lt;br /&gt;
&lt;br /&gt;
L+R - Show FPS and CPU usage&lt;br /&gt;
&lt;br /&gt;
==Screenshots==&lt;br /&gt;
https://dlhb.gamebrew.org/3dshomebrews/pong3dsant3.png&lt;br /&gt;
https://dlhb.gamebrew.org/3dshomebrews/pong3dsant4.png&lt;br /&gt;
&lt;br /&gt;
https://dlhb.gamebrew.org/3dshomebrews/pong3dsant5.png&lt;br /&gt;
https://dlhb.gamebrew.org/3dshomebrews/pong3dsant6.png&lt;br /&gt;
&lt;br /&gt;
==Media==&lt;br /&gt;
&#039;&#039;&#039;3DS Homebrew: Pong 3DS [Deutsch|HD]&#039;&#039;&#039; ([https://www.youtube.com/watch?v=3aqceyySnuM Flashcardsinfo]) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;youtube&amp;gt;3aqceyySnuM&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Changelog==&lt;br /&gt;
&#039;&#039;&#039;v1.0.2 2015/02/21&#039;&#039;&#039;&lt;br /&gt;
* Release with a few bugfixes.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.0.1 2015/02/18&#039;&#039;&#039;&lt;br /&gt;
* Just a minor update with a few fixes and compiled with devkitARM r44.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.0 2015/02/18&#039;&#039;&#039;&lt;br /&gt;
* First release of Pong 3DS. Binaries for the hbmenu.&lt;br /&gt;
&lt;br /&gt;
==Credits==&lt;br /&gt;
Thanks to:&lt;br /&gt;
* smea for Ninjhax.&lt;br /&gt;
* smea, yellows8, plutoo, fincs and mtheall for ctrulib.&lt;br /&gt;
* smea, mtheall, GEMISIS, Fluto and Arkhandar for hbmenu.&lt;br /&gt;
* WinterMute for devkitARM and 3dslink.&lt;br /&gt;
* mtheall for ftbrony.&lt;br /&gt;
* Andreas Nylin for the font Polygon Power.&lt;br /&gt;
* JuDelCo, NightFox and icesoul for the support during the developement of this game.&lt;br /&gt;
* DrPetter for sfxr.&lt;br /&gt;
* Claudio Matsuoka and Hipolito Carraro Jr for Extended Module Player Lite.&lt;br /&gt;
&lt;br /&gt;
[http://modarchive.org Music]:&lt;br /&gt;
* &#039;Kaos och Dekadens&#039; by Nightbeat.&lt;br /&gt;
* &#039;Essentials Intact&#039; by Nightbeat.&lt;br /&gt;
* &#039;Roots&#039; by Nightbeat.&lt;br /&gt;
* &#039;Secret Message&#039; by Frequent/Ephidrena.&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
* Author&#039;s website - http://www.skylyrac.net&lt;br /&gt;
* Author&#039;s website (former) - http://www.skylyrac.net/old-site&lt;br /&gt;
* GitHub - https://github.com/AntonioND/pong-3ds&lt;br /&gt;
* GBAtemp - https://gbatemp.net/threads/homebrew-pong-3ds-v1-0.381907&lt;/div&gt;</summary>
		<author><name>SkyLyrac</name></author>
	</entry>
	<entry>
		<id>https://www.gamebrew.org/index.php?title=Meteora_Galatic_Battle&amp;diff=203502</id>
		<title>Meteora Galatic Battle</title>
		<link rel="alternate" type="text/html" href="https://www.gamebrew.org/index.php?title=Meteora_Galatic_Battle&amp;diff=203502"/>
		<updated>2026-01-05T23:31:00Z</updated>

		<summary type="html">&lt;p&gt;SkyLyrac: Update URL of git repository.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox DS Homebrews&lt;br /&gt;
|title=Meteora Galactic Battle&lt;br /&gt;
|image=meteora.png&lt;br /&gt;
|description=Meteroa is a space/fantasy based god-sim game by J.&lt;br /&gt;
|author=Jerome Wax (X-Blaster)&lt;br /&gt;
|lastupdated=2007/08/21&lt;br /&gt;
|type=Simulation&lt;br /&gt;
|version=0.9.2&lt;br /&gt;
|license=Mixed&lt;br /&gt;
|download=https://dlhb.gamebrew.org/dshomebrew2/meteora.7z?k33p0fil35 0.8.0 &amp;amp; 0.9.2&lt;br /&gt;
|downloadraw=http://meteora.lo2k.net/download/meteora-src.rar&lt;br /&gt;
|website=http://meteora.lo2k.net&lt;br /&gt;
|source=https://codeberg.org/SkyLyrac/meteora&lt;br /&gt;
}}&lt;br /&gt;
Meteroa is a space fantasy based god-sim game by Jerome Wax that lies somewhere between populous, world of sand and pong. From over 8 months of development, it is a game of strategy action in space.&lt;br /&gt;
&lt;br /&gt;
It was submitted to the NEO Summer Coding Compo 2007 (NDS Game, 3rd place). Verion 0.8.0 Meteora Evolution was presented in the Dev-fr Coding Compo 2007 (Game, 2nd place).&lt;br /&gt;
&lt;br /&gt;
In 2024, the game was ported to [https://github.com/blocksds/sdk BlocksDS] by AntonioND to support modern tools and for better compatibility on DSi mode.&lt;br /&gt;
&lt;br /&gt;
==Feature==&lt;br /&gt;
* An engine containing a garbage collector to avoid memory leaks during development.&lt;br /&gt;
* Use the microphone for certain powers.&lt;br /&gt;
* Use of gestures.&lt;br /&gt;
* Visual effects (explosions, earthquakes, meteor streaks).&lt;br /&gt;
* Use of dual-screen 3D (thanks to the ulib).&lt;br /&gt;
* Sprites more than 1200 on the screen.&lt;br /&gt;
&lt;br /&gt;
==User guide==&lt;br /&gt;
Meteora is an action version of meteos. It is a game where planets attack each other. You control one of the two planets and by sending mana your goal is to get your opponent&#039;s life to zero before you do.&lt;br /&gt;
&lt;br /&gt;
You and your opponent have:&lt;br /&gt;
* Mana (to use your powers).&lt;br /&gt;
* A shield that constantly regenerates.&lt;br /&gt;
* The clean energy of your planet.&lt;br /&gt;
&lt;br /&gt;
Whenever you send an attack up the screen, your opponent will receive it (planets can be several light years apart). Your opponent can deflect your attacks as you might, ie by using his God Powers.&lt;br /&gt;
&lt;br /&gt;
You must therefore send as many attacks as possible towards your opponent while trying to stop the attacks coming from your opponent.&lt;br /&gt;
&lt;br /&gt;
===Mana===&lt;br /&gt;
Your planet has a certain amount of mana you regain all the time. Free the mana to deflect, destroy the enemy attacks.&lt;br /&gt;
&lt;br /&gt;
Your Stylus acts as a magnet to which you belong. The more you&#039;re ready for a ball of mana, the more you attract, the more you are away, your pen is less effective. Keep this principle in mind as you play. To successfully send an attack so do not give a boost with the stylus but with your attack.&lt;br /&gt;
&lt;br /&gt;
===Powers of God===&lt;br /&gt;
You can at any time use your powers of god. However, you should have enough mana and respect the cooldown (cooldown).&lt;br /&gt;
&lt;br /&gt;
Some powers require additional action on your part such as creating glyphs or a certain breath.&lt;br /&gt;
&lt;br /&gt;
The list of powers is quite long, it is suggested to read [http://meteora.lo2k.net/Master/pouvoirs the list of powers] for more information of each of them.&lt;br /&gt;
&lt;br /&gt;
===Attacks===&lt;br /&gt;
* &#039;&#039;&#039;Instant:&#039;&#039;&#039;&lt;br /&gt;
** Send a volley of meteorites towards your opponent (e.g. Multiple Shot). A formidable weapon, the more you use it, the less its cost and reload time will be.&lt;br /&gt;
** You can direct your attacks with your stylus.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Charged:&#039;&#039;&#039;&lt;br /&gt;
** These attacks will load over time (e.g. Frost Flame). 10 to 15 seconds and your mana size is maximum. Leave no respite and send this kind of monster on your opponent.&lt;br /&gt;
** Merge the different types of charged mana together, they will grow even faster. Also remember to bring them back to your planet to grow your mana.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Shrapnel:&#039;&#039;&#039;&lt;br /&gt;
** The shrapnel attack explodes at the slightest shock with an attack from your opponent. Indispensable to decimate an enemy attack or to create an effective defense.&lt;br /&gt;
** Merge there with a charged attack to make it even more effective. If you manage to merge several shrapnel between them ... your attack can become ultimate.&lt;br /&gt;
&lt;br /&gt;
===Defenses===&lt;br /&gt;
* &#039;&#039;&#039;God&#039;s wind:&#039;&#039;&#039;&lt;br /&gt;
** The Wind of God can repel enemy attacks or send your own attacks more effectively. When you activate it, you have a limited time of use (icons available in the upper right corner of the bottom screen). If you blow on the Nintendo DS while the icon is visible, your breath will be transmitted in the game and it will allow many things to happen.&lt;br /&gt;
** Be careful not to hyperventilate. The more you use it, the longer its reload time...&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Change of sides:&#039;&#039;&#039;&lt;br /&gt;
** When you activate this spell, you will need to perform a glyph in a limited time. &lt;br /&gt;
** To do this, you have to touch the yellow symbols before they disappear. It is also necessary to make sure that nothing touches a symbol during the invocation of this spell. If you can do it right, whatever is on the screen will be yours. If you perform it during an enemy attack, that attack will be in your possession. You are free to return it to your opponent or to attract it to your planet in order to benefit from a mana bonus.&lt;br /&gt;
** If you have a hard time at first, use it in conjunction with god&#039;s wind, so that the bottom part of the screen is blank while the glyph is running.&lt;br /&gt;
&lt;br /&gt;
===Power ups===&lt;br /&gt;
* &#039;&#039;&#039;Mana increase:&#039;&#039;&#039;&lt;br /&gt;
** You can increase the maximum mana rate and the speed of your mana gain. Don&#039;t overlook this kind of power, they can actually play a big part in the game. Be careful though, the more you use them, the more they cost.&lt;br /&gt;
&lt;br /&gt;
==Controls==&lt;br /&gt;
Up/Down - Release mana&lt;br /&gt;
&lt;br /&gt;
Stylus - Attract mana&lt;br /&gt;
&lt;br /&gt;
L/R - Use God Powers&lt;br /&gt;
&lt;br /&gt;
==Screenshots==&lt;br /&gt;
https://dlhb.gamebrew.org/dshomebrew/meteora2.png&lt;br /&gt;
https://dlhb.gamebrew.org/dshomebrew/meteora4.png&lt;br /&gt;
&lt;br /&gt;
https://dlhb.gamebrew.org/dshomebrew/meteora3.png&lt;br /&gt;
https://dlhb.gamebrew.org/dshomebrew/meteora5.png&lt;br /&gt;
&amp;lt;!--BEGIN Online Emulator Section--&amp;gt;&lt;br /&gt;
==Online emulator==&lt;br /&gt;
{{EmulatorJS Main&lt;br /&gt;
|width=515px&lt;br /&gt;
|height=384px&lt;br /&gt;
|EJS_backgroundImage=https://www.gamebrew.org/images/c/c8/Meteora.png&lt;br /&gt;
|EJS_core=nds&lt;br /&gt;
|EJS_gameName=Meteora Galactic Battle&lt;br /&gt;
|EJS_gameUrl=https://dlhb.gamebrew.org/onlineemulators/nds/meteora.7z&lt;br /&gt;
}}&lt;br /&gt;
{{DS Control Settings}}&lt;br /&gt;
&amp;lt;!--END Online Emulator Section--&amp;gt;&lt;br /&gt;
==Credits==&lt;br /&gt;
Brunni, Mollusk, Reppa, Benoit Charcosset, Audrey.&lt;br /&gt;
&lt;br /&gt;
Everyone in dev-fr.&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
* Official website - [https://web.archive.org/web/20140615140612/http://meteora.lo2k.net http://meteora.lo2k.net] (archived)&lt;br /&gt;
* NeoFlash - [https://web.archive.org/web/20210208003002/https://www.neoflash.com/forum/index.php?topic=4569.0 https://www.neoflash.com/forum/index.php?topic=4569.0] (archived)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:NEO Summer Coding Compo 2007]]&lt;br /&gt;
[[Category:Dev-fr Coding Compo 2007]]&lt;/div&gt;</summary>
		<author><name>SkyLyrac</name></author>
	</entry>
	<entry>
		<id>https://www.gamebrew.org/index.php?title=Volumetric_Shadow_Demo&amp;diff=203488</id>
		<title>Volumetric Shadow Demo</title>
		<link rel="alternate" type="text/html" href="https://www.gamebrew.org/index.php?title=Volumetric_Shadow_Demo&amp;diff=203488"/>
		<updated>2026-01-04T12:23:55Z</updated>

		<summary type="html">&lt;p&gt;SkyLyrac: Update link to repository.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox DS Homebrews&lt;br /&gt;
|title=Volumetric Shadow Demo&lt;br /&gt;
|image=vsd.png&lt;br /&gt;
|description=NDS Tech Demo, formerly know as the Stencil Shadow Demo.&lt;br /&gt;
|author=Rob (silent_code, R.H.L.)&lt;br /&gt;
|lastupdated=2024/08/08&lt;br /&gt;
|type=Demos&lt;br /&gt;
|version=1.7.2&lt;br /&gt;
|license=Mixed&lt;br /&gt;
|downloadraw=[https://dlhb.gamebrew.org/dshomebrew2/vsd.7z 1.6.0] - [https://github.com/AntonioND/volumetric_shadow_demo/releases 1.7.2]&lt;br /&gt;
|website=http://www.robs-basement.de/#RB_NDS_VSD&lt;br /&gt;
|source=https://codeberg.org/SkyLyrac/volumetric_shadow_demo&lt;br /&gt;
}}&lt;br /&gt;
Volumetric Shadow Demo is a NDS tech demo program formerly know as the Stencil Shadow Demo, and later Volume Shadow Demo. This small open source program demonstrates, among other things, some of the NDS&#039; graphics hardware capabilities.&lt;br /&gt;
&lt;br /&gt;
In 2024, the demo was ported to [https://github.com/blocksds/sdk BlocksDS] by AntonioND to support modern tools.&lt;br /&gt;
&lt;br /&gt;
==Features==&lt;br /&gt;
* Hardware accelerated volumetric shadowing.&lt;br /&gt;
* Motion blur with video capture, using only one VRAM bank, at 60 FPS.&lt;br /&gt;
* Hardware lighting, texturing, fogging, antialiasing etc.&lt;br /&gt;
* Display brightness control.&lt;br /&gt;
* Viewport scissoring (thanks to gabebear off the gbadev.org forum).&lt;br /&gt;
* Loading binary and text files from disk (through libfat).&lt;br /&gt;
* Converting .tga 24/32bit image data to 16bit nds textures.&lt;br /&gt;
* Displaying a custom font and a text area over a background image, all loaded from disk.&lt;br /&gt;
* Smooth touch input.&lt;br /&gt;
* Simple frame rate counting and some other rendering status info.&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
&amp;lt;tabber&amp;gt;&lt;br /&gt;
|-|BlocksDS port=&lt;br /&gt;
&lt;br /&gt;
Copy the .nds file to your storage device.&lt;br /&gt;
&lt;br /&gt;
|-|Neoflash compo ver.=&lt;br /&gt;
&lt;br /&gt;
Copy the .nds file to the root of your card. &lt;br /&gt;
&lt;br /&gt;
You will see all (data) files are located in the vsd_data directory.&lt;br /&gt;
&lt;br /&gt;
Copy them into the /data/ folder on the root of your card. Or alternatively, directly into the root.&lt;br /&gt;
&lt;br /&gt;
Create the data directory, if not already present on your card.&lt;br /&gt;
&amp;lt;/tabber&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Files that need to be copied:&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
vsd_###.nds (or vsd_###_fcsr.nds, in which case nothing else is needed) &amp;lt;br&amp;gt;&lt;br /&gt;
doll.char &amp;lt;br&amp;gt;&lt;br /&gt;
room.char &amp;lt;br&amp;gt;&lt;br /&gt;
shadow.char &amp;lt;br&amp;gt;&lt;br /&gt;
font.pbi &amp;lt;br&amp;gt;&lt;br /&gt;
splash.pbi &amp;lt;br&amp;gt;&lt;br /&gt;
loading.pbi &amp;lt;br&amp;gt;&lt;br /&gt;
doll256.tga &amp;lt;br&amp;gt;&lt;br /&gt;
test.tga &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Depending on your device, you may have to manually patch the .nds file to make it work with [[DLDI|DLDI]]. Your card&#039;s manufacturer can help you with how to accomplish that.&lt;br /&gt;
&lt;br /&gt;
==User guide==&lt;br /&gt;
===Initialization===&lt;br /&gt;
Prepare the hardware by setting the flush mode to manual and w-depth sorting with:&lt;br /&gt;
 glFlush(GL_TRANS_MANUALSORT | GL_WBUFFERING);&lt;br /&gt;
&lt;br /&gt;
Do so in the frame before the frame you will draw the shadows. Usually, you would set this up when initializing the application and flush each frame with those settings.&lt;br /&gt;
&lt;br /&gt;
You might need to sort your translutient polygons/meshes. Remember, that certain volumetric shadow geometry configurations will cause artifacts.&lt;br /&gt;
&lt;br /&gt;
===Render volumetric shadows===&lt;br /&gt;
These are the three basic steps you need to follow to render volumetric shadows.&lt;br /&gt;
&lt;br /&gt;
1) Render all the shadow casting and receiving geometry as usually.&lt;br /&gt;
&lt;br /&gt;
2) For every shadow geometry, draw the Stencil Mask. Shadow polygons must be translutient, so enable blending and render the shadow geometry&#039;s front using the following settings:&lt;br /&gt;
 glPolyFmt(POLY_ALPHA(1) | POLY_CULL_FRONT | POLY_ID(0) | POLY_SHADOW);&lt;br /&gt;
&lt;br /&gt;
Alpha must be between 1 and 30 and ID also must be 0.&lt;br /&gt;
 &lt;br /&gt;
3) The Stencil Shadow: Now, finally draw the shadow geometry&#039;s back with these settings:&lt;br /&gt;
 glPolyFmt(POLY_ALPHA(20) | POLY_CULL_BACK | POLY_ID(63) | POLY_SHADOW);&lt;br /&gt;
&lt;br /&gt;
Again, alpha needs to be between 1 and 30, but this time ID must not be 0. &lt;br /&gt;
&lt;br /&gt;
Now you should have a volume shadow on screen. Repeat steps two and three for all other shadow geometry.&lt;br /&gt;
&lt;br /&gt;
Tutorials can be found at [http://www.code-basement.net/files/nds/vsd/volumetric-shadows-nds.tutorial.txt the official website].&lt;br /&gt;
&lt;br /&gt;
==Controls==&lt;br /&gt;
&#039;&#039;&#039;During demo:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Touch (Stylus) - Look&lt;br /&gt;
&lt;br /&gt;
D-Pad - Move the camera (forward/backward)&lt;br /&gt;
&lt;br /&gt;
A/B/X/Y - Move the character&lt;br /&gt;
&lt;br /&gt;
Start - Reset scene&lt;br /&gt;
&lt;br /&gt;
Select+A - toggle shadowing&lt;br /&gt;
&lt;br /&gt;
Select+B - toggle texturing&lt;br /&gt;
&lt;br /&gt;
Select+X - toggle lighting&lt;br /&gt;
&lt;br /&gt;
Select+Y - toggle capturing (motion blur)&lt;br /&gt;
&lt;br /&gt;
R+D-Pad - Move a scissor box&lt;br /&gt;
&lt;br /&gt;
L+D-Pad - Move the camera (up/down)&lt;br /&gt;
&lt;br /&gt;
R+L+Up/Down - Change the brightness&lt;br /&gt;
&lt;br /&gt;
R+L+Start - Reset the scene and the brightness&lt;br /&gt;
&lt;br /&gt;
==Screenshots==&lt;br /&gt;
https://dlhb.gamebrew.org/dshomebrew/vsd2.png&lt;br /&gt;
https://dlhb.gamebrew.org/dshomebrew/vsd3.png&lt;br /&gt;
&lt;br /&gt;
==Compatibility==&lt;br /&gt;
&#039;&#039;&#039;Emulators:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
When using [http://dev-scene.com/NDS/FCSR_Tutorial FCSR], it is mostly compatible with no$gba 2.6 (the emulator is still missing some features). Other emulators are not supported.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hardware:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Compatible with DLDI-able FAT cards, tested with SLOT1 M3 Real via the firmware&#039;s autopatching. Through [http://dev-scene.com/NDS/FCSR_Tutorial FCSR], it is also compatible with older SLOT2 (GBA) NOR cartridges, tested with NeoFlash 512Mb.&lt;br /&gt;
&lt;br /&gt;
==Changelog==&lt;br /&gt;
&#039;&#039;&#039;Revision 7.1&#039;&#039;&#039;&lt;br /&gt;
* Update format of documentation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Revision 7.0&#039;&#039;&#039;&lt;br /&gt;
* Migrated to BlocksDS.&lt;br /&gt;
* Switched to using NitroFS instead of libfat.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Revision 6.0&#039;&#039;&#039;&lt;br /&gt;
* Fixed the tutorial (thanks to zeruda at gabdev).&lt;br /&gt;
* Fixed a typo in the readme (thanks to jello!) and updated it.&lt;br /&gt;
* Cleaned up console initialization and proper use of libnds&#039; definitions.&lt;br /&gt;
* Fixed material/lighting bug.&lt;br /&gt;
* Added and fixed come source comments.&lt;br /&gt;
* Fixed initialization function.&lt;br /&gt;
* Fixed the view class and its usage.&lt;br /&gt;
* Replaced the floating point gluPerspective() whith its fixed point counterpart.&lt;br /&gt;
* Reworked some parts of the mesh rendering.&lt;br /&gt;
* Removed last bits of &amp;quot;useless stuff.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Revision 5.1&#039;&#039;&#039;&lt;br /&gt;
* Refactored and fixed the scissor class.&lt;br /&gt;
* Fixed fopen() usage.&lt;br /&gt;
* Reduced file path to 31 (+ \0) characters and renamed some files.&lt;br /&gt;
* Cleaned up glEnable() usage.&lt;br /&gt;
* Added vertex and primitive list RAM usage display.&lt;br /&gt;
* Added free render buffer lines display.&lt;br /&gt;
* Readme has been fixed and updated.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Revision 5.0&#039;&#039;&#039;&lt;br /&gt;
* Renamed to &amp;quot;Volumetric Shadow Demo&amp;quot;.&lt;br /&gt;
* Fixed input bug: textures could not be toggled.&lt;br /&gt;
* Fixed: Single &amp;quot;include all&amp;quot; header style was remedied with only including and declaring what is needed in each compilation unit.&lt;br /&gt;
* Restructured some source files.&lt;br /&gt;
* Removed ARM7 source file and rearranged the project to ARM9 only (Using the default ARM7 binary).&lt;br /&gt;
* Changed to unmodified default Makefile.&lt;br /&gt;
* Changed the source usage &amp;quot;policy&amp;quot; a little bit.&lt;br /&gt;
* Separated the tutorial from the readme.&lt;br /&gt;
* Readme has been updated accordingly.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Revision 4.0&#039;&#039;&#039;&lt;br /&gt;
* Did quite some source clean-up, rewriting and rearranging.&lt;br /&gt;
* Added view and scissor box classes.&lt;br /&gt;
* Added data directory support.&lt;br /&gt;
* Added better error detection and handling.&lt;br /&gt;
* Changed fog table generation.&lt;br /&gt;
* Refactored a lot of variables and functions.&lt;br /&gt;
* Added some more comments.&lt;br /&gt;
* Fixed some typos in the readme and updated it.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Revision 3.0&#039;&#039;&#039;&lt;br /&gt;
* Changed file system to libfat.&lt;br /&gt;
* Added frame rate counter.&lt;br /&gt;
* Added touch input smoothing (still need to fix the slight drifting).&lt;br /&gt;
* Fixed the fog color.&lt;br /&gt;
* Rearranged and cleaned up the sources.&lt;br /&gt;
* Updated and fixed the readme.&lt;br /&gt;
* Cleaned up and fixed the tutorial.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Revision 2.0&#039;&#039;&#039;&lt;br /&gt;
* Moved to devkitARM R23b.&lt;br /&gt;
* Updated to libnds 20071023.&lt;br /&gt;
* Fixed the readme.&lt;br /&gt;
* Slightly changed the .pbi format - old data and routines are incompatible.&lt;br /&gt;
* Fixed &amp;quot;odd&amp;quot; loading routines.&lt;br /&gt;
* Fixed some minor bugs.&lt;br /&gt;
* Cleaned up the sources a little bit.&lt;br /&gt;
* Added some info about the .tga format in &amp;quot;tgaloader.cpp&amp;quot;.&lt;br /&gt;
* Added an overview of controls to the bottom screen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Revision 1.2&#039;&#039;&#039;&lt;br /&gt;
* Fixed and rearranged some things in the readme.&lt;br /&gt;
* Changed the term &amp;quot;shadow volumes&amp;quot; to the more precise term &amp;quot;volume shadows&amp;quot; in the readme.&lt;br /&gt;
* Added a tutorial section.&lt;br /&gt;
* Updated to libnds 20070503.&lt;br /&gt;
* Added hardware fog.&lt;br /&gt;
* Added capture support and a slight motion blur effect.&lt;br /&gt;
* Added some new controls.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Revision 1.1&#039;&#039;&#039;&lt;br /&gt;
* Fixed and rearranged some things in the readme.&lt;br /&gt;
* Updated to libnds 2007050.&lt;br /&gt;
* Removed my FIX versions of previously &#039;broken&#039; libnds funktions.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Revision 1.0&#039;&#039;&#039;&lt;br /&gt;
* Fixed and added things to the readme: additional thanks, change log, controls etc.&lt;br /&gt;
* Replaced the shadow volume with a better suited (and simpler) one.&lt;br /&gt;
* Fixed the controls.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.0.0&#039;&#039;&#039;&lt;br /&gt;
* Initial release.&lt;br /&gt;
&lt;br /&gt;
==Credits==&lt;br /&gt;
It was built with devkitARM R23b, libnds 20071023 and libfat 20070127 from the libnds &amp;quot;touch_look&amp;quot; example (as a project kick-start), so credit and thanks go out to their respective authors.&lt;br /&gt;
&lt;br /&gt;
Credit also goes to gabebear for the scissor pick matrix implementation.&lt;br /&gt;
&lt;br /&gt;
Very special thanks go out to Larry E. and Brandon M. for helping with the hardware.&lt;br /&gt;
&lt;br /&gt;
Special thanks to tepples, simonjhall and Alphanoob.&lt;br /&gt;
&lt;br /&gt;
Also, greetings to everybody at the gbadev.org forums.&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
* Author&#039;s website - http://www.robs-basement.de/#RB_NDS_VSD&lt;/div&gt;</summary>
		<author><name>SkyLyrac</name></author>
	</entry>
	<entry>
		<id>https://www.gamebrew.org/index.php?title=Bunjalloo&amp;diff=202470</id>
		<title>Bunjalloo</title>
		<link rel="alternate" type="text/html" href="https://www.gamebrew.org/index.php?title=Bunjalloo&amp;diff=202470"/>
		<updated>2025-11-02T02:54:40Z</updated>

		<summary type="html">&lt;p&gt;SkyLyrac: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox DS Homebrews&lt;br /&gt;
|title=Bunjalloo&lt;br /&gt;
|image=Snapshot 2025-11-02 02-42-36.png&lt;br /&gt;
|description=Simple web browser for the Nintendo DS.&lt;br /&gt;
|author=quirkysoft, AntonioND&lt;br /&gt;
|lastupdated=2025/11/02&lt;br /&gt;
|type=Utilities&lt;br /&gt;
|version=0.10.0&lt;br /&gt;
|license=Mixed&lt;br /&gt;
|download=https://github.com/AntonioND/bunjalloo/releases/download/v0.10.0/bunjalloo_v0.10.0.zip&lt;br /&gt;
|website=https://github.com/AntonioND/bunjalloo&lt;br /&gt;
|source=https://github.com/AntonioND/bunjalloo&lt;br /&gt;
}}&lt;br /&gt;
This is Bunjalloo, the open source Nintendo DS web browser. It was originally developed by Richard Quirk until 2010. This repository contains a working fork that you can build with modern BlocksDS.&lt;br /&gt;
&lt;br /&gt;
Bunjalloo has been implemented from scratch [http://www.whatwg.org/ using the whatwg user agent design rules].&lt;br /&gt;
&lt;br /&gt;
This version can take advantage of the additional RAM, CPU power, and WPA2 support of DSi. It also uses modern cryptographic libraries to support modern TLS protocols.&lt;br /&gt;
&lt;br /&gt;
==Features==&lt;br /&gt;
* Bookmark support.&lt;br /&gt;
* Cookie and image support.&lt;br /&gt;
* Optional CA certificate checks.&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
Extract the data folder and contents to the root of your SD card.&lt;br /&gt;
&lt;br /&gt;
Extract the .nds file to the root of your SD Card.&lt;br /&gt;
&lt;br /&gt;
[[DLDI|DLDI]] patch the .nds file if your card needs it.&lt;br /&gt;
&lt;br /&gt;
==Controls==&lt;br /&gt;
* Start: Enter a URL&lt;br /&gt;
* Up/Down: Scroll screen up and down&lt;br /&gt;
* Left/Right: Scroll screen a page at a time&lt;br /&gt;
* R: Move forwards in the history&lt;br /&gt;
* L: Move backwards in the history&lt;br /&gt;
* Click stylus: Follow link, enter data in forms, press keys.&lt;br /&gt;
* Hold stylus: Scroll.&lt;br /&gt;
&lt;br /&gt;
==Changelog==&lt;br /&gt;
&#039;&#039;&#039;Version 0.10.0&#039;&#039;&#039;&lt;br /&gt;
* Fixed SSL connections. Entropy is now gathered correctly and the main thread yields every now and then to let the SSL handshake finish.&lt;br /&gt;
* Support checking CA certificates when using SSL. This uses a lot of RAM and it&#039;s a bit slow so it&#039;s disabled by default, and there&#039;s a new option in the settings menu to enable it or disable it. Also, users can provide their own sets of CA certificates.&lt;br /&gt;
* Fixed the type of position markers when searching strings. It was only valid in 32-bit platforms like the DS, so some code wasn&#039;t working on the SDL port. This prevented the configuration settings page from showing up.&lt;br /&gt;
* The DS version now expects the &amp;quot;data/bunjalloo&amp;quot; folder to be in the root of the SD, not in the same folder as the NDS ROM.&lt;br /&gt;
* The home page has been updated. The page with the licenses used by components of Bunjalloo has been split into multiple pages. Also, the licenses of BlocksDS libraries are now included as well.&lt;br /&gt;
* Support BMP and APNG formats.&lt;br /&gt;
* Fix scale down calculations for very big images. Sometimes they were left too big in one dimension.&lt;br /&gt;
* Display transparent pixels as white instead of black.&lt;br /&gt;
* A bad debug check has been removed. This prevented some elements from loading, like some (but not all) images.&lt;br /&gt;
* Improved handling of errors when receiving packets.&lt;br /&gt;
* Restore code that parses dates.&lt;br /&gt;
* Fix timeout counter so that it uses seconds instead of retry attempts.&lt;br /&gt;
* Zlib has been updated to version 1.3.1.&lt;br /&gt;
* Some unused features of Mbed TLS have been disabled to reduce code size.&lt;br /&gt;
* The code is now built with &amp;quot;-Os&amp;quot; to save RAM.&lt;br /&gt;
* Flush data cache before doing a DMA copy.&lt;br /&gt;
* Removed some superfluous waits for VBL.&lt;br /&gt;
* Fixed some warnings, silenced some of them.&lt;br /&gt;
* Some internal code cleanup.&lt;br /&gt;
* Updated instructions in readme.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 0.9.0&#039;&#039;&#039;&lt;br /&gt;
* Migrated to BlocksDS from devkitARM. Now Bunjalloo can take advantage of the Wifi driver in DSi mode, with WPA2 support and the additional RAM of DSi.&lt;br /&gt;
* The old versions of libpng, libjpeg and giflib have been replaced by libplum.&lt;br /&gt;
* MatrixSsl isn&#039;t currently maintained and it has been replaced by Mbed TLS. Switching between HTTP and HTTPS is still a bit unreliable.&lt;br /&gt;
* The PC port has been fixed. It builds, some infinite loops have been fixed, and images are now displayed correctly.&lt;br /&gt;
* Test can&#039;t be built at the moment, they will be re-enabled in the future.&lt;br /&gt;
* Initialize keyboard state correctly so that the extra symbols aren&#039;t displayed after the first key press.&lt;br /&gt;
* Modify cache CRC32 calculation to include the protocol, not just the rest of the address. This lets us retry a website with http and then https if it fails, for example. Previously it would just reload the cached error page.&lt;br /&gt;
* Added missing copyright notices to the &amp;quot;show copying&amp;quot; page.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 0.8&#039;&#039;&#039;&lt;br /&gt;
* Updated to the latest devkitARM, libnds, libfat and libpng.&lt;br /&gt;
* Fix the updater that was broken in 0.7.7.&lt;br /&gt;
* Fix some layout randomness (on e.g config screen).&lt;br /&gt;
* Change the progress bar to be textless.&lt;br /&gt;
* Fix for occasional giant whitespaces.&lt;br /&gt;
* Use last-modified in cache calculations.&lt;br /&gt;
* Fix flashing when swapping from browser to keyboard.&lt;br /&gt;
* Show on-screen password fields with circles.&lt;br /&gt;
* Change the password field to use circles.&lt;br /&gt;
* Speed up scrolling.&lt;br /&gt;
* Performance improvements.&lt;br /&gt;
* Change to Okiwi font generation and rendering.&lt;br /&gt;
* Fix some major memory leaks.&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
* GitHub (new) - https://github.com/AntonioND/bunjalloo&lt;br /&gt;
* Google Code (old archive) - http://code.google.com/p/quirkysoft&lt;/div&gt;</summary>
		<author><name>SkyLyrac</name></author>
	</entry>
	<entry>
		<id>https://www.gamebrew.org/index.php?title=Bunjalloo&amp;diff=202469</id>
		<title>Bunjalloo</title>
		<link rel="alternate" type="text/html" href="https://www.gamebrew.org/index.php?title=Bunjalloo&amp;diff=202469"/>
		<updated>2025-11-02T02:44:13Z</updated>

		<summary type="html">&lt;p&gt;SkyLyrac: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox DS Homebrews&lt;br /&gt;
|title=Bunjalloo&lt;br /&gt;
|image=Snapshot 2025-11-02 02-42-36.png&lt;br /&gt;
|description=Simple web browser for the Nintendo DS.&lt;br /&gt;
|author=quirkysoft, AntonioND&lt;br /&gt;
|lastupdated=2025/11/02&lt;br /&gt;
|type=Utilities&lt;br /&gt;
|version=0.10.0&lt;br /&gt;
|license=Mixed&lt;br /&gt;
|download=https://github.com/AntonioND/bunjalloo/releases/download/v0.10.0/bunjalloo_v0.10.0.zip&lt;br /&gt;
|website=https://github.com/AntonioND/bunjalloo&lt;br /&gt;
|source=https://github.com/AntonioND/bunjalloo&lt;br /&gt;
}}&lt;br /&gt;
This is Bunjalloo, the open source Nintendo DS web browser. It was originally developed by Richard Quirk until 2010. This repository contains a working fork that you can build with modern BlocksDS.&lt;br /&gt;
&lt;br /&gt;
Bunjalloo has been implemented from scratch [http://www.whatwg.org/ using the whatwg user agent designrules].&lt;br /&gt;
&lt;br /&gt;
This version can take advantage of the additional RAM, CPU power, and WPA2 support of DSi. It also uses modern cryptographic libraries to support modern TLS protocols.&lt;br /&gt;
&lt;br /&gt;
==Features==&lt;br /&gt;
* Bookmark support.&lt;br /&gt;
* Cookie and image support.&lt;br /&gt;
* Optional CA certificate checks.&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
Extract the data folder and contents to the root of your SD card.&lt;br /&gt;
&lt;br /&gt;
Extract the .nds file to the root of your SD Card.&lt;br /&gt;
&lt;br /&gt;
[[DLDI|DLDI]] patch the .nds file if your card needs it.&lt;br /&gt;
&lt;br /&gt;
==Controls==&lt;br /&gt;
* Start: Enter a URL&lt;br /&gt;
* Up/Down: Scroll screen up and down&lt;br /&gt;
* Left/Right: Scroll screen a page at a time&lt;br /&gt;
* R: Move forwards in the history&lt;br /&gt;
* L: Move backwards in the history&lt;br /&gt;
* Click stylus: Follow link, enter data in forms, press keys.&lt;br /&gt;
* Hold stylus: Scroll.&lt;br /&gt;
&lt;br /&gt;
==Changelog==&lt;br /&gt;
&#039;&#039;&#039;Version 0.10.0&#039;&#039;&#039;&lt;br /&gt;
* Fixed SSL connections. Entropy is now gathered correctly and the main thread yields every now and then to let the SSL handshake finish.&lt;br /&gt;
* Support checking CA certificates when using SSL. This uses a lot of RAM and it&#039;s a bit slow so it&#039;s disabled by default, and there&#039;s a new option in the settings menu to enable it or disable it. Also, users can provide their own sets of CA certificates.&lt;br /&gt;
* Fixed the type of position markers when searching strings. It was only valid in 32-bit platforms like the DS, so some code wasn&#039;t working on the SDL port. This prevented the configuration settings page from showing up.&lt;br /&gt;
* The DS version now expects the &amp;quot;data/bunjalloo&amp;quot; folder to be in the root of the SD, not in the same folder as the NDS ROM.&lt;br /&gt;
* The home page has been updated. The page with the licenses used by components of Bunjalloo has been split into multiple pages. Also, the licenses of BlocksDS libraries are now included as well.&lt;br /&gt;
* Support BMP and APNG formats.&lt;br /&gt;
* Fix scale down calculations for very big images. Sometimes they were left too big in one dimension.&lt;br /&gt;
* Display transparent pixels as white instead of black.&lt;br /&gt;
* A bad debug check has been removed. This prevented some elements from loading, like some (but not all) images.&lt;br /&gt;
* Improved handling of errors when receiving packets.&lt;br /&gt;
* Restore code that parses dates.&lt;br /&gt;
* Fix timeout counter so that it uses seconds instead of retry attempts.&lt;br /&gt;
* Zlib has been updated to version 1.3.1.&lt;br /&gt;
* Some unused features of Mbed TLS have been disabled to reduce code size.&lt;br /&gt;
* The code is now built with &amp;quot;-Os&amp;quot; to save RAM.&lt;br /&gt;
* Flush data cache before doing a DMA copy.&lt;br /&gt;
* Removed some superfluous waits for VBL.&lt;br /&gt;
* Fixed some warnings, silenced some of them.&lt;br /&gt;
* Some internal code cleanup.&lt;br /&gt;
* Updated instructions in readme.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 0.9.0&#039;&#039;&#039;&lt;br /&gt;
* Migrated to BlocksDS from devkitARM. Now Bunjalloo can take advantage of the Wifi driver in DSi mode, with WPA2 support and the additional RAM of DSi.&lt;br /&gt;
* The old versions of libpng, libjpeg and giflib have been replaced by libplum.&lt;br /&gt;
* MatrixSsl isn&#039;t currently maintained and it has been replaced by Mbed TLS. Switching between HTTP and HTTPS is still a bit unreliable.&lt;br /&gt;
* The PC port has been fixed. It builds, some infinite loops have been fixed, and images are now displayed correctly.&lt;br /&gt;
* Test can&#039;t be built at the moment, they will be re-enabled in the future.&lt;br /&gt;
* Initialize keyboard state correctly so that the extra symbols aren&#039;t displayed after the first key press.&lt;br /&gt;
* Modify cache CRC32 calculation to include the protocol, not just the rest of the address. This lets us retry a website with http and then https if it fails, for example. Previously it would just reload the cached error page.&lt;br /&gt;
* Added missing copyright notices to the &amp;quot;show copying&amp;quot; page.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 0.8&#039;&#039;&#039;&lt;br /&gt;
* Updated to the latest devkitARM, libnds, libfat and libpng.&lt;br /&gt;
* Fix the updater that was broken in 0.7.7.&lt;br /&gt;
* Fix some layout randomness (on e.g config screen).&lt;br /&gt;
* Change the progress bar to be textless.&lt;br /&gt;
* Fix for occasional giant whitespaces.&lt;br /&gt;
* Use last-modified in cache calculations.&lt;br /&gt;
* Fix flashing when swapping from browser to keyboard.&lt;br /&gt;
* Show on-screen password fields with circles.&lt;br /&gt;
* Change the password field to use circles.&lt;br /&gt;
* Speed up scrolling.&lt;br /&gt;
* Performance improvements.&lt;br /&gt;
* Change to Okiwi font generation and rendering.&lt;br /&gt;
* Fix some major memory leaks.&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
* GitHub (new) - https://github.com/AntonioND/bunjalloo&lt;br /&gt;
* Google Code (old archive) - http://code.google.com/p/quirkysoft&lt;/div&gt;</summary>
		<author><name>SkyLyrac</name></author>
	</entry>
	<entry>
		<id>https://www.gamebrew.org/index.php?title=File:Snapshot_2025-11-02_02-42-36.png&amp;diff=202468</id>
		<title>File:Snapshot 2025-11-02 02-42-36.png</title>
		<link rel="alternate" type="text/html" href="https://www.gamebrew.org/index.php?title=File:Snapshot_2025-11-02_02-42-36.png&amp;diff=202468"/>
		<updated>2025-11-02T02:44:04Z</updated>

		<summary type="html">&lt;p&gt;SkyLyrac: Screenshot of Bunjalloo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Screenshot of Bunjalloo&lt;/div&gt;</summary>
		<author><name>SkyLyrac</name></author>
	</entry>
	<entry>
		<id>https://www.gamebrew.org/index.php?title=Bunjalloo&amp;diff=202467</id>
		<title>Bunjalloo</title>
		<link rel="alternate" type="text/html" href="https://www.gamebrew.org/index.php?title=Bunjalloo&amp;diff=202467"/>
		<updated>2025-11-02T02:39:54Z</updated>

		<summary type="html">&lt;p&gt;SkyLyrac: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox DS Homebrews&lt;br /&gt;
|title=Bunjalloo&lt;br /&gt;
|image=Bunjalloo2.png&lt;br /&gt;
|description=Simple web browser for the Nintendo DS.&lt;br /&gt;
|author=quirkysoft, AntonioND&lt;br /&gt;
|lastupdated=2025/11/02&lt;br /&gt;
|type=Utilities&lt;br /&gt;
|version=0.10.0&lt;br /&gt;
|license=Mixed&lt;br /&gt;
|download=https://github.com/AntonioND/bunjalloo/releases/download/v0.10.0/bunjalloo_v0.10.0.zip&lt;br /&gt;
|website=https://github.com/AntonioND/bunjalloo&lt;br /&gt;
|source=https://github.com/AntonioND/bunjalloo&lt;br /&gt;
}}&lt;br /&gt;
This is Bunjalloo, the open source Nintendo DS web browser. It was originally developed by Richard Quirk until 2010. This repository contains a working fork that you can build with modern BlocksDS.&lt;br /&gt;
&lt;br /&gt;
Bunjalloo has been implemented from scratch [http://www.whatwg.org/ using the whatwg user agent designrules].&lt;br /&gt;
&lt;br /&gt;
This version can take advantage of the additional RAM, CPU power, and WPA2 support of DSi. It also uses modern cryptographic libraries to support modern TLS protocols.&lt;br /&gt;
&lt;br /&gt;
==Features==&lt;br /&gt;
* Bookmark support.&lt;br /&gt;
* Cookie and image support.&lt;br /&gt;
* Optional CA certificate checks.&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
Extract the data folder and contents to the root of your SD card.&lt;br /&gt;
&lt;br /&gt;
Extract the .nds file to the root of your SD Card.&lt;br /&gt;
&lt;br /&gt;
[[DLDI|DLDI]] patch the .nds file if your card needs it.&lt;br /&gt;
&lt;br /&gt;
==Controls==&lt;br /&gt;
* Start: Enter a URL&lt;br /&gt;
* Up/Down: Scroll screen up and down&lt;br /&gt;
* Left/Right: Scroll screen a page at a time&lt;br /&gt;
* R: Move forwards in the history&lt;br /&gt;
* L: Move backwards in the history&lt;br /&gt;
* Click stylus: Follow link, enter data in forms, press keys.&lt;br /&gt;
* Hold stylus: Scroll.&lt;br /&gt;
&lt;br /&gt;
==Changelog==&lt;br /&gt;
&#039;&#039;&#039;Version 0.10.0&#039;&#039;&#039;&lt;br /&gt;
* Fixed SSL connections. Entropy is now gathered correctly and the main thread yields every now and then to let the SSL handshake finish.&lt;br /&gt;
* Support checking CA certificates when using SSL. This uses a lot of RAM and it&#039;s a bit slow so it&#039;s disabled by default, and there&#039;s a new option in the settings menu to enable it or disable it. Also, users can provide their own sets of CA certificates.&lt;br /&gt;
* Fixed the type of position markers when searching strings. It was only valid in 32-bit platforms like the DS, so some code wasn&#039;t working on the SDL port. This prevented the configuration settings page from showing up.&lt;br /&gt;
* The DS version now expects the &amp;quot;data/bunjalloo&amp;quot; folder to be in the root of the SD, not in the same folder as the NDS ROM.&lt;br /&gt;
* The home page has been updated. The page with the licenses used by components of Bunjalloo has been split into multiple pages. Also, the licenses of BlocksDS libraries are now included as well.&lt;br /&gt;
* Support BMP and APNG formats.&lt;br /&gt;
* Fix scale down calculations for very big images. Sometimes they were left too big in one dimension.&lt;br /&gt;
* Display transparent pixels as white instead of black.&lt;br /&gt;
* A bad debug check has been removed. This prevented some elements from loading, like some (but not all) images.&lt;br /&gt;
* Improved handling of errors when receiving packets.&lt;br /&gt;
* Restore code that parses dates.&lt;br /&gt;
* Fix timeout counter so that it uses seconds instead of retry attempts.&lt;br /&gt;
* Zlib has been updated to version 1.3.1.&lt;br /&gt;
* Some unused features of Mbed TLS have been disabled to reduce code size.&lt;br /&gt;
* The code is now built with &amp;quot;-Os&amp;quot; to save RAM.&lt;br /&gt;
* Flush data cache before doing a DMA copy.&lt;br /&gt;
* Removed some superfluous waits for VBL.&lt;br /&gt;
* Fixed some warnings, silenced some of them.&lt;br /&gt;
* Some internal code cleanup.&lt;br /&gt;
* Updated instructions in readme.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 0.9.0&#039;&#039;&#039;&lt;br /&gt;
* Migrated to BlocksDS from devkitARM. Now Bunjalloo can take advantage of the Wifi driver in DSi mode, with WPA2 support and the additional RAM of DSi.&lt;br /&gt;
* The old versions of libpng, libjpeg and giflib have been replaced by libplum.&lt;br /&gt;
* MatrixSsl isn&#039;t currently maintained and it has been replaced by Mbed TLS. Switching between HTTP and HTTPS is still a bit unreliable.&lt;br /&gt;
* The PC port has been fixed. It builds, some infinite loops have been fixed, and images are now displayed correctly.&lt;br /&gt;
* Test can&#039;t be built at the moment, they will be re-enabled in the future.&lt;br /&gt;
* Initialize keyboard state correctly so that the extra symbols aren&#039;t displayed after the first key press.&lt;br /&gt;
* Modify cache CRC32 calculation to include the protocol, not just the rest of the address. This lets us retry a website with http and then https if it fails, for example. Previously it would just reload the cached error page.&lt;br /&gt;
* Added missing copyright notices to the &amp;quot;show copying&amp;quot; page.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 0.8&#039;&#039;&#039;&lt;br /&gt;
* Updated to the latest devkitARM, libnds, libfat and libpng.&lt;br /&gt;
* Fix the updater that was broken in 0.7.7.&lt;br /&gt;
* Fix some layout randomness (on e.g config screen).&lt;br /&gt;
* Change the progress bar to be textless.&lt;br /&gt;
* Fix for occasional giant whitespaces.&lt;br /&gt;
* Use last-modified in cache calculations.&lt;br /&gt;
* Fix flashing when swapping from browser to keyboard.&lt;br /&gt;
* Show on-screen password fields with circles.&lt;br /&gt;
* Change the password field to use circles.&lt;br /&gt;
* Speed up scrolling.&lt;br /&gt;
* Performance improvements.&lt;br /&gt;
* Change to Okiwi font generation and rendering.&lt;br /&gt;
* Fix some major memory leaks.&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
* GitHub (new) - https://github.com/AntonioND/bunjalloo&lt;br /&gt;
* Google Code (old archive) - http://code.google.com/p/quirkysoft&lt;/div&gt;</summary>
		<author><name>SkyLyrac</name></author>
	</entry>
	<entry>
		<id>https://www.gamebrew.org/index.php?title=Bunjalloo&amp;diff=202466</id>
		<title>Bunjalloo</title>
		<link rel="alternate" type="text/html" href="https://www.gamebrew.org/index.php?title=Bunjalloo&amp;diff=202466"/>
		<updated>2025-11-02T02:38:43Z</updated>

		<summary type="html">&lt;p&gt;SkyLyrac: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox DS Homebrews&lt;br /&gt;
|title=Bunjalloo&lt;br /&gt;
|image=Bunjalloo2.png&lt;br /&gt;
|description=Simple web browser for the Nintendo DS.&lt;br /&gt;
|author=quirkysoft&lt;br /&gt;
|lastupdated=2025/11/02&lt;br /&gt;
|type=Utilities&lt;br /&gt;
|version=0.10.0&lt;br /&gt;
|license=Mixed&lt;br /&gt;
|download=https://dlhb.gamebrew.org/dshomebrew2/bunjalloo_0.8.zip&lt;br /&gt;
|website=http://code.google.com/p/quirkysoft&lt;br /&gt;
|source=http://code.google.com/p/quirkysoft&lt;br /&gt;
}}&lt;br /&gt;
This is Bunjalloo, the open source Nintendo DS web browser. It was originally developed by Richard Quirk until 2010. This repository contains a working fork that you can build with modern BlocksDS.&lt;br /&gt;
&lt;br /&gt;
Bunjalloo has been implemented from scratch [http://www.whatwg.org/ using the whatwg user agent designrules].&lt;br /&gt;
&lt;br /&gt;
This version can take advantage of the additional RAM, CPU power, and WPA2 support of DSi. It also uses modern cryptographic libraries to support modern TLS protocols.&lt;br /&gt;
&lt;br /&gt;
==Features==&lt;br /&gt;
* Bookmark support.&lt;br /&gt;
* Cookie and image support.&lt;br /&gt;
* Optional CA certificate checks.&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
Extract the data folder and contents to the root of your SD card.&lt;br /&gt;
&lt;br /&gt;
Extract the .nds file to the root of your SD Card.&lt;br /&gt;
&lt;br /&gt;
[[DLDI|DLDI]] patch the .nds file if your card needs it.&lt;br /&gt;
&lt;br /&gt;
==Controls==&lt;br /&gt;
* Start: Enter a URL&lt;br /&gt;
* Up/Down: Scroll screen up and down&lt;br /&gt;
* Left/Right: Scroll screen a page at a time&lt;br /&gt;
* R: Move forwards in the history&lt;br /&gt;
* L: Move backwards in the history&lt;br /&gt;
* Click stylus: Follow link, enter data in forms, press keys.&lt;br /&gt;
* Hold stylus: Scroll.&lt;br /&gt;
&lt;br /&gt;
==Changelog==&lt;br /&gt;
&#039;&#039;&#039;Version 0.10.0&#039;&#039;&#039;&lt;br /&gt;
* Fixed SSL connections. Entropy is now gathered correctly and the main thread yields every now and then to let the SSL handshake finish.&lt;br /&gt;
* Support checking CA certificates when using SSL. This uses a lot of RAM and it&#039;s a bit slow so it&#039;s disabled by default, and there&#039;s a new option in the settings menu to enable it or disable it. Also, users can provide their own sets of CA certificates.&lt;br /&gt;
* Fixed the type of position markers when searching strings. It was only valid in 32-bit platforms like the DS, so some code wasn&#039;t working on the SDL port. This prevented the configuration settings page from showing up.&lt;br /&gt;
* The DS version now expects the &amp;quot;data/bunjalloo&amp;quot; folder to be in the root of the SD, not in the same folder as the NDS ROM.&lt;br /&gt;
* The home page has been updated. The page with the licenses used by components of Bunjalloo has been split into multiple pages. Also, the licenses of BlocksDS libraries are now included as well.&lt;br /&gt;
* Support BMP and APNG formats.&lt;br /&gt;
* Fix scale down calculations for very big images. Sometimes they were left too big in one dimension.&lt;br /&gt;
* Display transparent pixels as white instead of black.&lt;br /&gt;
* A bad debug check has been removed. This prevented some elements from loading, like some (but not all) images.&lt;br /&gt;
* Improved handling of errors when receiving packets.&lt;br /&gt;
* Restore code that parses dates.&lt;br /&gt;
* Fix timeout counter so that it uses seconds instead of retry attempts.&lt;br /&gt;
* Zlib has been updated to version 1.3.1.&lt;br /&gt;
* Some unused features of Mbed TLS have been disabled to reduce code size.&lt;br /&gt;
* The code is now built with &amp;quot;-Os&amp;quot; to save RAM.&lt;br /&gt;
* Flush data cache before doing a DMA copy.&lt;br /&gt;
* Removed some superfluous waits for VBL.&lt;br /&gt;
* Fixed some warnings, silenced some of them.&lt;br /&gt;
* Some internal code cleanup.&lt;br /&gt;
* Updated instructions in readme.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 0.9.0&#039;&#039;&#039;&lt;br /&gt;
* Migrated to BlocksDS from devkitARM. Now Bunjalloo can take advantage of the Wifi driver in DSi mode, with WPA2 support and the additional RAM of DSi.&lt;br /&gt;
* The old versions of libpng, libjpeg and giflib have been replaced by libplum.&lt;br /&gt;
* MatrixSsl isn&#039;t currently maintained and it has been replaced by Mbed TLS. Switching between HTTP and HTTPS is still a bit unreliable.&lt;br /&gt;
* The PC port has been fixed. It builds, some infinite loops have been fixed, and images are now displayed correctly.&lt;br /&gt;
* Test can&#039;t be built at the moment, they will be re-enabled in the future.&lt;br /&gt;
* Initialize keyboard state correctly so that the extra symbols aren&#039;t displayed after the first key press.&lt;br /&gt;
* Modify cache CRC32 calculation to include the protocol, not just the rest of the address. This lets us retry a website with http and then https if it fails, for example. Previously it would just reload the cached error page.&lt;br /&gt;
* Added missing copyright notices to the &amp;quot;show copying&amp;quot; page.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 0.8&#039;&#039;&#039;&lt;br /&gt;
* Updated to the latest devkitARM, libnds, libfat and libpng.&lt;br /&gt;
* Fix the updater that was broken in 0.7.7.&lt;br /&gt;
* Fix some layout randomness (on e.g config screen).&lt;br /&gt;
* Change the progress bar to be textless.&lt;br /&gt;
* Fix for occasional giant whitespaces.&lt;br /&gt;
* Use last-modified in cache calculations.&lt;br /&gt;
* Fix flashing when swapping from browser to keyboard.&lt;br /&gt;
* Show on-screen password fields with circles.&lt;br /&gt;
* Change the password field to use circles.&lt;br /&gt;
* Speed up scrolling.&lt;br /&gt;
* Performance improvements.&lt;br /&gt;
* Change to Okiwi font generation and rendering.&lt;br /&gt;
* Fix some major memory leaks.&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
* GitHub (new) - https://github.com/AntonioND/bunjalloo&lt;br /&gt;
* Google Code (old archive) - http://code.google.com/p/quirkysoft&lt;/div&gt;</summary>
		<author><name>SkyLyrac</name></author>
	</entry>
	<entry>
		<id>https://www.gamebrew.org/index.php?title=PA_lib&amp;diff=198750</id>
		<title>PA lib</title>
		<link rel="alternate" type="text/html" href="https://www.gamebrew.org/index.php?title=PA_lib&amp;diff=198750"/>
		<updated>2025-03-28T02:10:16Z</updated>

		<summary type="html">&lt;p&gt;SkyLyrac: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox DS Homebrews&lt;br /&gt;
|title=PAlib&lt;br /&gt;
|image=palib4.png&lt;br /&gt;
|description=A Nintendo DS library used to create homebrew games/apps.&lt;br /&gt;
|author=Mollusk&lt;br /&gt;
|lastupdated=2025/02/28&lt;br /&gt;
|contributor=AntonioND&lt;br /&gt;
|type=Development&lt;br /&gt;
|version=250228&lt;br /&gt;
|license=Mixed&lt;br /&gt;
|download=https://github.com/AntonioND/palib&lt;br /&gt;
|downloadraw=https://dlhb.gamebrew.org/dshomebrew2/pallib_100707.rar&lt;br /&gt;
|website=https://github.com/AntonioND/palib&lt;br /&gt;
|source=https://github.com/AntonioND/palib&lt;br /&gt;
}}&lt;br /&gt;
PAlib is a DS library that works on top of libnds. It is aimed towards simple DS development to make DS games and programs in c and C++. It used to work with devkitARM, but now it is only compatible with BlocksDS.&lt;br /&gt;
&lt;br /&gt;
It was presented in the NEO Coding Compo 2005 (App, 1st place).&lt;br /&gt;
&lt;br /&gt;
While this library isn&#039;t recommended for new projects due to its design flaws, it is still useful to build old projects that were built using it.&lt;br /&gt;
&lt;br /&gt;
==Features==&lt;br /&gt;
* Sprites functions.&lt;br /&gt;
* Background function. &lt;br /&gt;
* Text functions.&lt;br /&gt;
* An API for buttons.&lt;br /&gt;
* Sliders.&lt;br /&gt;
* Checks.&lt;br /&gt;
* Sound effects support.&lt;br /&gt;
* MOD/XM/S3M/IT support thanks to Maxmod.&lt;br /&gt;
* MP3 support thanks to ASlib&lt;br /&gt;
* Stylus and Pad.&lt;br /&gt;
* Draw function.&lt;br /&gt;
* Variable case text.&lt;br /&gt;
* Retrieve info on DS (user name, birthday, language, time/date, etc).&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
To install PAlib follow the instructions [https://github.com/AntonioND/palib here].&lt;br /&gt;
&lt;br /&gt;
==User guide==&lt;br /&gt;
Tutorials can be found [http://code.google.com/p/palib-tutorial-pdf here].&lt;br /&gt;
&lt;br /&gt;
==Screenshots==&lt;br /&gt;
https://dlhb.gamebrew.org/dshomebrew/palib2.png&lt;br /&gt;
&lt;br /&gt;
==Media==&lt;br /&gt;
&#039;&#039;&#039;C/PALib Simple Nintendo DS Platformer&#039;&#039;&#039; ([https://www.youtube.com/watch?v=HzqdLHI0SG8 bl0ckeduser]) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;youtube&amp;gt;HzqdLHI0SG8&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Changelog==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;PAlib 250228 beta | AntonioND&#039;&#039;&#039;&lt;br /&gt;
* [Fix] Fix code that sets the LED blink speed.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;PAlib 250114 beta | AntonioND&#039;&#039;&#039;&lt;br /&gt;
* [Fix] Flush cache whenever a DMA copy is made so that users of PAlib don&#039;t need to worry about it.&lt;br /&gt;
* [ASlib] Flush data cache when a MP3 file is played from RAM so that the developer doesn&#039;t need to do it.&lt;br /&gt;
* [DMA_Copy] Use safe BlocksDS libnds DMA functions instead of the old PAlib macros.&lt;br /&gt;
* [Fix] Actually send temperature and battery level to the ARM9 from the ARM7.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;PAlib 250107 beta: PAlib lives on | AntonioND&#039;&#039;&#039;&lt;br /&gt;
* [General] PAlib builds and works again, even on DSi consoles.&lt;br /&gt;
* [General] devkitARM build system has been removed in favour of BlocksDS.&lt;br /&gt;
* [General] Repository structure has been refactored so that it&#039;s clearer.&lt;br /&gt;
* [ARM7] The ARM7 cores have been slightly refactored for modern libnds and to support DSi. Also, the libnds exception handler for the ARM7 is now enabled by default.&lt;br /&gt;
* [ASlib] Interrupts are now enabled in the VBL handler of ASlib so that it doesn&#039;t block multithreading.&lt;br /&gt;
* [Fix] The IPC structure is now allocated at runtime instead of using a hardcoded address, which doesn&#039;t work on DSi.&lt;br /&gt;
* [Fix] Several bugs in ASlib have been fixed.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;PAlib 100707 QuickFix: The last PAlib release | fincs&#039;&#039;&#039;&lt;br /&gt;
* [General] Removed the ASlib IPC clear code, it was doing more harm than good.&lt;br /&gt;
* [3DSprites] PA_3DCreateSprite now returns the GFX number.&lt;br /&gt;
* [Linux] Fixed a backslash (\) path to use forward slash (/).&lt;br /&gt;
* [Examples] The updating script screwed up some sound examples, it&#039;s now fixed.&lt;br /&gt;
* [EFS] EFS support was dropped in favor of libfilesystem.&lt;br /&gt;
* [Editors] PN support is now dropped.&lt;br /&gt;
* [Fix] PAlib now works with devkitARM r31.&lt;br /&gt;
* [Sprite] Fixed PA_DeleteSprite bug (thanks BassAceGold).&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
* devkitPro wiki - http://devkitpro.org/wiki/PAlib&lt;br /&gt;
* Google Code - http://code.google.com/p/palib-tutorial-pdf&lt;br /&gt;
* NeoFlash - https://www.neoflash.com/forum/index.php?topic=563.0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:PC utilities for DS]]&lt;br /&gt;
[[Category:NEO Coding Compo 2005]]&lt;/div&gt;</summary>
		<author><name>SkyLyrac</name></author>
	</entry>
	<entry>
		<id>https://www.gamebrew.org/index.php?title=PA_lib&amp;diff=198749</id>
		<title>PA lib</title>
		<link rel="alternate" type="text/html" href="https://www.gamebrew.org/index.php?title=PA_lib&amp;diff=198749"/>
		<updated>2025-03-28T02:09:55Z</updated>

		<summary type="html">&lt;p&gt;SkyLyrac: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox DS Homebrews&lt;br /&gt;
|title=PAlib&lt;br /&gt;
|image=palib4.png&lt;br /&gt;
|description=A Nintendo DS library used to create homebrew games/apps.&lt;br /&gt;
|author=Mollusk&lt;br /&gt;
|lastupdated=2025/01/14&lt;br /&gt;
|contributor=AntonioND&lt;br /&gt;
|type=Development&lt;br /&gt;
|version=250228&lt;br /&gt;
|license=Mixed&lt;br /&gt;
|download=https://github.com/AntonioND/palib&lt;br /&gt;
|downloadraw=https://dlhb.gamebrew.org/dshomebrew2/pallib_100707.rar&lt;br /&gt;
|website=https://github.com/AntonioND/palib&lt;br /&gt;
|source=https://github.com/AntonioND/palib&lt;br /&gt;
}}&lt;br /&gt;
PAlib is a DS library that works on top of libnds. It is aimed towards simple DS development to make DS games and programs in c and C++. It used to work with devkitARM, but now it is only compatible with BlocksDS.&lt;br /&gt;
&lt;br /&gt;
It was presented in the NEO Coding Compo 2005 (App, 1st place).&lt;br /&gt;
&lt;br /&gt;
While this library isn&#039;t recommended for new projects due to its design flaws, it is still useful to build old projects that were built using it.&lt;br /&gt;
&lt;br /&gt;
==Features==&lt;br /&gt;
* Sprites functions.&lt;br /&gt;
* Background function. &lt;br /&gt;
* Text functions.&lt;br /&gt;
* An API for buttons.&lt;br /&gt;
* Sliders.&lt;br /&gt;
* Checks.&lt;br /&gt;
* Sound effects support.&lt;br /&gt;
* MOD/XM/S3M/IT support thanks to Maxmod.&lt;br /&gt;
* MP3 support thanks to ASlib&lt;br /&gt;
* Stylus and Pad.&lt;br /&gt;
* Draw function.&lt;br /&gt;
* Variable case text.&lt;br /&gt;
* Retrieve info on DS (user name, birthday, language, time/date, etc).&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
To install PAlib follow the instructions [https://github.com/AntonioND/palib here].&lt;br /&gt;
&lt;br /&gt;
==User guide==&lt;br /&gt;
Tutorials can be found [http://code.google.com/p/palib-tutorial-pdf here].&lt;br /&gt;
&lt;br /&gt;
==Screenshots==&lt;br /&gt;
https://dlhb.gamebrew.org/dshomebrew/palib2.png&lt;br /&gt;
&lt;br /&gt;
==Media==&lt;br /&gt;
&#039;&#039;&#039;C/PALib Simple Nintendo DS Platformer&#039;&#039;&#039; ([https://www.youtube.com/watch?v=HzqdLHI0SG8 bl0ckeduser]) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;youtube&amp;gt;HzqdLHI0SG8&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Changelog==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;PAlib 250228 beta | AntonioND&#039;&#039;&#039;&lt;br /&gt;
* [Fix] Fix code that sets the LED blink speed.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;PAlib 250114 beta | AntonioND&#039;&#039;&#039;&lt;br /&gt;
* [Fix] Flush cache whenever a DMA copy is made so that users of PAlib don&#039;t need to worry about it.&lt;br /&gt;
* [ASlib] Flush data cache when a MP3 file is played from RAM so that the developer doesn&#039;t need to do it.&lt;br /&gt;
* [DMA_Copy] Use safe BlocksDS libnds DMA functions instead of the old PAlib macros.&lt;br /&gt;
* [Fix] Actually send temperature and battery level to the ARM9 from the ARM7.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;PAlib 250107 beta: PAlib lives on | AntonioND&#039;&#039;&#039;&lt;br /&gt;
* [General] PAlib builds and works again, even on DSi consoles.&lt;br /&gt;
* [General] devkitARM build system has been removed in favour of BlocksDS.&lt;br /&gt;
* [General] Repository structure has been refactored so that it&#039;s clearer.&lt;br /&gt;
* [ARM7] The ARM7 cores have been slightly refactored for modern libnds and to support DSi. Also, the libnds exception handler for the ARM7 is now enabled by default.&lt;br /&gt;
* [ASlib] Interrupts are now enabled in the VBL handler of ASlib so that it doesn&#039;t block multithreading.&lt;br /&gt;
* [Fix] The IPC structure is now allocated at runtime instead of using a hardcoded address, which doesn&#039;t work on DSi.&lt;br /&gt;
* [Fix] Several bugs in ASlib have been fixed.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;PAlib 100707 QuickFix: The last PAlib release | fincs&#039;&#039;&#039;&lt;br /&gt;
* [General] Removed the ASlib IPC clear code, it was doing more harm than good.&lt;br /&gt;
* [3DSprites] PA_3DCreateSprite now returns the GFX number.&lt;br /&gt;
* [Linux] Fixed a backslash (\) path to use forward slash (/).&lt;br /&gt;
* [Examples] The updating script screwed up some sound examples, it&#039;s now fixed.&lt;br /&gt;
* [EFS] EFS support was dropped in favor of libfilesystem.&lt;br /&gt;
* [Editors] PN support is now dropped.&lt;br /&gt;
* [Fix] PAlib now works with devkitARM r31.&lt;br /&gt;
* [Sprite] Fixed PA_DeleteSprite bug (thanks BassAceGold).&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
* devkitPro wiki - http://devkitpro.org/wiki/PAlib&lt;br /&gt;
* Google Code - http://code.google.com/p/palib-tutorial-pdf&lt;br /&gt;
* NeoFlash - https://www.neoflash.com/forum/index.php?topic=563.0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:PC utilities for DS]]&lt;br /&gt;
[[Category:NEO Coding Compo 2005]]&lt;/div&gt;</summary>
		<author><name>SkyLyrac</name></author>
	</entry>
	<entry>
		<id>https://www.gamebrew.org/index.php?title=Tales_of_Dagur&amp;diff=198747</id>
		<title>Tales of Dagur</title>
		<link rel="alternate" type="text/html" href="https://www.gamebrew.org/index.php?title=Tales_of_Dagur&amp;diff=198747"/>
		<updated>2025-03-25T00:49:24Z</updated>

		<summary type="html">&lt;p&gt;SkyLyrac: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox DS Homebrews&lt;br /&gt;
|title=Tales of Dagur&lt;br /&gt;
|image=talesofdagur.png&lt;br /&gt;
|description=A complete RPG game on DS.&lt;br /&gt;
|author=LiraNuna&lt;br /&gt;
|lastupdated=2025/03/25&lt;br /&gt;
|type=Role Playing&lt;br /&gt;
|version=2&lt;br /&gt;
|license=Mixed&lt;br /&gt;
|download=https://dlhb.gamebrew.org/dshomebrew2/talesofdagur.7z?k33p0fil35&lt;br /&gt;
|downloadraw=https://github.com/AntonioND/talesofdagur/releases/tag/v20250325&lt;br /&gt;
|website=http://www.talesofdagur.com/main/index.php&lt;br /&gt;
|source=https://github.com/AntonioND/talesofdagur&lt;br /&gt;
}}&lt;br /&gt;
Tales of Dagur is a complete RPG homebrew for the NDS.&lt;br /&gt;
&lt;br /&gt;
It was released for the NEO Spring Coding Compo 2006 (NDS Games, 1st place).&lt;br /&gt;
&lt;br /&gt;
In 2024, the game was ported to [https://github.com/blocksds/sdk BlocksDS] by AntonioND to support modern tools, DLDI and DSi.&lt;br /&gt;
&lt;br /&gt;
==User guide==&lt;br /&gt;
The kingdom of Dagur is in deep troubles: The holy stone that protects the kingdom has been stolen! Further more, the queen of Dagur has disappeared. &lt;br /&gt;
&lt;br /&gt;
A young lad named Alex is summoned by the king to fix the situation. Help Alex return the holy stone, find the queen, and by that save the kingdom!&lt;br /&gt;
&lt;br /&gt;
Don&#039;t forget to equip weapons!&lt;br /&gt;
&lt;br /&gt;
==Controls==&lt;br /&gt;
&#039;&#039;&#039;In game:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
D-Pad - Movement&lt;br /&gt;
&lt;br /&gt;
A - Perform Action&lt;br /&gt;
&lt;br /&gt;
B - Dash&lt;br /&gt;
&lt;br /&gt;
Start - In-game menu&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;In battle or shop:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
D-Pad - Scroll through options&lt;br /&gt;
&lt;br /&gt;
A - Select&lt;br /&gt;
&lt;br /&gt;
B - Cancel&lt;br /&gt;
&lt;br /&gt;
==Screenshots==&lt;br /&gt;
https://dlhb.gamebrew.org/dshomebrew/talesofdagur2.png&lt;br /&gt;
https://dlhb.gamebrew.org/dshomebrew/talesofdagur3.png&lt;br /&gt;
&lt;br /&gt;
https://dlhb.gamebrew.org/dshomebrew/talesofdagur4.png&lt;br /&gt;
https://dlhb.gamebrew.org/dshomebrew/talesofdagur5.png&lt;br /&gt;
&amp;lt;!--BEGIN Online Emulator Section--&amp;gt;&lt;br /&gt;
==Online emulator==&lt;br /&gt;
{{EmulatorJS Main&lt;br /&gt;
|width=515px&lt;br /&gt;
|height=384px&lt;br /&gt;
|EJS_backgroundImage=https://www.gamebrew.org/images/e/ea/Talesofdagur.png&lt;br /&gt;
|EJS_core=desmume2015&lt;br /&gt;
|EJS_gameName=Tales of Dagur&lt;br /&gt;
|EJS_gameUrl=https://dlhb.gamebrew.org/onlineemulators/nds/talesofdagur.7z&lt;br /&gt;
}}&lt;br /&gt;
{{DS Control Settings}}&lt;br /&gt;
&amp;lt;!--END Online Emulator Section--&amp;gt;&lt;br /&gt;
==Compatibility==&lt;br /&gt;
Tested on iDeaS.&lt;br /&gt;
&lt;br /&gt;
==Credits==&lt;br /&gt;
Code: LiraNuna.&lt;br /&gt;
&lt;br /&gt;
Moral support and font tileset: Chetic.&lt;br /&gt;
&lt;br /&gt;
Storyboard, Script, &amp;amp; Music collection: RVman.&lt;br /&gt;
&lt;br /&gt;
Graphics: Enterbrain.&lt;br /&gt;
&lt;br /&gt;
Mapping and level design: Nikolas Lahtinen.&lt;br /&gt;
&lt;br /&gt;
Beta-testing: Cameron, Chetic and Nikolas.&lt;br /&gt;
&lt;br /&gt;
Special thanks to Rat for the splash screen.&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
* Official website - [https://web.archive.org/web/20090617202956/http://www.talesofdagur.com/main/index.php http://www.talesofdagur.com/main/index.php] (archived)&lt;br /&gt;
* Author&#039;s website - [https://web.archive.org/web/20100105060038/https://www.liranuna.com/nds-projects/tales-of-dagur https://www.liranuna.com/nds-projects/tales-of-dagur] (archived)&lt;br /&gt;
* NeoFlash - https://www.neoflash.com/forum/index.php?topic=1917.0&lt;br /&gt;
* Port to BlocksDS - https://github.com/AntonioND/talesofdagur&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:NEO Spring Coding Compo 2006]]&lt;/div&gt;</summary>
		<author><name>SkyLyrac</name></author>
	</entry>
	<entry>
		<id>https://www.gamebrew.org/index.php?title=Tales_of_Dagur&amp;diff=198746</id>
		<title>Tales of Dagur</title>
		<link rel="alternate" type="text/html" href="https://www.gamebrew.org/index.php?title=Tales_of_Dagur&amp;diff=198746"/>
		<updated>2025-03-25T00:48:33Z</updated>

		<summary type="html">&lt;p&gt;SkyLyrac: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox DS Homebrews&lt;br /&gt;
|title=Tales of Dagur&lt;br /&gt;
|image=talesofdagur.png&lt;br /&gt;
|description=A complete RPG game on DS.&lt;br /&gt;
|author=LiraNuna&lt;br /&gt;
|lastupdated=2025/03/25&lt;br /&gt;
|type=Role Playing&lt;br /&gt;
|version=2&lt;br /&gt;
|license=Mixed&lt;br /&gt;
|download=https://dlhb.gamebrew.org/dshomebrew2/talesofdagur.7z?k33p0fil35&lt;br /&gt;
|downloadraw=https://github.com/AntonioND/talesofdagur/releases/tag/v20250325&lt;br /&gt;
|website=http://www.talesofdagur.com/main/index.php&lt;br /&gt;
|source=https://github.com/AntonioND/talesofdagur&lt;br /&gt;
}}&lt;br /&gt;
Tales of Dagur is a complete RPG homebrew for the NDS.&lt;br /&gt;
&lt;br /&gt;
It was released for the NEO Spring Coding Compo 2006 (NDS Games, 1st place).&lt;br /&gt;
&lt;br /&gt;
In 2024, the game was ported to [https://github.com/blocksds/sdk BlocksDS] by AntonioND to support modern tools, DLDI and DSi.&lt;br /&gt;
&lt;br /&gt;
==User guide==&lt;br /&gt;
The kingdom of Dagur is in deep troubles: The holy stone that protects the kingdom has been stolen! Further more, the queen of Dagur has disappeared. &lt;br /&gt;
&lt;br /&gt;
A young lad named Alex is summoned by the king to fix the situation. Help Alex return the holy stone, find the queen, and by that save the kingdom!&lt;br /&gt;
&lt;br /&gt;
Don&#039;t forget to equip weapons!&lt;br /&gt;
&lt;br /&gt;
==Controls==&lt;br /&gt;
&#039;&#039;&#039;In game:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
D-Pad - Movement&lt;br /&gt;
&lt;br /&gt;
A - Perform Action&lt;br /&gt;
&lt;br /&gt;
B - Dash&lt;br /&gt;
&lt;br /&gt;
Start - In-game menu&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;In battle or shop:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
D-Pad - Scroll through options&lt;br /&gt;
&lt;br /&gt;
A - Select&lt;br /&gt;
&lt;br /&gt;
B - Cancel&lt;br /&gt;
&lt;br /&gt;
==Screenshots==&lt;br /&gt;
https://dlhb.gamebrew.org/dshomebrew/talesofdagur2.png&lt;br /&gt;
https://dlhb.gamebrew.org/dshomebrew/talesofdagur3.png&lt;br /&gt;
&lt;br /&gt;
https://dlhb.gamebrew.org/dshomebrew/talesofdagur4.png&lt;br /&gt;
https://dlhb.gamebrew.org/dshomebrew/talesofdagur5.png&lt;br /&gt;
&amp;lt;!--BEGIN Online Emulator Section--&amp;gt;&lt;br /&gt;
==Online emulator==&lt;br /&gt;
{{EmulatorJS Main&lt;br /&gt;
|width=515px&lt;br /&gt;
|height=384px&lt;br /&gt;
|EJS_backgroundImage=https://www.gamebrew.org/images/e/ea/Talesofdagur.png&lt;br /&gt;
|EJS_core=desmume2015&lt;br /&gt;
|EJS_gameName=Tales of Dagur&lt;br /&gt;
|EJS_gameUrl=https://dlhb.gamebrew.org/onlineemulators/nds/talesofdagur.7z&lt;br /&gt;
}}&lt;br /&gt;
{{DS Control Settings}}&lt;br /&gt;
&amp;lt;!--END Online Emulator Section--&amp;gt;&lt;br /&gt;
==Compatibility==&lt;br /&gt;
Tested on iDeaS.&lt;br /&gt;
&lt;br /&gt;
==Credits==&lt;br /&gt;
Code: LiraNuna.&lt;br /&gt;
&lt;br /&gt;
Moral support and font tileset: Chetic.&lt;br /&gt;
&lt;br /&gt;
Storyboard, Script, &amp;amp; Music collection: RVman.&lt;br /&gt;
&lt;br /&gt;
Graphics: Enterbrain.&lt;br /&gt;
&lt;br /&gt;
Mapping and level design: Nikolas Lahtinen.&lt;br /&gt;
&lt;br /&gt;
Beta-testing: Cameron, Chetic and Nikolas.&lt;br /&gt;
&lt;br /&gt;
Special thanks to Rat for the splash screen.&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
* Official website - [https://web.archive.org/web/20090617202956/http://www.talesofdagur.com/main/index.php http://www.talesofdagur.com/main/index.php] (archived)&lt;br /&gt;
* Author&#039;s website - [https://web.archive.org/web/20100105060038/https://www.liranuna.com/nds-projects/tales-of-dagur https://www.liranuna.com/nds-projects/tales-of-dagur] (archived)&lt;br /&gt;
* NeoFlash - https://www.neoflash.com/forum/index.php?topic=1917.0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:NEO Spring Coding Compo 2006]]&lt;/div&gt;</summary>
		<author><name>SkyLyrac</name></author>
	</entry>
	<entry>
		<id>https://www.gamebrew.org/index.php?title=M.U.G.E.N._DS&amp;diff=195646</id>
		<title>M.U.G.E.N. DS</title>
		<link rel="alternate" type="text/html" href="https://www.gamebrew.org/index.php?title=M.U.G.E.N._DS&amp;diff=195646"/>
		<updated>2025-01-16T01:48:00Z</updated>

		<summary type="html">&lt;p&gt;SkyLyrac: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox DS Homebrews&lt;br /&gt;
|title=M.U.G.E.N. DS&lt;br /&gt;
|image=mugends.png&lt;br /&gt;
|description=M.U.G.E.N-style fighting game.&lt;br /&gt;
|author=AntonioND&lt;br /&gt;
|lastupdated=2008/03/20&lt;br /&gt;
|type=Action&lt;br /&gt;
|version=Beta 0.1&lt;br /&gt;
|license=Mixed&lt;br /&gt;
|download=https://dlhb.gamebrew.org/dshomebrew2/mugends.rar&lt;br /&gt;
|website=http://www.elotrolado.net/hilo_-Proyecto--M-U-G-E-N--DS_983626?pagenumber=2&lt;br /&gt;
}}&lt;br /&gt;
M.U.G.E.N-style homebrew fighting game for the DS. &lt;br /&gt;
&lt;br /&gt;
==User guide==&lt;br /&gt;
Fight as Naruto (a character from the Japanese comic Naruto) against another Naruto. &lt;br /&gt;
&lt;br /&gt;
==Controls==&lt;br /&gt;
Right/Left - Move, Run (press tiwce)&lt;br /&gt;
&lt;br /&gt;
Up - Jump, Double jump&lt;br /&gt;
&lt;br /&gt;
Down - Cover&lt;br /&gt;
&lt;br /&gt;
L/R - Move player 2 &lt;br /&gt;
&lt;br /&gt;
Select - Debug mode&lt;br /&gt;
&amp;lt;!--BEGIN Online Emulator Section--&amp;gt;&lt;br /&gt;
==Online emulator==&lt;br /&gt;
{{EmulatorJS Main&lt;br /&gt;
|width=515px&lt;br /&gt;
|height=384px&lt;br /&gt;
|EJS_backgroundImage=https://www.gamebrew.org/images/0/04/Mugends.png&lt;br /&gt;
|EJS_core=nds&lt;br /&gt;
|EJS_gameName=M.U.G.E.N. DS&lt;br /&gt;
|EJS_gameUrl=https://dlhb.gamebrew.org/onlineemulators/nds/mugends.7z&lt;br /&gt;
}}&lt;br /&gt;
{{DS Control Settings}}&lt;br /&gt;
&amp;lt;!--END Online Emulator Section--&amp;gt;&lt;br /&gt;
==External links==&lt;br /&gt;
* ElOtroLado - http://www.elotrolado.net/hilo_-Proyecto--M-U-G-E-N--DS_983626?pagenumber=2&lt;/div&gt;</summary>
		<author><name>SkyLyrac</name></author>
	</entry>
	<entry>
		<id>https://www.gamebrew.org/index.php?title=Advanced_Sound_Library&amp;diff=195645</id>
		<title>Advanced Sound Library</title>
		<link rel="alternate" type="text/html" href="https://www.gamebrew.org/index.php?title=Advanced_Sound_Library&amp;diff=195645"/>
		<updated>2025-01-16T01:44:53Z</updated>

		<summary type="html">&lt;p&gt;SkyLyrac: /* Known issues */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox DS Homebrews&lt;br /&gt;
|title=Advanced Sound Library&lt;br /&gt;
|image=aslib.png&lt;br /&gt;
|description=A sound library for the NDS.&lt;br /&gt;
|author=Noda&lt;br /&gt;
|lastupdated=2007/12/02&lt;br /&gt;
|type=Media Players&lt;br /&gt;
|version=1.0&lt;br /&gt;
|license=Mixed&lt;br /&gt;
|download=https://dlhb.gamebrew.org/dshomebrew2/advancedsoundlibrary.rar&lt;br /&gt;
|website=http://nodadev.wordpress.com/nds-projects/advanced-sound-library&lt;br /&gt;
}}&lt;br /&gt;
The Advanced Sound Library (ASlib) is a new sound library for the NDS.&lt;br /&gt;
&lt;br /&gt;
==Features==&lt;br /&gt;
*MP3 engine.&lt;br /&gt;
*Audio engine.&lt;br /&gt;
&lt;br /&gt;
==User guide==&lt;br /&gt;
===MP3 engine===&lt;br /&gt;
* MP3 is decoded on the arm7, so use nearly no CPU time on the arm9.&lt;br /&gt;
* Stereo &amp;amp; surround modes available (surround works even for mono mp3s).&lt;br /&gt;
* Up to 44Khz/stereo/96Kbps, though it is recommended to use 32Khz/stereo/80Kbps max, which is enough for the DS and works great with up to +25%/-100% pitching.&lt;br /&gt;
* Support real-time pitching (changing the playing speed of the mp3).&lt;br /&gt;
* Support real-time volume and panning change.&lt;br /&gt;
* The MP3 can be paused and restarted.&lt;br /&gt;
* The MP3 can be set to loop automatically.&lt;br /&gt;
* Support playing from RAM and streaming from FAT or EFS.&lt;br /&gt;
* You can disable the mp3 engine if you want, to get 2 more channels.&lt;br /&gt;
&lt;br /&gt;
===Audio engine===&lt;br /&gt;
* Can use the whole 16 DS channel or only the first half (so you can use an external mod player, for example).&lt;br /&gt;
* Support standard or surround/fx mode (16 channels in standard mode (-2 if mp3), 8 in surround/fx mode (-1 if mp3)).&lt;br /&gt;
* Simple sound playing using a priority system: if no channel is available, stop a sound that has less priority than the new one to play it, or skip it if all sounds have more priority.&lt;br /&gt;
* Possibility to reserve a particular channel so it won’t be used in the channel pool by the priority playing system. You can then manage the reserved sound channels manually.&lt;br /&gt;
* Surround or pseudo-reverb can be activated per sound (works great with mono sounds).&lt;br /&gt;
* Support real-time volume, panning and pitch modifications for each sound.&lt;br /&gt;
* Support sound looping.&lt;br /&gt;
&lt;br /&gt;
The lib comes with a template and a example of what you can do with it.&lt;br /&gt;
&lt;br /&gt;
==Known issues==&lt;br /&gt;
This library build using a way old DKP version: devkitPro r21 and libnds 20071023, newer version may not compile it because the IPC system was removed.&lt;br /&gt;
&lt;br /&gt;
There is a port of ASlib to BlocksDS in the PAlib repository, allowing developers to use ASlib with modern tools: https://github.com/AntonioND/palib&lt;br /&gt;
&lt;br /&gt;
==Credits==&lt;br /&gt;
IPC sound system and streaming is based on cold_as_ice streaming example.&lt;br /&gt;
&lt;br /&gt;
Audio stream filling / mp3 decoding based on ThomasS mp3 decoding example.&lt;br /&gt;
&lt;br /&gt;
ASM stereo desinterleave function was made by Thoduv.&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
* Author&#039;s website - http://nodadev.wordpress.com/nds-projects/advanced-sound-library&lt;/div&gt;</summary>
		<author><name>SkyLyrac</name></author>
	</entry>
	<entry>
		<id>https://www.gamebrew.org/index.php?title=PA_lib&amp;diff=195638</id>
		<title>PA lib</title>
		<link rel="alternate" type="text/html" href="https://www.gamebrew.org/index.php?title=PA_lib&amp;diff=195638"/>
		<updated>2025-01-14T14:26:22Z</updated>

		<summary type="html">&lt;p&gt;SkyLyrac: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox DS Homebrews&lt;br /&gt;
|title=PAlib&lt;br /&gt;
|image=palib4.png&lt;br /&gt;
|description=A Nintendo DS library used to create homebrew games/apps.&lt;br /&gt;
|author=Mollusk&lt;br /&gt;
|lastupdated=2025/01/14&lt;br /&gt;
|contributor=AntonioND&lt;br /&gt;
|type=Development&lt;br /&gt;
|version=250114&lt;br /&gt;
|license=Mixed&lt;br /&gt;
|download=https://github.com/AntonioND/palib&lt;br /&gt;
|downloadraw=https://dlhb.gamebrew.org/dshomebrew2/pallib_100707.rar&lt;br /&gt;
|website=https://github.com/AntonioND/palib&lt;br /&gt;
|source=https://github.com/AntonioND/palib&lt;br /&gt;
}}&lt;br /&gt;
PAlib is a DS library that works on top of libnds. It is aimed towards simple DS development to make DS games and programs in c and C++. It used to work with devkitARM, but now it is only compatible with BlocksDS.&lt;br /&gt;
&lt;br /&gt;
It was presented in the NEO Coding Compo 2005 (App, 1st place).&lt;br /&gt;
&lt;br /&gt;
While this library isn&#039;t recommended for new projects due to its design flaws, it is still useful to build old projects that were built using it.&lt;br /&gt;
&lt;br /&gt;
==Features==&lt;br /&gt;
* Sprites functions.&lt;br /&gt;
* Background function. &lt;br /&gt;
* Text functions.&lt;br /&gt;
* An API for buttons.&lt;br /&gt;
* Sliders.&lt;br /&gt;
* Checks.&lt;br /&gt;
* Sound effects support.&lt;br /&gt;
* MOD/XM/S3M/IT support thanks to Maxmod.&lt;br /&gt;
* MP3 support thanks to ASlib&lt;br /&gt;
* Stylus and Pad.&lt;br /&gt;
* Draw function.&lt;br /&gt;
* Variable case text.&lt;br /&gt;
* Retrieve info on DS (user name, birthday, language, time/date, etc).&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
To install PAlib follow the instructions [https://github.com/AntonioND/palib here].&lt;br /&gt;
&lt;br /&gt;
==User guide==&lt;br /&gt;
Tutorials can be found [http://code.google.com/p/palib-tutorial-pdf here].&lt;br /&gt;
&lt;br /&gt;
==Screenshots==&lt;br /&gt;
https://dlhb.gamebrew.org/dshomebrew/palib2.png&lt;br /&gt;
&lt;br /&gt;
==Media==&lt;br /&gt;
&#039;&#039;&#039;C/PALib Simple Nintendo DS Platformer&#039;&#039;&#039; ([https://www.youtube.com/watch?v=HzqdLHI0SG8 bl0ckeduser]) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;youtube&amp;gt;HzqdLHI0SG8&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Changelog==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;PAlib 250114 beta | AntonioND&#039;&#039;&#039;&lt;br /&gt;
* [Fix] Flush cache whenever a DMA copy is made so that users of PAlib don&#039;t need to worry about it.&lt;br /&gt;
* [ASlib] Flush data cache when a MP3 file is played from RAM so that the developer doesn&#039;t need to do it.&lt;br /&gt;
* [DMA_Copy] Use safe BlocksDS libnds DMA functions instead of the old PAlib macros.&lt;br /&gt;
* [Fix] Actually send temperature and battery level to the ARM9 from the ARM7.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;PAlib 250107 beta: PAlib lives on | AntonioND&#039;&#039;&#039;&lt;br /&gt;
* [General] PAlib builds and works again, even on DSi consoles.&lt;br /&gt;
* [General] devkitARM build system has been removed in favour of BlocksDS.&lt;br /&gt;
* [General] Repository structure has been refactored so that it&#039;s clearer.&lt;br /&gt;
* [ARM7] The ARM7 cores have been slightly refactored for modern libnds and to support DSi. Also, the libnds exception handler for the ARM7 is now enabled by default.&lt;br /&gt;
* [ASlib] Interrupts are now enabled in the VBL handler of ASlib so that it doesn&#039;t block multithreading.&lt;br /&gt;
* [Fix] The IPC structure is now allocated at runtime instead of using a hardcoded address, which doesn&#039;t work on DSi.&lt;br /&gt;
* [Fix] Several bugs in ASlib have been fixed.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;PAlib 100707 QuickFix: The last PAlib release | fincs&#039;&#039;&#039;&lt;br /&gt;
* [General] Removed the ASlib IPC clear code, it was doing more harm than good.&lt;br /&gt;
* [3DSprites] PA_3DCreateSprite now returns the GFX number.&lt;br /&gt;
* [Linux] Fixed a backslash (\) path to use forward slash (/).&lt;br /&gt;
* [Examples] The updating script screwed up some sound examples, it&#039;s now fixed.&lt;br /&gt;
* [EFS] EFS support was dropped in favor of libfilesystem.&lt;br /&gt;
* [Editors] PN support is now dropped.&lt;br /&gt;
* [Fix] PAlib now works with devkitARM r31.&lt;br /&gt;
* [Sprite] Fixed PA_DeleteSprite bug (thanks BassAceGold).&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
* devkitPro wiki - http://devkitpro.org/wiki/PAlib&lt;br /&gt;
* Google Code - http://code.google.com/p/palib-tutorial-pdf&lt;br /&gt;
* NeoFlash - https://www.neoflash.com/forum/index.php?topic=563.0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:PC utilities for DS]]&lt;br /&gt;
[[Category:NEO Coding Compo 2005]]&lt;/div&gt;</summary>
		<author><name>SkyLyrac</name></author>
	</entry>
	<entry>
		<id>https://www.gamebrew.org/index.php?title=PA_lib&amp;diff=195637</id>
		<title>PA lib</title>
		<link rel="alternate" type="text/html" href="https://www.gamebrew.org/index.php?title=PA_lib&amp;diff=195637"/>
		<updated>2025-01-14T14:25:24Z</updated>

		<summary type="html">&lt;p&gt;SkyLyrac: PAlib has now been ported to BlocksDS, link to it instead of the old version that doesn&amp;#039;t work with devkitARM.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox DS Homebrews&lt;br /&gt;
|title=PAlib&lt;br /&gt;
|image=palib4.png&lt;br /&gt;
|description=A Nintendo DS library used to create homebrew games/apps.&lt;br /&gt;
|author=Mollusk&lt;br /&gt;
|lastupdated=2025/01/14&lt;br /&gt;
|contributor=AntonioND&lt;br /&gt;
|type=Development&lt;br /&gt;
|version=250114&lt;br /&gt;
|license=Mixed&lt;br /&gt;
|download=https://github.com/AntonioND/palib&lt;br /&gt;
|downloadraw=https://dlhb.gamebrew.org/dshomebrew2/pallib_100707.rar&lt;br /&gt;
|website=https://github.com/AntonioND/palib&lt;br /&gt;
|source=https://github.com/AntonioND/palib&lt;br /&gt;
}}&lt;br /&gt;
PA_lib is a DS library which based on ndslib. It is aimed towards simple DS development to make DS games and programs in c and C++. It used to work with devkitARM, but now it is only compatible with BlocksDS.&lt;br /&gt;
&lt;br /&gt;
It was presented in the NEO Coding Compo 2005 (App, 1st place).&lt;br /&gt;
&lt;br /&gt;
While this library isn&#039;t recommended for new projects due to its design flaws, it is still useful to build old projects that were built using it.&lt;br /&gt;
&lt;br /&gt;
==Features==&lt;br /&gt;
* Sprites functions.&lt;br /&gt;
* Background function. &lt;br /&gt;
* Text functions.&lt;br /&gt;
* An API for buttons.&lt;br /&gt;
* Sliders.&lt;br /&gt;
* Checks.&lt;br /&gt;
* Sound effects support.&lt;br /&gt;
* MOD/XM/S3M/IT support thanks to Maxmod.&lt;br /&gt;
* MP3 support thanks to ASlib&lt;br /&gt;
* Stylus and Pad.&lt;br /&gt;
* Draw function.&lt;br /&gt;
* Variable case text.&lt;br /&gt;
* Retrieve info on DS (user name, birthday, language, time/date, etc).&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
To install PAlib follow the instructions [https://github.com/AntonioND/palib here].&lt;br /&gt;
&lt;br /&gt;
==User guide==&lt;br /&gt;
Tutorials can be found [http://code.google.com/p/palib-tutorial-pdf here].&lt;br /&gt;
&lt;br /&gt;
==Screenshots==&lt;br /&gt;
https://dlhb.gamebrew.org/dshomebrew/palib2.png&lt;br /&gt;
&lt;br /&gt;
==Media==&lt;br /&gt;
&#039;&#039;&#039;C/PALib Simple Nintendo DS Platformer&#039;&#039;&#039; ([https://www.youtube.com/watch?v=HzqdLHI0SG8 bl0ckeduser]) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;youtube&amp;gt;HzqdLHI0SG8&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Changelog==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;PAlib 250114 beta | AntonioND&#039;&#039;&#039;&lt;br /&gt;
* [Fix] Flush cache whenever a DMA copy is made so that users of PAlib don&#039;t need to worry about it.&lt;br /&gt;
* [ASlib] Flush data cache when a MP3 file is played from RAM so that the developer doesn&#039;t need to do it.&lt;br /&gt;
* [DMA_Copy] Use safe BlocksDS libnds DMA functions instead of the old PAlib macros.&lt;br /&gt;
* [Fix] Actually send temperature and battery level to the ARM9 from the ARM7.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;PAlib 250107 beta: PAlib lives on | AntonioND&#039;&#039;&#039;&lt;br /&gt;
* [General] PAlib builds and works again, even on DSi consoles.&lt;br /&gt;
* [General] devkitARM build system has been removed in favour of BlocksDS.&lt;br /&gt;
* [General] Repository structure has been refactored so that it&#039;s clearer.&lt;br /&gt;
* [ARM7] The ARM7 cores have been slightly refactored for modern libnds and to support DSi. Also, the libnds exception handler for the ARM7 is now enabled by default.&lt;br /&gt;
* [ASlib] Interrupts are now enabled in the VBL handler of ASlib so that it doesn&#039;t block multithreading.&lt;br /&gt;
* [Fix] The IPC structure is now allocated at runtime instead of using a hardcoded address, which doesn&#039;t work on DSi.&lt;br /&gt;
* [Fix] Several bugs in ASlib have been fixed.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;PAlib 100707 QuickFix: The last PAlib release | fincs&#039;&#039;&#039;&lt;br /&gt;
* [General] Removed the ASlib IPC clear code, it was doing more harm than good.&lt;br /&gt;
* [3DSprites] PA_3DCreateSprite now returns the GFX number.&lt;br /&gt;
* [Linux] Fixed a backslash (\) path to use forward slash (/).&lt;br /&gt;
* [Examples] The updating script screwed up some sound examples, it&#039;s now fixed.&lt;br /&gt;
* [EFS] EFS support was dropped in favor of libfilesystem.&lt;br /&gt;
* [Editors] PN support is now dropped.&lt;br /&gt;
* [Fix] PAlib now works with devkitARM r31.&lt;br /&gt;
* [Sprite] Fixed PA_DeleteSprite bug (thanks BassAceGold).&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
* devkitPro wiki - http://devkitpro.org/wiki/PAlib&lt;br /&gt;
* Google Code - http://code.google.com/p/palib-tutorial-pdf&lt;br /&gt;
* NeoFlash - https://www.neoflash.com/forum/index.php?topic=563.0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:PC utilities for DS]]&lt;br /&gt;
[[Category:NEO Coding Compo 2005]]&lt;/div&gt;</summary>
		<author><name>SkyLyrac</name></author>
	</entry>
	<entry>
		<id>https://www.gamebrew.org/index.php?title=Tetris_3DS&amp;diff=195397</id>
		<title>Tetris 3DS</title>
		<link rel="alternate" type="text/html" href="https://www.gamebrew.org/index.php?title=Tetris_3DS&amp;diff=195397"/>
		<updated>2025-01-10T17:38:08Z</updated>

		<summary type="html">&lt;p&gt;SkyLyrac: The known issues section is no longer required&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox DS Homebrews&lt;br /&gt;
|title=Tetris 3DS&lt;br /&gt;
|image=tetris3dsant.png&lt;br /&gt;
|description=Tetris in 3D.&lt;br /&gt;
|author=AntonioND&lt;br /&gt;
|lastupdated=2025/01/07&lt;br /&gt;
|type=Puzzle&lt;br /&gt;
|version=1.4&lt;br /&gt;
|license=Mixed&lt;br /&gt;
|download=https://github.com/AntonioND/tetris-3ds/releases/download/v1.4/Tetris_3DS_v1.4.zip&lt;br /&gt;
|downloadraw=https://dlhb.gamebrew.org/dshomebrew2/tetris3ds_antonio.rar&lt;br /&gt;
|website=https://github.com/AntonioND/tetris-3ds&lt;br /&gt;
|source=https://github.com/AntonioND/tetris-3ds&lt;br /&gt;
}}&lt;br /&gt;
This is a 3D tetris game for Nintendo DS and DSi that lets you listen to your own MP3 songs while you play.&lt;br /&gt;
&lt;br /&gt;
This was submitted to the Scenery Beta 2008 (NDS Games, 1st place).&lt;br /&gt;
&lt;br /&gt;
==User guide==&lt;br /&gt;
&lt;br /&gt;
Create folder Tetris_3DS in the root of your SD card. Then, add as many songs as you want with the name Song_XX.mp3. The game iterates over all songs until there is a missing number, which will restart the loop. You can also add a song called Menu.mp3, which will play in a loop while in the main menu.&lt;br /&gt;
&lt;br /&gt;
Since version 1.4 the game can also run in DSi mode, so it can also find the files in the internal SD card of the DSi, not just in a flashcard. If you&#039;re running the game from a regular DS, remember to patch your rom with DLDI (if your loader doesn&#039;t do it automatically).&lt;br /&gt;
&lt;br /&gt;
 SD root&lt;br /&gt;
 |&lt;br /&gt;
 |-Tetris_3DS&lt;br /&gt;
   |&lt;br /&gt;
   |-Tetris_3DS.nds (It can be here or somewhere else!)&lt;br /&gt;
   |-Menu.mp3&lt;br /&gt;
   |-Song_00.mp3&lt;br /&gt;
   |-Song_XX.mp3 (From 01 to 99)&lt;br /&gt;
   |-Tetris3DS_Config.dat (Created automatically by the game.)&lt;br /&gt;
&lt;br /&gt;
The game will create a file called Error_Log.txt if there is a decoding error so that you can check which files are problematic.&lt;br /&gt;
&lt;br /&gt;
There is a JUKEBOX option that allows you to listen to the music without having to play the game.&lt;br /&gt;
&lt;br /&gt;
==Controls==&lt;br /&gt;
&lt;br /&gt;
L+R+Select+Start - Switch off DS in main menu&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Classic mode:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Can be controlled with Stylus or Keypad.&lt;br /&gt;
&lt;br /&gt;
Up/Down - Left/Right&lt;br /&gt;
&lt;br /&gt;
Left - Down speed increased&lt;br /&gt;
&lt;br /&gt;
Right - Automatically go down&lt;br /&gt;
&lt;br /&gt;
A or Double tap - Rotate&lt;br /&gt;
&lt;br /&gt;
X - Reserve&lt;br /&gt;
&lt;br /&gt;
Start - Pause&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Multiplayer:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Select+Start - Enter Versus CPU mode &lt;br /&gt;
&lt;br /&gt;
Start - Pause&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 400px;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!style=&amp;quot;width: 25%;&amp;quot;| Player 1 &lt;br /&gt;
!style=&amp;quot;width: 25%;&amp;quot;| Player 2 &lt;br /&gt;
!style=&amp;quot;width: 50%;&amp;quot;| Effect&lt;br /&gt;
|-&lt;br /&gt;
| Up || X || Reserve.&lt;br /&gt;
|-&lt;br /&gt;
| Left/Right || Y/A || Move.&lt;br /&gt;
|-&lt;br /&gt;
| Down || B || Down speed increased.&lt;br /&gt;
|-&lt;br /&gt;
| L || R || Rotate.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Screenshots==&lt;br /&gt;
https://dlhb.gamebrew.org/dshomebrew/tetris3dsant3.png&lt;br /&gt;
https://dlhb.gamebrew.org/dshomebrew/tetris3dsant4.png&lt;br /&gt;
&lt;br /&gt;
https://dlhb.gamebrew.org/dshomebrew/tetris3dsant2.png&lt;br /&gt;
https://dlhb.gamebrew.org/dshomebrew/tetris3dsant5.png&lt;br /&gt;
&amp;lt;!--BEGIN Online Emulator Section--&amp;gt;&lt;br /&gt;
==Online emulator==&lt;br /&gt;
{{EmulatorJS Main&lt;br /&gt;
|width=515px&lt;br /&gt;
|height=384px&lt;br /&gt;
|EJS_backgroundImage=https://www.gamebrew.org/images/d/d4/Tetris3dsant.png&lt;br /&gt;
|EJS_core=desmume2015&lt;br /&gt;
|EJS_gameName=Tetris 3DS&lt;br /&gt;
|EJS_gameUrl=https://dlhb.gamebrew.org/onlineemulators/nds/tetris3dsant.7z&lt;br /&gt;
}}&lt;br /&gt;
{{DS Control Settings}}&lt;br /&gt;
&amp;lt;!--END Online Emulator Section--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Credits==&lt;br /&gt;
Joat, Dovoto and WinterMute for libnds.&lt;br /&gt;
&lt;br /&gt;
Chishm for libfat.&lt;br /&gt;
&lt;br /&gt;
Mollusk for PAlib.&lt;br /&gt;
&lt;br /&gt;
Noda for ASlib.&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
* Author&#039;s website - https://github.com/AntonioND/tetris-3ds&lt;br /&gt;
* Author&#039;s old website - http://www.skylyrac.net/old-site/nds.html&lt;br /&gt;
* SceneBeta - https://nds.scenebeta.com/noticia/tetris-3ds&lt;br /&gt;
&lt;br /&gt;
[[Category:Scenery Beta 2008]]&lt;/div&gt;</summary>
		<author><name>SkyLyrac</name></author>
	</entry>
	<entry>
		<id>https://www.gamebrew.org/index.php?title=Tetris_3DS&amp;diff=195389</id>
		<title>Tetris 3DS</title>
		<link rel="alternate" type="text/html" href="https://www.gamebrew.org/index.php?title=Tetris_3DS&amp;diff=195389"/>
		<updated>2025-01-09T18:12:27Z</updated>

		<summary type="html">&lt;p&gt;SkyLyrac: Update for version 1.4&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox DS Homebrews&lt;br /&gt;
|title=Tetris 3DS&lt;br /&gt;
|image=tetris3dsant.png&lt;br /&gt;
|description=Tetris in 3D.&lt;br /&gt;
|author=AntonioND&lt;br /&gt;
|lastupdated=2025/01/07&lt;br /&gt;
|type=Puzzle&lt;br /&gt;
|version=1.4&lt;br /&gt;
|license=Mixed&lt;br /&gt;
|download=https://github.com/AntonioND/tetris-3ds/releases/download/v1.4/Tetris_3DS_v1.4.zip&lt;br /&gt;
|downloadraw=https://dlhb.gamebrew.org/dshomebrew2/tetris3ds_antonio.rar&lt;br /&gt;
|website=https://github.com/AntonioND/tetris-3ds&lt;br /&gt;
|source=https://github.com/AntonioND/tetris-3ds&lt;br /&gt;
}}&lt;br /&gt;
This is a 3D tetris game for Nintendo DS and DSi that lets you listen to your own MP3 songs while you play.&lt;br /&gt;
&lt;br /&gt;
This was submitted to the Scenery Beta 2008 (NDS Games, 1st place).&lt;br /&gt;
&lt;br /&gt;
==User guide==&lt;br /&gt;
&lt;br /&gt;
Create folder Tetris_3DS in the root of your SD card. Then, add as many songs as you want with the name Song_XX.mp3. The game iterates over all songs until there is a missing number, which will restart the loop. You can also add a song called Menu.mp3, which will play in a loop while in the main menu.&lt;br /&gt;
&lt;br /&gt;
Since version 1.4 the game can also run in DSi mode, so it can also find the files in the internal SD card of the DSi, not just in a flashcard.&lt;br /&gt;
&lt;br /&gt;
 SD root&lt;br /&gt;
 |&lt;br /&gt;
 |-Tetris_3DS&lt;br /&gt;
   |&lt;br /&gt;
   |-Tetris_3DS.nds (It can be here or somewhere else!)&lt;br /&gt;
   |-Menu.mp3&lt;br /&gt;
   |-Song_00.mp3&lt;br /&gt;
   |-Song_XX.mp3 (From 01 to 99)&lt;br /&gt;
   |-Tetris3DS_Config.dat (Created automatically by the game.)&lt;br /&gt;
&lt;br /&gt;
The game will create a file called Error_Log.txt if there is a decoding error so that you can check which files are problematic.&lt;br /&gt;
&lt;br /&gt;
There is a JUKEBOX option that allows you to listen to the music without having to play the game.&lt;br /&gt;
&lt;br /&gt;
==Controls==&lt;br /&gt;
&lt;br /&gt;
L+R+Select+Start - Switch off DS in main menu&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Classic mode:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Can be controlled with Stylus or Keypad.&lt;br /&gt;
&lt;br /&gt;
Up/Down - Left/Right&lt;br /&gt;
&lt;br /&gt;
Left - Down speed increased&lt;br /&gt;
&lt;br /&gt;
Right - Automatically go down&lt;br /&gt;
&lt;br /&gt;
A or Double tap - Rotate&lt;br /&gt;
&lt;br /&gt;
X - Reserve&lt;br /&gt;
&lt;br /&gt;
Start - Pause&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Multiplayer:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Select+Start - Enter Versus CPU mode &lt;br /&gt;
&lt;br /&gt;
Start - Pause&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 400px;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!style=&amp;quot;width: 25%;&amp;quot;| Player 1 &lt;br /&gt;
!style=&amp;quot;width: 25%;&amp;quot;| Player 2 &lt;br /&gt;
!style=&amp;quot;width: 50%;&amp;quot;| Effect&lt;br /&gt;
|-&lt;br /&gt;
| Up || X || Reserve.&lt;br /&gt;
|-&lt;br /&gt;
| Left/Right || Y/A || Move.&lt;br /&gt;
|-&lt;br /&gt;
| Down || B || Down speed increased.&lt;br /&gt;
|-&lt;br /&gt;
| L || R || Rotate.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Screenshots==&lt;br /&gt;
https://dlhb.gamebrew.org/dshomebrew/tetris3dsant3.png&lt;br /&gt;
https://dlhb.gamebrew.org/dshomebrew/tetris3dsant4.png&lt;br /&gt;
&lt;br /&gt;
https://dlhb.gamebrew.org/dshomebrew/tetris3dsant2.png&lt;br /&gt;
https://dlhb.gamebrew.org/dshomebrew/tetris3dsant5.png&lt;br /&gt;
&amp;lt;!--BEGIN Online Emulator Section--&amp;gt;&lt;br /&gt;
==Online emulator==&lt;br /&gt;
{{EmulatorJS Main&lt;br /&gt;
|width=515px&lt;br /&gt;
|height=384px&lt;br /&gt;
|EJS_backgroundImage=https://www.gamebrew.org/images/d/d4/Tetris3dsant.png&lt;br /&gt;
|EJS_core=desmume2015&lt;br /&gt;
|EJS_gameName=Tetris 3DS&lt;br /&gt;
|EJS_gameUrl=https://dlhb.gamebrew.org/onlineemulators/nds/tetris3dsant.7z&lt;br /&gt;
}}&lt;br /&gt;
{{DS Control Settings}}&lt;br /&gt;
&amp;lt;!--END Online Emulator Section--&amp;gt;&lt;br /&gt;
==Known issues==&lt;br /&gt;
Sometimes the game gives an error while loading and both screens, just turn black and the game freezes. &lt;br /&gt;
&lt;br /&gt;
This happens because it gives a write error even if FAT has inited OK. You can stop FAT init if you hold R+L before the moment when the game freezes (After the [Tetris 3DS / by Antonio Niño Díaz] screen). &lt;br /&gt;
&lt;br /&gt;
It won&#039;t load anything from FAT, but the game will work.&lt;br /&gt;
&lt;br /&gt;
==Credits==&lt;br /&gt;
Joat, Dovoto and WinterMute for libnds.&lt;br /&gt;
&lt;br /&gt;
Chishm for libfat.&lt;br /&gt;
&lt;br /&gt;
Mollusk for PAlib.&lt;br /&gt;
&lt;br /&gt;
Noda for ASlib.&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
* Author&#039;s website - https://github.com/AntonioND/tetris-3ds&lt;br /&gt;
* Author&#039;s old website - http://www.skylyrac.net/old-site/nds.html&lt;br /&gt;
* SceneBeta - https://nds.scenebeta.com/noticia/tetris-3ds&lt;br /&gt;
&lt;br /&gt;
[[Category:Scenery Beta 2008]]&lt;/div&gt;</summary>
		<author><name>SkyLyrac</name></author>
	</entry>
	<entry>
		<id>https://www.gamebrew.org/index.php?title=Woopsi&amp;diff=190928</id>
		<title>Woopsi</title>
		<link rel="alternate" type="text/html" href="https://www.gamebrew.org/index.php?title=Woopsi&amp;diff=190928"/>
		<updated>2024-11-02T13:31:28Z</updated>

		<summary type="html">&lt;p&gt;SkyLyrac: Update repository link (the bitbucket one points to GitHub).&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox DS Homebrews&lt;br /&gt;
|title=Woopsi&lt;br /&gt;
|image=Woopsi.png&lt;br /&gt;
|description=Nintendo DS GUI library.&lt;br /&gt;
|author=Ant 512 (Antony Dzeryn)&lt;br /&gt;
|lastupdated=2011/07/21&lt;br /&gt;
|type=Development&lt;br /&gt;
|version=1.3&lt;br /&gt;
|license=Mixed&lt;br /&gt;
|download=https://dlhb.gamebrew.org/dshomebrew2/woopsi.7z?k33p0fil35 1.3 &amp;amp; Demo&lt;br /&gt;
|website=http://woopsi.org&lt;br /&gt;
|source=https://github.com/ant512/Woopsi&lt;br /&gt;
}}&lt;br /&gt;
Woopsi is a Nintendo DS GUI library for rapidly creating user interfaces for homebrew software. Modelled after the AmigaOS windowing system.&lt;br /&gt;
&lt;br /&gt;
It is a BSD-licenced GUI toolkit for the Nintendo DS, written in C++. It features a 2D graphics library with fast clipping routines and a full suite of UI components, including text boxes, scrolling lists, buttons, windows, etc. It can be used to produce everything from simple GUIs to full-blown window managers.&lt;br /&gt;
&lt;br /&gt;
==Features==&lt;br /&gt;
* Support for multiple windows.&lt;br /&gt;
* Full set of components of the user interface.&lt;br /&gt;
* The elements (windows) can be dragged.&lt;br /&gt;
* Windows without frames.&lt;br /&gt;
* Debug mode.&lt;br /&gt;
* Optimized application to draw and erase.&lt;br /&gt;
* System events.&lt;br /&gt;
* Automatic application to collect garbage.&lt;br /&gt;
* Complete API to build new applications.&lt;br /&gt;
* Different types of fonts supported.&lt;br /&gt;
* Oriented design to easily adapt to other programs in C++.&lt;br /&gt;
* Simple API for rapid creation of a graphical user interface.&lt;br /&gt;
* FIFO multitasking, each application runs at a time.&lt;br /&gt;
* Unicode strings encoded with UTF-8.&lt;br /&gt;
* Support for Windows applications (font2font, bmp2font, etc).&lt;br /&gt;
&lt;br /&gt;
==User guide==&lt;br /&gt;
It requires the latest devkitPro and do one of the following things as operating system:&lt;br /&gt;
&lt;br /&gt;
* Windows - 2 methods available. Use the Install.bat found in the folder or copy the folder Woopsi libwoopsi to C:\devkitPro.&lt;br /&gt;
* Linux - Same as the second option of Windows, copy the folder libwoopsi to C:\devkitPro.&lt;br /&gt;
* MacOSX - Compile what is in the folder Woopsi.&lt;br /&gt;
&lt;br /&gt;
To test the installation:&lt;br /&gt;
* Open a command prompt and CD to the template folder (relative to the document) and type &amp;lt;code&amp;gt;make&amp;lt;/code&amp;gt;&lt;br /&gt;
* Open the /template/Release/template.nds ROM file in a DS emulator or copy it to your flash cart and load it up.&lt;br /&gt;
&lt;br /&gt;
==Media==&lt;br /&gt;
&#039;&#039;&#039;Woopsi demo v0.99.3&#039;&#039;&#039; ([https://www.youtube.com/watch?v=aOA650uKf8s Cid2Mizard]) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;youtube&amp;gt;aOA650uKf8s&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Changelog==&lt;br /&gt;
&#039;&#039;&#039;V1.3&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Fixes:&lt;br /&gt;
* Label and TextBox are more efficient when rendering text changes.&lt;br /&gt;
* Removed unused GLYPH_MAP_SIZE constant from fontbase.h.&lt;br /&gt;
* Header file in template moved into include directory.&lt;br /&gt;
* Animation::play() stops if there are no frames to play.&lt;br /&gt;
* Animation::getCurrentFrame() returns NULL if there are no frames.&lt;br /&gt;
* Animation::getCurrentBitmap() returns NULL if there are no bitmaps.&lt;br /&gt;
* Fixed memory leak when deleting SDL framebuffer.&lt;br /&gt;
* Removed extraneous globals from woopsifuncs.cpp.&lt;br /&gt;
* WoopsiString::subString() passes the correct arguments to the WoopsiString constructor.&lt;br /&gt;
* StringIterator::moveTo() ignores attempts to move to negative indices.&lt;br /&gt;
* Improved use of DMA hardware.&lt;br /&gt;
* Updated C# tools.&lt;br /&gt;
* Removed Visual Studio files.&lt;br /&gt;
  &lt;br /&gt;
New Features:&lt;br /&gt;
* Added WoopsiTimer::isRunning().&lt;br /&gt;
* Added SuperBitmap::setX().&lt;br /&gt;
* Added SuperBitmap::setY().&lt;br /&gt;
* Added SuperBitmap::getX().&lt;br /&gt;
* Added SuperBitmap::getY().&lt;br /&gt;
* Added FontConverter, a winforms UI for font2font.&lt;br /&gt;
&lt;br /&gt;
==Credits==&lt;br /&gt;
Coding and design - Antony Dzeryn.&lt;br /&gt;
&lt;br /&gt;
Testing, technical advice, other contributions - Jeff Laing.&lt;br /&gt;
&lt;br /&gt;
PALib independence - Steven Harrison.&lt;br /&gt;
&lt;br /&gt;
Testing and suggestions - John Buxton, Chase, Leonelhs, Carpfish.&lt;br /&gt;
&lt;br /&gt;
Unicode work and libfreetype integration  - Olivier Binda (Lakedaemon).&lt;br /&gt;
&lt;br /&gt;
Testing and gadget contributions - Mark Adamson.&lt;br /&gt;
&lt;br /&gt;
Simian Zombie logo - John Clay.&lt;br /&gt;
&lt;br /&gt;
Thanks to - The devKitPro team.&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
* Official website - http://woopsi.org&lt;br /&gt;
* Bitbucket - https://bitbucket.org/ant512/woopsi&lt;/div&gt;</summary>
		<author><name>SkyLyrac</name></author>
	</entry>
	<entry>
		<id>https://www.gamebrew.org/index.php?title=WolveSlayer&amp;diff=179547</id>
		<title>WolveSlayer</title>
		<link rel="alternate" type="text/html" href="https://www.gamebrew.org/index.php?title=WolveSlayer&amp;diff=179547"/>
		<updated>2024-08-05T00:31:44Z</updated>

		<summary type="html">&lt;p&gt;SkyLyrac: All the WTFPL code is gone, the license is now 100% MIT.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox DS Homebrews&lt;br /&gt;
|title=WolveSlayer&lt;br /&gt;
|image=wolveslayer.png&lt;br /&gt;
|description=3D hack n slash game.&lt;br /&gt;
|author=Firehazard Studio, AntonioND&lt;br /&gt;
|lastupdated=2024/07/31&lt;br /&gt;
|type=Action&lt;br /&gt;
|version=v20240731&lt;br /&gt;
|license=MIT&lt;br /&gt;
|download=https://dlhb.gamebrew.org/dshomebrew/wolveslayer.7z?0714&lt;br /&gt;
|website=https://github.com/AntonioND/wolveslayer/&lt;br /&gt;
|source=https://github.com/AntonioND/wolveslayer/&lt;br /&gt;
}}&lt;br /&gt;
WolveSlayer is a 3D hack&#039;n&#039;slash game for the NDS. Its graphics engine uses effects that have yet to be seen on commercial DS games.&lt;br /&gt;
&lt;br /&gt;
Developed by Firehazard Studio, this homebrew game was released for the NEO Spring Coding Compo 2007, where it won 1st place in the GBA/NDS Game category. &lt;br /&gt;
&lt;br /&gt;
In 2024, the game was ported to [https://github.com/blocksds/sdk BlocksDS] by AntonioND to support modern tools.&lt;br /&gt;
&lt;br /&gt;
==Features==&lt;br /&gt;
* 3D graphics (effect of lighting and bump mapping).&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
&amp;lt;tabber&amp;gt;&lt;br /&gt;
|-|BlocksDS port=&lt;br /&gt;
&lt;br /&gt;
Copy the .nds file to your storage device.&lt;br /&gt;
&lt;br /&gt;
|-|Neoflash compo ver.=&lt;br /&gt;
&lt;br /&gt;
[[DLDI|DLDI]] patch the ROM if needed and copy it to your flashcard.&lt;br /&gt;
&lt;br /&gt;
One of those ROMs has an icon and ROM infos attached. But this causes bugs on some flashcards (e.g. sccf and ds-x). If you have trouble use the other rom (blank rom). &lt;br /&gt;
&lt;br /&gt;
Don&#039;t forget to copy the folder wolveslayer to the root of your flashcard.&lt;br /&gt;
&amp;lt;/tabber&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==User guide==&lt;br /&gt;
Main aim of this game is to find and slay down a big grey wolf (you will meet smaller ones too). Of course you will lose if they kill you. &lt;br /&gt;
&lt;br /&gt;
==Controls==&lt;br /&gt;
D-Pad - Move character&lt;br /&gt;
&lt;br /&gt;
A - Open doors (so far only one)&lt;br /&gt;
&lt;br /&gt;
B - Swing the sword&lt;br /&gt;
&lt;br /&gt;
==Screenshots==&lt;br /&gt;
https://dlhb.gamebrew.org/dshomebrew/wolveslayer2.png&lt;br /&gt;
https://dlhb.gamebrew.org/dshomebrew/wolveslayer3.png&lt;br /&gt;
&lt;br /&gt;
https://dlhb.gamebrew.org/dshomebrew/wolveslayer4.png&lt;br /&gt;
https://dlhb.gamebrew.org/dshomebrew/wolveslayer5.png&lt;br /&gt;
&lt;br /&gt;
==Media==&lt;br /&gt;
&#039;&#039;&#039;WolveSlayer (walktrough and killing endbss)&#039;&#039;&#039; ([https://www.youtube.com/watch?v=q-SZ4lWB1Qs DrunkencoderPayk]) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;youtube&amp;gt;q-SZ4lWB1Qs&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Online Emulator==&lt;br /&gt;
{{#tag:html|&lt;br /&gt;
&amp;lt;div style=&#039;width:520px;height:390px;max-width:100%&#039;&amp;gt;&amp;lt;div id=&#039;game&#039;&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script type=&#039;text/javascript&#039;&amp;gt;&lt;br /&gt;
{{DS EmulatorJS Settings}}&lt;br /&gt;
EJS_core = &#039;nds&#039;;&lt;br /&gt;
EJS_gameName = &amp;quot;WolveSlayer&amp;quot;;&lt;br /&gt;
EJS_gameUrl = &#039;https://dlhb.gamebrew.org/onlineemulators/nds/wolveslayer.7z&#039;;&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
{{EmulatorJS Loader}}&lt;br /&gt;
}}&lt;br /&gt;
{{DS Control Settings}}&lt;br /&gt;
&amp;lt;!--END Online Emulator Section--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Changelog==&lt;br /&gt;
&#039;&#039;&#039;2024/07/31&#039;&#039;&#039; &lt;br /&gt;
* The internal code of the game engine has been cleaned up and reorganized.&lt;br /&gt;
* Some of the code that loads assets has been optimized.&lt;br /&gt;
* Many checks have been added to the code to make the code more memory-safe.&lt;br /&gt;
* A buffer underflow buffer has been fixed. This sometimes manifested as video glitches when swinging the sword to the right of the screen (but only with custom builds, not with the builds on GitHub).&lt;br /&gt;
* The MOD player has been replaced by LibXM7. This reduces the amount of code to maintain in this repository and will mean that this game gets the benefits of other projects that also use LibXM7 and fix bugs there.&lt;br /&gt;
* The code of the repository has been licensed under the MIT license with permission from Payk.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2024/07/14&#039;&#039;&#039; &lt;br /&gt;
* This version fixes the super slow speed when loading files, which was particularly bad on DSi. It also changes the format of fatal error messages so that they are more readable.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2024/07/12&#039;&#039;&#039; (AntonioND)&lt;br /&gt;
* First release of the port to BlocksDS.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2007/03/24&#039;&#039;&#039; &lt;br /&gt;
* This version has a bit shorter loading times in the first map and solved umlaut problem.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2007/03/20&#039;&#039;&#039; (Firehazard Studio)&lt;br /&gt;
* Released for the Neoflash Spring Coding Compo 07.&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
* Author&#039;s website (Payk) - [https://web.archive.org/web/20071212183823/http://payk.drunkencoders.com http://payk.drunkencoders.com] (archived)&lt;br /&gt;
* GitHub (AntonioND) - https://github.com/AntonioND/wolveslayer/releases/&lt;br /&gt;
* NeoFlash - https://www.neoflash.com/forum/index.php?topic=3895.0&lt;br /&gt;
* Forum - https://forums.gamebrew.org/threads/old-release-wolveslayer-source-code.601/&lt;br /&gt;
&lt;br /&gt;
[[Category:NEO Spring Coding Compo 2007]]&lt;/div&gt;</summary>
		<author><name>SkyLyrac</name></author>
	</entry>
	<entry>
		<id>https://www.gamebrew.org/index.php?title=Volumetric_Shadow_Demo&amp;diff=179546</id>
		<title>Volumetric Shadow Demo</title>
		<link rel="alternate" type="text/html" href="https://www.gamebrew.org/index.php?title=Volumetric_Shadow_Demo&amp;diff=179546"/>
		<updated>2024-08-05T00:21:41Z</updated>

		<summary type="html">&lt;p&gt;SkyLyrac: Add link to port of the demo to BlocksDS&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox DS Homebrews&lt;br /&gt;
|title=Volumetric Shadow Demo&lt;br /&gt;
|image=vsd.png&lt;br /&gt;
|description=NDS Tech Demo, formerly know as the Stencil Shadow Demo.&lt;br /&gt;
|author=Rob (silent_code, R.H.L.)&lt;br /&gt;
|lastupdated=2024/08/05&lt;br /&gt;
|type=Demos&lt;br /&gt;
|version=1.7.1&lt;br /&gt;
|license=Mixed&lt;br /&gt;
|download=https://dlhb.gamebrew.org/dshomebrew/vsd.7z&lt;br /&gt;
|downloadraw=https://dlhb.gamebrew.org/dshomebrew/vsd.7z&lt;br /&gt;
|website=http://www.robs-basement.de/#RB_NDS_VSD&lt;br /&gt;
|source=https://github.com/AntonioND/volumetric_shadow_demo&lt;br /&gt;
}}&lt;br /&gt;
Volumetric Shadow Demo is a NDS tech demo program formerly know as the Stencil Shadow Demo, and later Volume Shadow Demo. This small open source program demonstrates, among other things, some of the NDS&#039; graphics hardware capabilities.&lt;br /&gt;
&lt;br /&gt;
In 2024, the demo was ported to [https://github.com/blocksds/sdk BlocksDS] by AntonioND to support modern tools.&lt;br /&gt;
&lt;br /&gt;
==Features==&lt;br /&gt;
* Hardware accelerated volumetric shadowing.&lt;br /&gt;
* Motion blur with video capture, using only one VRAM bank, at 60 FPS.&lt;br /&gt;
* Hardware lighting, texturing, fogging, antialiasing etc.&lt;br /&gt;
* Display brightness control.&lt;br /&gt;
* Viewport scissoring (thanks to gabebear off the gbadev.org forum).&lt;br /&gt;
* Loading binary and text files from disk (through libfat).&lt;br /&gt;
* Converting .tga 24/32bit image data to 16bit nds textures.&lt;br /&gt;
* Displaying a custom font and a text area over a background image, all loaded from disk.&lt;br /&gt;
* Smooth touch input.&lt;br /&gt;
* Simple frame rate counting and some other rendering status info.&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
&amp;lt;tabber&amp;gt;&lt;br /&gt;
|-|BlocksDS port=&lt;br /&gt;
&lt;br /&gt;
Copy the .nds file to your storage device.&lt;br /&gt;
&lt;br /&gt;
|-|Neoflash compo ver.=&lt;br /&gt;
&lt;br /&gt;
Copy the .nds file to the root of your card. &lt;br /&gt;
&lt;br /&gt;
You will see all (data) files are located in the vsd_data directory.&lt;br /&gt;
&lt;br /&gt;
Copy them into the /data/ folder on the root of your card. Or alternatively, directly into the root.&lt;br /&gt;
&lt;br /&gt;
Create the data directory, if not already present on your card.&lt;br /&gt;
&amp;lt;/tabber&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Files that need to be copied:&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
vsd_###.nds (or vsd_###_fcsr.nds, in which case nothing else is needed) &amp;lt;br&amp;gt;&lt;br /&gt;
doll.char &amp;lt;br&amp;gt;&lt;br /&gt;
room.char &amp;lt;br&amp;gt;&lt;br /&gt;
shadow.char &amp;lt;br&amp;gt;&lt;br /&gt;
font.pbi &amp;lt;br&amp;gt;&lt;br /&gt;
splash.pbi &amp;lt;br&amp;gt;&lt;br /&gt;
loading.pbi &amp;lt;br&amp;gt;&lt;br /&gt;
doll256.tga &amp;lt;br&amp;gt;&lt;br /&gt;
test.tga &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Depending on your device, you may have to manually patch the .nds file to make it work with [[DLDI|DLDI]]. Your card&#039;s manufacturer can help you with how to accomplish that.&lt;br /&gt;
&lt;br /&gt;
==User guide==&lt;br /&gt;
===Initialization===&lt;br /&gt;
Prepare the hardware by setting the flush mode to manual and w-depth sorting with:&lt;br /&gt;
 glFlush(GL_TRANS_MANUALSORT | GL_WBUFFERING);&lt;br /&gt;
&lt;br /&gt;
Do so in the frame before the frame you will draw the shadows. Usually, you would set this up when initializing the application and flush each frame with those settings.&lt;br /&gt;
&lt;br /&gt;
You might need to sort your translutient polygons/meshes. Remember, that certain volumetric shadow geometry configurations will cause artifacts.&lt;br /&gt;
&lt;br /&gt;
===Render volumetric shadows===&lt;br /&gt;
These are the three basic steps you need to follow to render volumetric shadows.&lt;br /&gt;
&lt;br /&gt;
1) Render all the shadow casting and receiving geometry as usually.&lt;br /&gt;
&lt;br /&gt;
2) For every shadow geometry, draw the Stencil Mask. Shadow polygons must be translutient, so enable blending and render the shadow geometry&#039;s front using the following settings:&lt;br /&gt;
 glPolyFmt(POLY_ALPHA(1) | POLY_CULL_FRONT | POLY_ID(0) | POLY_SHADOW);&lt;br /&gt;
&lt;br /&gt;
Alpha must be between 1 and 30 and ID also must be 0.&lt;br /&gt;
 &lt;br /&gt;
3) The Stencil Shadow: Now, finally draw the shadow geometry&#039;s back with these settings:&lt;br /&gt;
 glPolyFmt(POLY_ALPHA(20) | POLY_CULL_BACK | POLY_ID(63) | POLY_SHADOW);&lt;br /&gt;
&lt;br /&gt;
Again, alpha needs to be between 1 and 30, but this time ID must not be 0. &lt;br /&gt;
&lt;br /&gt;
Now you should have a volume shadow on screen. Repeat steps two and three for all other shadow geometry.&lt;br /&gt;
&lt;br /&gt;
Tutorials can be found at [http://www.code-basement.net/files/nds/vsd/volumetric-shadows-nds.tutorial.txt the official website].&lt;br /&gt;
&lt;br /&gt;
==Controls==&lt;br /&gt;
&#039;&#039;&#039;During demo:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Touch (Stylus) - Look&lt;br /&gt;
&lt;br /&gt;
D-Pad - Move the camera (forward/backward)&lt;br /&gt;
&lt;br /&gt;
A/B/X/Y - Move the character&lt;br /&gt;
&lt;br /&gt;
Start - Reset scene&lt;br /&gt;
&lt;br /&gt;
Select+A - toggle shadowing&lt;br /&gt;
&lt;br /&gt;
Select+B - toggle texturing&lt;br /&gt;
&lt;br /&gt;
Select+X - toggle lighting&lt;br /&gt;
&lt;br /&gt;
Select+Y - toggle capturing (motion blur)&lt;br /&gt;
&lt;br /&gt;
R+D-Pad - Move a scissor box&lt;br /&gt;
&lt;br /&gt;
L+D-Pad - Move the camera (up/down)&lt;br /&gt;
&lt;br /&gt;
R+L+Up/Down - Change the brightness&lt;br /&gt;
&lt;br /&gt;
R+L+Start - Reset the scene and the brightness&lt;br /&gt;
&lt;br /&gt;
==Screenshots==&lt;br /&gt;
https://dlhb.gamebrew.org/dshomebrew/vsd2.png&lt;br /&gt;
https://dlhb.gamebrew.org/dshomebrew/vsd3.png&lt;br /&gt;
&lt;br /&gt;
==Compatibility==&lt;br /&gt;
&#039;&#039;&#039;Emulators:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
When using [http://dev-scene.com/NDS/FCSR_Tutorial FCSR], it is mostly compatible with no$gba 2.6 (the emulator is still missing some features). Other emulators are not supported.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hardware:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Compatible with DLDI-able FAT cards, tested with SLOT1 M3 Real via the firmware&#039;s autopatching. Through [http://dev-scene.com/NDS/FCSR_Tutorial FCSR], it is also compatible with older SLOT2 (GBA) NOR cartridges, tested with NeoFlash 512Mb.&lt;br /&gt;
&lt;br /&gt;
==Changelog==&lt;br /&gt;
&#039;&#039;&#039;Revision 7.1&#039;&#039;&#039;&lt;br /&gt;
* Update format of documentation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Revision 7.0&#039;&#039;&#039;&lt;br /&gt;
* Migrated to BlocksDS.&lt;br /&gt;
* Switched to using NitroFS instead of libfat.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Revision 6.0&#039;&#039;&#039;&lt;br /&gt;
* Fixed the tutorial (thanks to zeruda at gabdev).&lt;br /&gt;
* Fixed a typo in the readme (thanks to jello!) and updated it.&lt;br /&gt;
* Cleaned up console initialization and proper use of libnds&#039; definitions.&lt;br /&gt;
* Fixed material/lighting bug.&lt;br /&gt;
* Added and fixed come source comments.&lt;br /&gt;
* Fixed initialization function.&lt;br /&gt;
* Fixed the view class and its usage.&lt;br /&gt;
* Replaced the floating point gluPerspective() whith its fixed point counterpart.&lt;br /&gt;
* Reworked some parts of the mesh rendering.&lt;br /&gt;
* Removed last bits of &amp;quot;useless stuff.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Revision 5.1&#039;&#039;&#039;&lt;br /&gt;
* Refactored and fixed the scissor class.&lt;br /&gt;
* Fixed fopen() usage.&lt;br /&gt;
* Reduced file path to 31 (+ \0) characters and renamed some files.&lt;br /&gt;
* Cleaned up glEnable() usage.&lt;br /&gt;
* Added vertex and primitive list RAM usage display.&lt;br /&gt;
* Added free render buffer lines display.&lt;br /&gt;
* Readme has been fixed and updated.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Revision 5.0&#039;&#039;&#039;&lt;br /&gt;
* Renamed to &amp;quot;Volumetric Shadow Demo&amp;quot;.&lt;br /&gt;
* Fixed input bug: textures could not be toggled.&lt;br /&gt;
* Fixed: Single &amp;quot;include all&amp;quot; header style was remedied with only including and declaring what is needed in each compilation unit.&lt;br /&gt;
* Restructured some source files.&lt;br /&gt;
* Removed ARM7 source file and rearranged the project to ARM9 only (Using the default ARM7 binary).&lt;br /&gt;
* Changed to unmodified default Makefile.&lt;br /&gt;
* Changed the source usage &amp;quot;policy&amp;quot; a little bit.&lt;br /&gt;
* Separated the tutorial from the readme.&lt;br /&gt;
* Readme has been updated accordingly.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Revision 4.0&#039;&#039;&#039;&lt;br /&gt;
* Did quite some source clean-up, rewriting and rearranging.&lt;br /&gt;
* Added view and scissor box classes.&lt;br /&gt;
* Added data directory support.&lt;br /&gt;
* Added better error detection and handling.&lt;br /&gt;
* Changed fog table generation.&lt;br /&gt;
* Refactored a lot of variables and functions.&lt;br /&gt;
* Added some more comments.&lt;br /&gt;
* Fixed some typos in the readme and updated it.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Revision 3.0&#039;&#039;&#039;&lt;br /&gt;
* Changed file system to libfat.&lt;br /&gt;
* Added frame rate counter.&lt;br /&gt;
* Added touch input smoothing (still need to fix the slight drifting).&lt;br /&gt;
* Fixed the fog color.&lt;br /&gt;
* Rearranged and cleaned up the sources.&lt;br /&gt;
* Updated and fixed the readme.&lt;br /&gt;
* Cleaned up and fixed the tutorial.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Revision 2.0&#039;&#039;&#039;&lt;br /&gt;
* Moved to devkitARM R23b.&lt;br /&gt;
* Updated to libnds 20071023.&lt;br /&gt;
* Fixed the readme.&lt;br /&gt;
* Slightly changed the .pbi format - old data and routines are incompatible.&lt;br /&gt;
* Fixed &amp;quot;odd&amp;quot; loading routines.&lt;br /&gt;
* Fixed some minor bugs.&lt;br /&gt;
* Cleaned up the sources a little bit.&lt;br /&gt;
* Added some info about the .tga format in &amp;quot;tgaloader.cpp&amp;quot;.&lt;br /&gt;
* Added an overview of controls to the bottom screen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Revision 1.2&#039;&#039;&#039;&lt;br /&gt;
* Fixed and rearranged some things in the readme.&lt;br /&gt;
* Changed the term &amp;quot;shadow volumes&amp;quot; to the more precise term &amp;quot;volume shadows&amp;quot; in the readme.&lt;br /&gt;
* Added a tutorial section.&lt;br /&gt;
* Updated to libnds 20070503.&lt;br /&gt;
* Added hardware fog.&lt;br /&gt;
* Added capture support and a slight motion blur effect.&lt;br /&gt;
* Added some new controls.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Revision 1.1&#039;&#039;&#039;&lt;br /&gt;
* Fixed and rearranged some things in the readme.&lt;br /&gt;
* Updated to libnds 2007050.&lt;br /&gt;
* Removed my FIX versions of previously &#039;broken&#039; libnds funktions.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Revision 1.0&#039;&#039;&#039;&lt;br /&gt;
* Fixed and added things to the readme: additional thanks, change log, controls etc.&lt;br /&gt;
* Replaced the shadow volume with a better suited (and simpler) one.&lt;br /&gt;
* Fixed the controls.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.0.0&#039;&#039;&#039;&lt;br /&gt;
* Initial release.&lt;br /&gt;
&lt;br /&gt;
==Credits==&lt;br /&gt;
It was built with devkitARM R23b, libnds 20071023 and libfat 20070127 from the libnds &amp;quot;touch_look&amp;quot; example (as a project kick-start), so credit and thanks go out to their respective authors.&lt;br /&gt;
&lt;br /&gt;
Credit also goes to gabebear for the scissor pick matrix implementation.&lt;br /&gt;
&lt;br /&gt;
Very special thanks go out to Larry E. and Brandon M. for helping with the hardware.&lt;br /&gt;
&lt;br /&gt;
Special thanks to tepples, simonjhall and Alphanoob.&lt;br /&gt;
&lt;br /&gt;
Also, greetings to everybody at the gbadev.org forums.&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
* Author&#039;s website - http://www.robs-basement.de/#RB_NDS_VSD&lt;/div&gt;</summary>
		<author><name>SkyLyrac</name></author>
	</entry>
	<entry>
		<id>https://www.gamebrew.org/index.php?title=Tales_of_Dagur&amp;diff=179545</id>
		<title>Tales of Dagur</title>
		<link rel="alternate" type="text/html" href="https://www.gamebrew.org/index.php?title=Tales_of_Dagur&amp;diff=179545"/>
		<updated>2024-08-05T00:18:04Z</updated>

		<summary type="html">&lt;p&gt;SkyLyrac: Add link to port of the game to BlocksDS&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox DS Homebrews&lt;br /&gt;
|title=Tales of Dagur&lt;br /&gt;
|image=talesofdagur.png&lt;br /&gt;
|description=A complete RPG game on DS.&lt;br /&gt;
|author=LiraNuna&lt;br /&gt;
|lastupdated=2006/03/26&lt;br /&gt;
|type=Role Playing&lt;br /&gt;
|version=2&lt;br /&gt;
|license=Mixed&lt;br /&gt;
|download=https://dlhb.gamebrew.org/dshomebrew/talesofdagur.7z?k33p0fil35&lt;br /&gt;
|downloadraw=https://dlhb.gamebrew.org/dshomebrew/talesofdagur.7z&lt;br /&gt;
|website=http://www.talesofdagur.com/main/index.php&lt;br /&gt;
|source=https://github.com/AntonioND/talesofdagur&lt;br /&gt;
}}&lt;br /&gt;
Tales of Dagur is a complete RPG homebrew for the NDS.&lt;br /&gt;
&lt;br /&gt;
It was released for the NEO Spring Coding Compo 2006 (NDS Games, 1st place).&lt;br /&gt;
&lt;br /&gt;
In 2024, the game was ported to [https://github.com/blocksds/sdk BlocksDS] by AntonioND to support modern tools, DLDI and DSi.&lt;br /&gt;
&lt;br /&gt;
==User guide==&lt;br /&gt;
The kingdom of Dagur is in deep troubles: The holy stone that protects the kingdom has been stolen! Further more, the queen of Dagur has disappeared. &lt;br /&gt;
&lt;br /&gt;
A young lad named Alex is summoned by the king to fix the situation. Help Alex return the holy stone, find the queen, and by that save the kingdom!&lt;br /&gt;
&lt;br /&gt;
Don&#039;t forget to equip weapons!&lt;br /&gt;
&lt;br /&gt;
==Controls==&lt;br /&gt;
&#039;&#039;&#039;In game:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
D-Pad - Movement&lt;br /&gt;
&lt;br /&gt;
A - Perform Action&lt;br /&gt;
&lt;br /&gt;
B - Dash&lt;br /&gt;
&lt;br /&gt;
Start - In-game menu&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;In battle or shop:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
D-Pad - Scroll through options&lt;br /&gt;
&lt;br /&gt;
A - Select&lt;br /&gt;
&lt;br /&gt;
B - Cancel&lt;br /&gt;
&lt;br /&gt;
==Screenshots==&lt;br /&gt;
https://dlhb.gamebrew.org/dshomebrew/talesofdagur2.png&lt;br /&gt;
https://dlhb.gamebrew.org/dshomebrew/talesofdagur3.png&lt;br /&gt;
&lt;br /&gt;
https://dlhb.gamebrew.org/dshomebrew/talesofdagur4.png&lt;br /&gt;
https://dlhb.gamebrew.org/dshomebrew/talesofdagur5.png&lt;br /&gt;
&amp;lt;!--BEGIN Online Emulator Section--&amp;gt;&lt;br /&gt;
==Online Emulator==&lt;br /&gt;
{{#tag:html|&lt;br /&gt;
&amp;lt;div style=&#039;width:520px;height:390px;max-width:100%&#039;&amp;gt;&amp;lt;div id=&#039;game&#039;&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script type=&#039;text/javascript&#039;&amp;gt;&lt;br /&gt;
{{DS EmulatorJS Settings}}&lt;br /&gt;
EJS_core = &#039;desmume2015&#039;;&lt;br /&gt;
EJS_gameName = &amp;quot;Tales of Dagur&amp;quot;;&lt;br /&gt;
EJS_gameUrl = &#039;https://dlhb.gamebrew.org/onlineemulators/nds/talesofdagur.7z&#039;;&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
{{EmulatorJS Loader}}&lt;br /&gt;
}}&lt;br /&gt;
{{DS Control Settings}}&lt;br /&gt;
&amp;lt;!--END Online Emulator Section--&amp;gt;&lt;br /&gt;
==Compatibility==&lt;br /&gt;
Tested on iDeaS.&lt;br /&gt;
&lt;br /&gt;
==Credits==&lt;br /&gt;
Code: LiraNuna.&lt;br /&gt;
&lt;br /&gt;
Moral support and font tileset: Chetic.&lt;br /&gt;
&lt;br /&gt;
Storyboard, Script, &amp;amp; Music collection: RVman.&lt;br /&gt;
&lt;br /&gt;
Graphics: Enterbrain.&lt;br /&gt;
&lt;br /&gt;
Mapping and level design: Nikolas Lahtinen.&lt;br /&gt;
&lt;br /&gt;
Beta-testing: Cameron, Chetic and Nikolas.&lt;br /&gt;
&lt;br /&gt;
Special thanks to Rat for the splash screen.&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
* Official website - [https://web.archive.org/web/20090617202956/http://www.talesofdagur.com/main/index.php http://www.talesofdagur.com/main/index.php] (archived)&lt;br /&gt;
* Author&#039;s website - [https://web.archive.org/web/20100105060038/https://www.liranuna.com/nds-projects/tales-of-dagur https://www.liranuna.com/nds-projects/tales-of-dagur] (archived)&lt;br /&gt;
* NeoFlash - https://www.neoflash.com/forum/index.php?topic=1917.0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:NEO Spring Coding Compo 2006]]&lt;/div&gt;</summary>
		<author><name>SkyLyrac</name></author>
	</entry>
	<entry>
		<id>https://www.gamebrew.org/index.php?title=Meteora_Galatic_Battle&amp;diff=179544</id>
		<title>Meteora Galatic Battle</title>
		<link rel="alternate" type="text/html" href="https://www.gamebrew.org/index.php?title=Meteora_Galatic_Battle&amp;diff=179544"/>
		<updated>2024-08-04T23:30:59Z</updated>

		<summary type="html">&lt;p&gt;SkyLyrac: Add link to port of the game to BlocksDS&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox DS Homebrews&lt;br /&gt;
|title=Meteora Galactic Battle&lt;br /&gt;
|image=meteora.png&lt;br /&gt;
|description=Meteroa is a space/fantasy based god-sim game by J.&lt;br /&gt;
|author=Jerome Wax (X-Blaster)&lt;br /&gt;
|lastupdated=2007/08/21&lt;br /&gt;
|type=Simulation&lt;br /&gt;
|version=0.9.2&lt;br /&gt;
|license=Mixed&lt;br /&gt;
|download=https://dlhb.gamebrew.org/dshomebrew/meteora.7z?k33p0fil35 0.8.0 &amp;amp; 0.9.2&lt;br /&gt;
|downloadraw=http://meteora.lo2k.net/download/meteora-src.rar&lt;br /&gt;
|website=http://meteora.lo2k.net&lt;br /&gt;
|source=https://github.com/AntonioND/meteora&lt;br /&gt;
}}&lt;br /&gt;
Meteroa is a space fantasy based god-sim game by Jerome Wax that lies somewhere between populous, world of sand and pong. From over 8 months of development, it is a game of strategy action in space.&lt;br /&gt;
&lt;br /&gt;
It was submitted to the NEO Summer Coding Compo 2007 (NDS Game, 3rd place). Verion 0.8.0 Meteora Evolution was presented in the Dev-fr Coding Compo 2007 (Game, 2nd place).&lt;br /&gt;
&lt;br /&gt;
In 2024, the game was ported to [https://github.com/blocksds/sdk BlocksDS] by AntonioND to support modern tools and for better compatibility on DSi mode.&lt;br /&gt;
&lt;br /&gt;
==Feature==&lt;br /&gt;
* An engine containing a garbage collector to avoid memory leaks during development.&lt;br /&gt;
* Use the microphone for certain powers.&lt;br /&gt;
* Use of gestures.&lt;br /&gt;
* Visual effects (explosions, earthquakes, meteor streaks).&lt;br /&gt;
* Use of dual-screen 3D (thanks to the ulib).&lt;br /&gt;
* Sprites more than 1200 on the screen.&lt;br /&gt;
&lt;br /&gt;
==User guide==&lt;br /&gt;
Meteora is an action version of meteos. It is a game where planets attack each other. You control one of the two planets and by sending mana your goal is to get your opponent&#039;s life to zero before you do.&lt;br /&gt;
&lt;br /&gt;
You and your opponent have:&lt;br /&gt;
* Mana (to use your powers).&lt;br /&gt;
* A shield that constantly regenerates.&lt;br /&gt;
* The clean energy of your planet.&lt;br /&gt;
&lt;br /&gt;
Whenever you send an attack up the screen, your opponent will receive it (planets can be several light years apart). Your opponent can deflect your attacks as you might, ie by using his God Powers.&lt;br /&gt;
&lt;br /&gt;
You must therefore send as many attacks as possible towards your opponent while trying to stop the attacks coming from your opponent.&lt;br /&gt;
&lt;br /&gt;
===Mana===&lt;br /&gt;
Your planet has a certain amount of mana you regain all the time. Free the mana to deflect, destroy the enemy attacks.&lt;br /&gt;
&lt;br /&gt;
Your Stylus acts as a magnet to which you belong. The more you&#039;re ready for a ball of mana, the more you attract, the more you are away, your pen is less effective. Keep this principle in mind as you play. To successfully send an attack so do not give a boost with the stylus but with your attack.&lt;br /&gt;
&lt;br /&gt;
===Powers of God===&lt;br /&gt;
You can at any time use your powers of god. However, you should have enough mana and respect the cooldown (cooldown).&lt;br /&gt;
&lt;br /&gt;
Some powers require additional action on your part such as creating glyphs or a certain breath.&lt;br /&gt;
&lt;br /&gt;
The list of powers is quite long, it is suggested to read [http://meteora.lo2k.net/Master/pouvoirs the list of powers] for more information of each of them.&lt;br /&gt;
&lt;br /&gt;
===Attacks===&lt;br /&gt;
* &#039;&#039;&#039;Instant:&#039;&#039;&#039;&lt;br /&gt;
** Send a volley of meteorites towards your opponent (e.g. Multiple Shot). A formidable weapon, the more you use it, the less its cost and reload time will be.&lt;br /&gt;
** You can direct your attacks with your stylus.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Charged:&#039;&#039;&#039;&lt;br /&gt;
** These attacks will load over time (e.g. Frost Flame). 10 to 15 seconds and your mana size is maximum. Leave no respite and send this kind of monster on your opponent.&lt;br /&gt;
** Merge the different types of charged mana together, they will grow even faster. Also remember to bring them back to your planet to grow your mana.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Shrapnel:&#039;&#039;&#039;&lt;br /&gt;
** The shrapnel attack explodes at the slightest shock with an attack from your opponent. Indispensable to decimate an enemy attack or to create an effective defense.&lt;br /&gt;
** Merge there with a charged attack to make it even more effective. If you manage to merge several shrapnel between them ... your attack can become ultimate.&lt;br /&gt;
&lt;br /&gt;
===Defenses===&lt;br /&gt;
* &#039;&#039;&#039;God&#039;s wind:&#039;&#039;&#039;&lt;br /&gt;
** The Wind of God can repel enemy attacks or send your own attacks more effectively. When you activate it, you have a limited time of use (icons available in the upper right corner of the bottom screen). If you blow on the Nintendo DS while the icon is visible, your breath will be transmitted in the game and it will allow many things to happen.&lt;br /&gt;
** Be careful not to hyperventilate. The more you use it, the longer its reload time...&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Change of sides:&#039;&#039;&#039;&lt;br /&gt;
** When you activate this spell, you will need to perform a glyph in a limited time. &lt;br /&gt;
** To do this, you have to touch the yellow symbols before they disappear. It is also necessary to make sure that nothing touches a symbol during the invocation of this spell. If you can do it right, whatever is on the screen will be yours. If you perform it during an enemy attack, that attack will be in your possession. You are free to return it to your opponent or to attract it to your planet in order to benefit from a mana bonus.&lt;br /&gt;
** If you have a hard time at first, use it in conjunction with god&#039;s wind, so that the bottom part of the screen is blank while the glyph is running.&lt;br /&gt;
&lt;br /&gt;
===Power ups===&lt;br /&gt;
* &#039;&#039;&#039;Mana increase:&#039;&#039;&#039;&lt;br /&gt;
** You can increase the maximum mana rate and the speed of your mana gain. Don&#039;t overlook this kind of power, they can actually play a big part in the game. Be careful though, the more you use them, the more they cost.&lt;br /&gt;
&lt;br /&gt;
==Controls==&lt;br /&gt;
Up/Down - Release mana&lt;br /&gt;
&lt;br /&gt;
Stylus - Attract mana&lt;br /&gt;
&lt;br /&gt;
L/R - Use God Powers&lt;br /&gt;
&lt;br /&gt;
==Screenshots==&lt;br /&gt;
https://dlhb.gamebrew.org/dshomebrew/meteora2.png&lt;br /&gt;
https://dlhb.gamebrew.org/dshomebrew/meteora4.png&lt;br /&gt;
&lt;br /&gt;
https://dlhb.gamebrew.org/dshomebrew/meteora3.png&lt;br /&gt;
https://dlhb.gamebrew.org/dshomebrew/meteora5.png&lt;br /&gt;
&amp;lt;!--BEGIN Online Emulator Section--&amp;gt;&lt;br /&gt;
==Online Emulator==&lt;br /&gt;
{{#tag:html|&lt;br /&gt;
&amp;lt;div style=&#039;width:520px;height:390px;max-width:100%&#039;&amp;gt;&amp;lt;div id=&#039;game&#039;&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script type=&#039;text/javascript&#039;&amp;gt;&lt;br /&gt;
{{DS EmulatorJS Settings}}&lt;br /&gt;
EJS_core = &#039;nds&#039;;&lt;br /&gt;
EJS_gameName = &amp;quot;Meteora Galactic Battle&amp;quot;;&lt;br /&gt;
EJS_gameUrl = &#039;https://dlhb.gamebrew.org/onlineemulators/nds/meteora.7z&#039;;&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
{{EmulatorJS Loader}}&lt;br /&gt;
}}&lt;br /&gt;
{{DS Control Settings}}&lt;br /&gt;
&amp;lt;!--END Online Emulator Section--&amp;gt;&lt;br /&gt;
==Credits==&lt;br /&gt;
Brunni, Mollusk, Reppa, Benoit Charcosset, Audrey.&lt;br /&gt;
&lt;br /&gt;
Everyone in dev-fr.&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
* Official website - [https://web.archive.org/web/20140615140612/http://meteora.lo2k.net http://meteora.lo2k.net] (archived)&lt;br /&gt;
* NeoFlash - [https://web.archive.org/web/20210208003002/https://www.neoflash.com/forum/index.php?topic=4569.0 https://www.neoflash.com/forum/index.php?topic=4569.0] (archived)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:NEO Summer Coding Compo 2007]]&lt;br /&gt;
[[Category:Dev-fr Coding Compo 2007]]&lt;/div&gt;</summary>
		<author><name>SkyLyrac</name></author>
	</entry>
	<entry>
		<id>https://www.gamebrew.org/index.php?title=%CE%9CLibrary&amp;diff=179543</id>
		<title>ΜLibrary</title>
		<link rel="alternate" type="text/html" href="https://www.gamebrew.org/index.php?title=%CE%9CLibrary&amp;diff=179543"/>
		<updated>2024-08-04T23:21:46Z</updated>

		<summary type="html">&lt;p&gt;SkyLyrac: Add information about port of the library to BlocksDS&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox DS Homebrews&lt;br /&gt;
|title=µLibrary&lt;br /&gt;
|image=ulibrary.png&lt;br /&gt;
|description=New library to use the 3D GPU to create nice 2D games very easily.&lt;br /&gt;
|author=Brunni&lt;br /&gt;
|lastupdated=2024/08/05&lt;br /&gt;
|type=Game Engine&lt;br /&gt;
|version=1.13&lt;br /&gt;
|license=Mixed&lt;br /&gt;
|download=https://dlhb.gamebrew.org/dshomebrew/ulibrary.7z&lt;br /&gt;
|website=http://brunni.dev-fr.org/index.php?page=ndssoft_ulib&lt;br /&gt;
|source=https://github.com/AntonioND/ulibrary&lt;br /&gt;
}}&lt;br /&gt;
µLibrary is a new library for Nintendo DS. Basically, it is meant to use the 3D GPU to create nice 2D games very easily, using a different approach than existing libraries (similar to OSLib). A few examples are supplied, as well as a Doxygen documentation and a small .chm documentation with a FAQ. There are also 2 templates for VHAM, Programmers Notepad or just make, one with PALib and one without it.&lt;br /&gt;
&lt;br /&gt;
The 3D GPU provides additional effects over the 2D GPU, like full transparency with alpha channel (objects can blend amongst them), a larger number of sprites (up to 1536 instead of 128), no zoom or rotation limit (2x with the 2D GPU), a larger limit for the sprite size (2048x2048 instead of 64x64). It is also possible to draw primitives like lines, rectangles, etc. allowing nice effects like in Yoshi&#039;s island for example.&lt;br /&gt;
&lt;br /&gt;
µLibrary also provides a low level layer and is open to the hardware. You can also mix 2D and 3D in a single project. &lt;br /&gt;
&lt;br /&gt;
It was participated in the NEO Spring Coding Compo 2007 (NDS App).&lt;br /&gt;
&lt;br /&gt;
In 2024, the library was ported to [https://github.com/blocksds/sdk BlocksDS] by AntonioND to support modern tools.&lt;br /&gt;
&lt;br /&gt;
==Features==&lt;br /&gt;
* Supported image formats: PNG, GIF, JPG.&lt;br /&gt;
* Special image effects: stretching, tinting (4 corners), mirroring, rotation (with a defined center), selection of an image frame to display (just like on spritesheets).&lt;br /&gt;
* 18-bit render quality instead of 15-bit: provides 8 times more colors.&lt;br /&gt;
* Virtual file system: possible to load files independantly from the actual support (RAM, libFat, GBFS are supported by default, but you can define your own). Allows to create more easily software that are compatible with all existing linkers.&lt;br /&gt;
* Untextured geometry (rectangles, gradients, lines, etc).&lt;br /&gt;
* Basic message box system.&lt;br /&gt;
* VideoGL wrapper for texture and palette loading in VRAM: Able to load and unload things dynamically and more flexible (you can choose which banks you want to use for what, etc).&lt;br /&gt;
* Keypad and touchscreen handler namely with support of stylus speed and double click and support of autorepeated keys (menus for example).&lt;br /&gt;
* Includes 2 splash screens.&lt;br /&gt;
* Low level wrapper to draw primitives.&lt;br /&gt;
* Text system using the same font format as OSLib.&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
&amp;lt;tabber&amp;gt;&lt;br /&gt;
|-|BlocksDS port=&lt;br /&gt;
&lt;br /&gt;
Follow the instructions in [https://github.com/AntonioND/ulibrary the repository].&lt;br /&gt;
&lt;br /&gt;
|-|Neoflash compo ver.=&lt;br /&gt;
&lt;br /&gt;
Enter into the Install folder of your distribution. &lt;br /&gt;
&lt;br /&gt;
There is a batch file, named Install.bat, that will copy files. First edit it and verify that the paths are corrects (ROOTPATH=C:\devkitpro\libnds by default, change it to the path where libnds is located). &lt;br /&gt;
&lt;br /&gt;
Once finished, execute it. After a confirmation, it will copy all files to their respective locations so that you can use it.&lt;br /&gt;
&amp;lt;/tabber&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==User guide==&lt;br /&gt;
Library comes with two templates, located in the Templates folder of its install:&lt;br /&gt;
* uLib_without_PALib - This project will begin with µLibrary only.&lt;br /&gt;
* uLib_with_PALib - As its name suggests, this project contains everything to get started on a new project using simultaneously µLibrary and PALib.&lt;br /&gt;
&lt;br /&gt;
The render method is similar to a sheet of paper. You first draw a background, then put some mountains, then some trees, some characters and so on: you draw your objects in the order they should appear on the screen (the first is behind, the last one is over the others).&lt;br /&gt;
&lt;br /&gt;
Some examples are provided by the developer:&lt;br /&gt;
* [http://www.mobile-dev.ch/ulib/tmp/Example01b.rar Example01b.rar]&lt;br /&gt;
* [http://www.mobile-dev.ch/ulib/tmp/Example09.rar Example09.rar]&lt;br /&gt;
&lt;br /&gt;
The doxygen documentation is available [http://www.mobile-dev.ch/ulib/doc/doxygen/index.html here].&lt;br /&gt;
&lt;br /&gt;
==Screenshots==&lt;br /&gt;
https://dlhb.gamebrew.org/dshomebrew/ulibrary2.png&lt;br /&gt;
&lt;br /&gt;
==Changelog==&lt;br /&gt;
&#039;&#039;&#039;Version 1.13 05.08.2024&#039;&#039;&#039;&lt;br /&gt;
* µLibrary has been ported to BlocksDS, allowing programs that use it to be built with modern tools.&lt;br /&gt;
* ulBindTextureToGl() has been removed, as it required access to internal state of libnds, which is no longer exposed.&lt;br /&gt;
* libpng and zlib are no longer included in the repository, they are taken from the toolchain. The code that loads PNG images with libpng has been updated to work with modern libpng.&lt;br /&gt;
* PAlib examples are broken until there is a new version of PAlib that works with BlocksDS.&lt;br /&gt;
* The Doxygen documentation has been fixed and updated.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.12 2009/03/17&#039;&#039;&#039;&lt;br /&gt;
* This release is only to keep working with the newest devkitpro &amp;amp; libnds releases.&lt;br /&gt;
* A lot of things have changed and some important things must have been rewritten.&lt;br /&gt;
* This was the occasion of creating better makefiles, update samples, changing the logo and do other minor changes.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.11 2008/08/23&#039;&#039;&#039;&lt;br /&gt;
* devKitPro has not really changed (thankfully), so no mandatory updates were needed.&lt;br /&gt;
* Fixes a few bugs, namely the palette issues reported by some people.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.10 2007/12/26&#039;&#039;&#039;&lt;br /&gt;
* As usual, works with and requires the latest libnds version; that&#039;s a shame because nothing will run on emulators from now. You can however solve this problem by replacing your copy of basic.arm7 in your libnds folder by mine (you can find it in the tools folder).&lt;br /&gt;
* Added ulMoveScreenView, ulRotateScreenView, ulScaleScreenView and ulResetScreenView to apply special transformations to your screen. You can for example rotate the screen as a whole or only a list of objects without any effort. This will namely allow you to scale and rotate objects like maps and text, which isn&#039;t available by default.&lt;br /&gt;
* Fonts now work better. Now the font2oft tool is in the &#039;tools&#039; folder.&lt;br /&gt;
* Added ulGetColorRed, ulGetColorGreen, ulGetColorBlue to retrieve the component values of a color.&lt;br /&gt;
* Added ulLoadFontFile to directly load a font from a file.&lt;br /&gt;
* PNG files with alpha can now be loaded directly as UL_PF_PAL5_A3 and UL_PF_PAL3_A5. The alpha will be taken in account and set in the resulting image. Note that you will have to enable blending as usual with ulSetAlpha and by setting another polygroup, because if all objects are with the same polygroup, none will blend with any other.&lt;br /&gt;
* Loading unpaletted PNG files to paletted formats reworked. If there isn&#039;t enough colors for the whole image, the nearest is taken. However you should avoid this situation because it&#039;s an extremely simple but weak method for reducing the colors of an image.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.00 bêta 4 2007/07/14&#039;&#039;&#039;&lt;br /&gt;
* Works with, and requires the last libnds version.&lt;br /&gt;
* Added ulDeleteMap function.&lt;br /&gt;
* Using bank B for textures wasn&#039;t working correctly; all my excuses.&lt;br /&gt;
* Some JPG files with a vertical size not multiple of 8 or 16 were loaded incorrectly.&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
* Author&#039;s website - [https://web.archive.org/web/20080507043108/http://brunni.dev-fr.org/index.php?page=ndssoft_ulib http://brunni.dev-fr.org/index.php?page=ndssoft_ulib] (archived)&lt;br /&gt;
* NeoFlash - https://www.neoflash.com/forum/index.php?topic=3954.0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:NEO Spring Coding Compo 2007]]&lt;/div&gt;</summary>
		<author><name>SkyLyrac</name></author>
	</entry>
	<entry>
		<id>https://www.gamebrew.org/index.php?title=Nitro_Engine&amp;diff=115943</id>
		<title>Nitro Engine</title>
		<link rel="alternate" type="text/html" href="https://www.gamebrew.org/index.php?title=Nitro_Engine&amp;diff=115943"/>
		<updated>2023-03-16T10:59:49Z</updated>

		<summary type="html">&lt;p&gt;SkyLyrac: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox DS Homebrews&lt;br /&gt;
|title=Nitro Engine&lt;br /&gt;
|image=nitroengine.png&lt;br /&gt;
|description=3D engine which aim to help making 3D game for DS.&lt;br /&gt;
|author=AntonioND&lt;br /&gt;
|lastupdated=2022/11/10&lt;br /&gt;
|type=Game engine&lt;br /&gt;
|version=0.8.1&lt;br /&gt;
|license=Mixed&lt;br /&gt;
|download=https://github.com/AntonioND/nitro-engine&lt;br /&gt;
|website=https://github.com/AntonioND/nitro-engine&lt;br /&gt;
|source=https://github.com/AntonioND/nitro-engine&lt;br /&gt;
}}&lt;br /&gt;
Nitro Engine is a 3D engine for DS. The objective of this is to make 3D more easily than using libnds normal funcions. It uses libnds and you can load models and textures from FAT (or EFS, or NitroFS).&lt;br /&gt;
&lt;br /&gt;
Nitro Engine doesn&#039;t support any of the 2D hardware of the DS. In order to use the 2D hardware you can use libnds directly, or you can use a library like [https://github.com/knightfox75/nds_nflib NFlib]. There is an example of how to integrate Nitro Engine and NFlib in the same project [https://github.com/AntonioND/nitro-engine/blob/master/examples/templates/using_nflib here].&lt;br /&gt;
&lt;br /&gt;
A setup guide can be found on the [https://github.com/AntonioND/nitro-engine#setup GitHub page].&lt;br /&gt;
&lt;br /&gt;
==Features==&lt;br /&gt;
*Support for static models, converted from OBJ files.&lt;br /&gt;
*Support for animated models, thanks to the [https://github.com/AntonioND/dsma-library DSMA library], which converts MD5 models (with skeletal animation) into a format that can be rendered with hardware acceleration. It can also blend two animations together (for transitions).&lt;br /&gt;
*Support for all format of textures (even compressed textures, but the converter included in this repository doesn&#039;t support them yet).&lt;br /&gt;
*Dual 3D (render 3D to both screens, but at 30 FPS instead of 60 FPS).&lt;br /&gt;
*Functions to render 2D images accelerated by 3D hardware.&lt;br /&gt;
*Basic text system.&lt;br /&gt;
*Basic GUI elements like buttons and scrollbars.&lt;br /&gt;
*Basic physic system: Axis-aligned bounding boxes (AABB) only.&lt;br /&gt;
&lt;br /&gt;
==Screenshots==&lt;br /&gt;
https://dlhb.gamebrew.org/dshomebrew/nitroengine2.png&lt;br /&gt;
https://dlhb.gamebrew.org/dshomebrew/nitroengine3.png&lt;br /&gt;
&lt;br /&gt;
[https://github.com/AntonioND/nitro-engine#screenshots Example screenshots.]&lt;br /&gt;
&lt;br /&gt;
==Compatibility==&lt;br /&gt;
Some effects does not work in emulators.&lt;br /&gt;
&lt;br /&gt;
==Changelog==&lt;br /&gt;
&#039;&#039;&#039;0.8.1 2022/11/10&#039;&#039;&#039;&lt;br /&gt;
*Add support for compressed textures.&lt;br /&gt;
*Add example that combines NFlib and Nitro Engine to have good 2D hardware support.&lt;br /&gt;
*Support specular properties in materials.&lt;br /&gt;
*Add a few enums to help editor autocompletion features.&lt;br /&gt;
*Rename a few functions and deprecate the old names (the old names still work).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;0.8.0 2022/10/21&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Models and textures:&lt;br /&gt;
*Add support for MD5 animated models (thanks to https://github.com/AntonioND/dsma-library): Introduce tool md5_to_dsma to convert them to a format that Nitro Engine can use.&lt;br /&gt;
*Add support for OBJ static models: Introduce tool obj2dl to convert them to a format that Nitro Engine can use.&lt;br /&gt;
*Introduce tool img2ds to convert images in many popular formats (PNG, JPG, BMP, etc) to DS textures (PNG is still recommended over other formats, as it supports alpha better than other formats).&lt;br /&gt;
*Drop support for MD2 models (static or animated).&lt;br /&gt;
*Remove NDS Model Exporter, Nitro Texture Converter, md2_to_bin and md2_to_nea. The animation system has been refactored (but NEA files don&#039;t work anymore, so you need to update your code anyway).&lt;br /&gt;
&lt;br /&gt;
General:&lt;br /&gt;
*Huge cleanup of code style of the codebase.&lt;br /&gt;
*Cleanup of all examples. Add the original assets and textures used in all examples to the repository, along scripts to convert them to the formats used by Nitro Engine.&lt;br /&gt;
*Implement a better way to have debug and release builds of the library.&lt;br /&gt;
&lt;br /&gt;
Notes:&lt;br /&gt;
*You can still use textures converted with Nitro Texture Converter or NDS Model Exporter, and you can still use any model exported with NDS Model Exporter or md2_to_bin. However, support for NEA files has been removed (it had awful performance, and it was just a bad way to do things), so any file converted by md2_to_nea won&#039;t work anymore.&lt;br /&gt;
*The reason to replace most tools is that several people had issues building them. All the new tools are written in Python, so they don&#039;t need to be compiled.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;0.7.0 2019/06/14&#039;&#039;&#039;&lt;br /&gt;
*Major cleanup of code.&lt;br /&gt;
*Clarify license.&lt;br /&gt;
*Reworked tools to build under Linux and Windows.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;0.6.1 2011/09/01&#039;&#039;&#039; &lt;br /&gt;
* Fixed identation in all code. Now it isn&#039;t a pain to read it.&lt;br /&gt;
* A few warnings fixed (related to libnds new versions).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;0.6.0 2009/06/30&#039;&#039;&#039;&lt;br /&gt;
* The functions used to modify textures and palettes now return a pointer to the data so that you can modify them easily.&lt;br /&gt;
* Each material can have different propierties (amient, diffuse...). You can set the default ones, the propierties each new material will have, and then you can set each material&#039;s propierties individually.&lt;br /&gt;
* New texture and palette allocation system, it is faster and better. * Defragmenting functions don&#039;t work now, will fix them for the next version.&lt;br /&gt;
* Added a debug system. You can compile Nitro Engine in &amp;quot;debug mode&amp;quot; and it will send error messages to the function you want. Once you have finished debugging or whatever, just recompile Nitro Engine without debug mode.&lt;br /&gt;
* Window system renamed to Sprite system. You can set a rotation and a scale for each one.&lt;br /&gt;
* The most important thing, the animation system has been improved, and now animated models are drawn using linear interpolation (you can disable it, anyway).&lt;br /&gt;
* As a result, the converters are modified, so you&#039;ll have to convert yout animated models again.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;0.5.1 2009/01/28&#039;&#039;&#039;&lt;br /&gt;
* Minor bugfixes.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;0.5.0 2009/01/05&#039;&#039;&#039; &lt;br /&gt;
* Text system and camera system optimized. New functions for the camera system.&lt;br /&gt;
* NE_TextPrintBox and NE_TextPrintBoxFree slightly changed. They can limit the text drawn to a number of characters set by the coder.&lt;br /&gt;
* Some functions made internal. Don&#039;t use them unless you know what you are doing.&lt;br /&gt;
* Fixed (?) at least the 2D projection.&lt;br /&gt;
* HBL effects fixed.&lt;br /&gt;
* Touch test functions.&lt;br /&gt;
* NE_UPDATE_INPUT removed.&lt;br /&gt;
* It now supports any BMP size, and BMP with 4 bits of depth.&lt;br /&gt;
* Arrays made pointers, so there is more memory free when you are not using Nitro Engine. You can also configure the number of objects of each systems you are going to use.&lt;br /&gt;
* NE_TextPalette replaced by NE_Palette.&lt;br /&gt;
* You can clone materials to use the same texture with different colors. This doesn&#039;t have the problems of cloning models.&lt;br /&gt;
* Added functions to remove all palettes and textures.&lt;br /&gt;
* Fixed NE_End().&lt;br /&gt;
* NE can free all memory used by it, and the coder can tell NE how much memory to use.&lt;br /&gt;
* Texture drawing system improved a bit.&lt;br /&gt;
* NE_PolyFormat simplified.&lt;br /&gt;
* Some bugfixes, code reorganized, define lists converted into enums.&lt;br /&gt;
* Clear bitmap supported, this is used to display an bitmap as rear plane. Each pixel can have different depth. This needs 2 VRAM banks to work.&lt;br /&gt;
* Solved some problems with 2D system and culling.&lt;br /&gt;
* Nomad NDS_Texture_Converter is no longer included, if you want it, look for it in google.&lt;br /&gt;
* Made and added Nitro Texture Converter. Open source, and it exports various levels of alpha in the textures that can handle it. It does only accept PNG files.&lt;br /&gt;
* NE now accepts any texture size. NE_SIZE_XXX defines removed as they are not needed now.&lt;br /&gt;
* Added a couple of examples.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;0.4.2 2008/12/14&#039;&#039;&#039; &lt;br /&gt;
* Fixed 2D system (textures were displaying wrong on 2D quads) and text system (paletted textures sometimes were drawn without palette).&lt;br /&gt;
* Compiled MD2_2_NEA, MD2_2_BIN and bin2nea to work in linux. Thanks to nintendork32.&lt;br /&gt;
* Added a couple of examples.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;0.4.1 2008/12/12&#039;&#039;&#039;&lt;br /&gt;
* LOTS OF BUGFIXES. Specially, UV coordinates swapping fixed.&lt;br /&gt;
* Added a function to draw on RGBA textures.&lt;br /&gt;
* Fixed MD2_2_NEA and MD2_2_BIN. You&#039;ll have to convert again your models.&lt;br /&gt;
* Updated to work with latest libnds. There is a define in case you want to use an older version.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;0.4.0 2008/10/15&#039;&#039;&#039;&lt;br /&gt;
* Added MD2_2_NEA &amp;lt;converts an MD2 model into a NEA file that can used by Nitro Engine&amp;gt; and MD2_2_BIN &amp;lt;Converts the first frame of an MD2 model into a display list&amp;gt;. Display lists created are really optimized.&lt;br /&gt;
* Updated DisplayList_Fixer. Now it can remove normal commands too.&lt;br /&gt;
* Added a text system. It can use fonts of any size.&lt;br /&gt;
* Added some simple API functions (buttons, check boxes, radio buttons and slide bars).&lt;br /&gt;
* Fixed 2D projection.&lt;br /&gt;
* Removed some internal unused functions to save space, and made &#039;inline&#039; some of the rest.&lt;br /&gt;
* Functions that used float parameters modified so they use integers now. You can still use some wrappers if you want to use floats. This will let the compiler try to optimize the code.&lt;br /&gt;
* Animated and static models are now the same. You can move, rotate, etc them with the same functions.&lt;br /&gt;
* Now, you can &#039;clone&#039; models so you can save a lot of RAM if they are repeated.&lt;br /&gt;
* Renamed lots of model functions. Take a look at new examples or documentation.&lt;br /&gt;
* NE_Color struct removed (don&#039;t even know why it is created).&lt;br /&gt;
* Examples updated to work with last version and added examples of clonning models, API and text system.&lt;br /&gt;
* libnds&#039; console is not inited with Nitro Engine. You will have to init it yourself with NE_InitConsole or libnds&#039; functions.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;0.3.0 2008/09/16&#039;&#039;&#039;&lt;br /&gt;
* Support for animated models (NEA format) and a program to make a new NEA file from many models (in bin format).&lt;br /&gt;
* 2D over 3D system. You can draw easily quads (with or without texture) as if they were drawn using 2D.&lt;br /&gt;
* Basic physics engine (gravity, friction and collitions). It does only support bounding boxes for now.&lt;br /&gt;
* Added a function to delete all models, animated or not.&lt;br /&gt;
* Window system, very simple. Will make some API functions in next versions.&lt;br /&gt;
* Nitro Engine compiled as a library to include it easier in projects and save space.&lt;br /&gt;
* Examples folder organized a bit and added some new examples.&lt;br /&gt;
* Nitro Engine is now licensed under the BSD license.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;0.2.0 2008/08/31&#039;&#039;&#039;&lt;br /&gt;
* Added effects like fog and shading, functions to load bmp files and convert them in textures and more examples.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;0.1 2008/08/24&#039;&#039;&#039;&lt;br /&gt;
* Released first version of Nitro Engine &lt;br /&gt;
* Includes 2 examples, documentation, tools to export models from the PC, the license and full source. &lt;br /&gt;
&lt;br /&gt;
==Credits==&lt;br /&gt;
* Joat, Dovoto and WinterMute for libnds.&lt;br /&gt;
* WinterMute for devkitPro and devkitARM.&lt;br /&gt;
* Chishm for libfat and DLDI.&lt;br /&gt;
* The guys of gbadev for the help.&lt;br /&gt;
* Martin for No$gba and gbatek.&lt;br /&gt;
* Kasikiare for NDSModelExporter.&lt;br /&gt;
* PadrinatoR for NDS_Mesh_Converter.&lt;br /&gt;
* Ti-Ra-Nog for testing the engine.&lt;br /&gt;
* Judelco for the big logo.&lt;br /&gt;
* Serede for the small logo.&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
* Author&#039;s website - http://www.skylyrac.net/old-site/index.html&lt;br /&gt;
* GitHub - https://github.com/AntonioND/nitro-engine&lt;br /&gt;
&lt;br /&gt;
[[Category:DS homebrew games]]&lt;br /&gt;
[[Category:Homebrew game engines on DS]]&lt;/div&gt;</summary>
		<author><name>SkyLyrac</name></author>
	</entry>
	<entry>
		<id>https://www.gamebrew.org/index.php?title=Front_SD_ELF_Loader_Wii&amp;diff=115942</id>
		<title>Front SD ELF Loader Wii</title>
		<link rel="alternate" type="text/html" href="https://www.gamebrew.org/index.php?title=Front_SD_ELF_Loader_Wii&amp;diff=115942"/>
		<updated>2023-03-16T10:57:05Z</updated>

		<summary type="html">&lt;p&gt;SkyLyrac: /* Unofficial versions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#seo:&lt;br /&gt;
|title=Wii Homebrew Loaders&lt;br /&gt;
(Loader) - GameBrew&lt;br /&gt;
|title_mode=append&lt;br /&gt;
|image=wii-logo.jpg&lt;br /&gt;
|image_alt=Front SD ELF Loader&lt;br /&gt;
}}&lt;br /&gt;
{{Infobox Wii Homebrews&lt;br /&gt;
|title=Front SD ELF Loader&lt;br /&gt;
|image=wii-logo.jpg&lt;br /&gt;
|description=Loads .elf and .dol files from front SD slot&lt;br /&gt;
|author=svpe&lt;br /&gt;
|lastupdated=2008/04/02&lt;br /&gt;
|type=Loader&lt;br /&gt;
|version=0.03b&lt;br /&gt;
|license=Mixed&lt;br /&gt;
|download=https://dlhb.gamebrew.org/wiihomebrews/frontsdelfloaderwii.7z&lt;br /&gt;
|website=&lt;br /&gt;
|source=&lt;br /&gt;
}}&lt;br /&gt;
This is just a small &#039;&#039;&#039;Front SD ELF loader&#039;&#039;&#039; with a menu, written by Sven Peter, svpe #wiidev@efnet/blitzed, svpe@gmx.net.&lt;br /&gt;
&lt;br /&gt;
There are probably still some bugs so don&#039;t blame me if something goes wrong.&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
Create an &amp;quot;elf&amp;quot; directory (all letters in lower-case, don&#039;t include quotes) on your SD card and put all your ELF files in there.&lt;br /&gt;
Load the tp-hack-loader.elf with the twilight hack or the trucha-disc-loader.dol with a trucha signed disc.&lt;br /&gt;
&lt;br /&gt;
If you want to compile it yourself you just need to type &#039;make&#039; in the root directory. Precompiled elf and dol binaries are included.&lt;br /&gt;
&lt;br /&gt;
The miniloader/ is just a quick hack to make this work with trucha discs because the apploader i used didn&#039;t seem to support a non-standard entry point. The real loader with the front SD code is in the loader/ directory.&lt;br /&gt;
&lt;br /&gt;
When using the homebrew channel you might need to use the trucha-disc-loader.dol or build the miniloader/miniloader.elf file yourself.&lt;br /&gt;
&lt;br /&gt;
== Unofficial versions ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;MAG Loader&#039;&#039;&#039;&#039; by MAG/PiratePila.&amp;lt;br&amp;gt;&lt;br /&gt;
Yet another Front SD Elf loader, this one uses the reset button.&amp;lt;br&amp;gt;&lt;br /&gt;
Current Version 0.2.&lt;br /&gt;
&lt;br /&gt;
== ChangeLog ==&lt;br /&gt;
&#039;&#039;&#039;v0.4&#039;&#039;&#039;&lt;br /&gt;
*Some bugfixes&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.2a&#039;&#039;&#039;&lt;br /&gt;
*Wiimote shutdown code from this wiki added&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.2&#039;&#039;&#039;&lt;br /&gt;
*Video mode detection (should work on PAL TVs now)&lt;br /&gt;
*Faster ELF loading due to removed debug printfs&lt;br /&gt;
&lt;br /&gt;
== Credits ==&lt;br /&gt;
*Internal SD stuff by Bushing, Marcan and maybe some more people. I just reversed the twilight hack elf loader.&lt;br /&gt;
*FatFs by [http://elm-chan.org/fsw/ff/00index_e.html elm-chan.org].&lt;br /&gt;
*ELF loading code taken from [[Geckoloader Wii]] by Dhewg, #wiidev at efnet. Written by Dhewg, Tmbinc and William L. Pitts&lt;br /&gt;
*People from #wiidev who helped me with a few problems ;)&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
* Wiibrew - https://wiibrew.org/wiki/Front_SD_ELF_Loader&lt;br /&gt;
* MAG Loader - https://www.elotrolado.net/hilo_mag-loader_998560&lt;/div&gt;</summary>
		<author><name>SkyLyrac</name></author>
	</entry>
</feed>