Speed tester for libfat

From GameBrew

Speed tester for libfat
AuthorDamian Yerrick
Last Updated2007/08/06
TypeSystem Tools

Speed tester for libfat is a program that tests how fast data can be read from the CompactFlash (CF) or Secure Digital (SD) card inserted into a GBA or DS through an adapter.

It works on any adapter supported by libfat, including those with GBA-compatible DLDI drivers.


The included binary works with any SLOT-1 or SLOT-2 card supported by libfat.

If your card is not one of the cards with a driver built into libfat (such as GBA Movie Player), you'll need to patch cf_mb.gba or cf_ds.nds with a DLDI driver before running it.

Then put the following files on your CF or SD card:

  • cf_mb.gba or cf_ds.nds (anywhere).
  • test_sectors.bin (at root level).

Then run cf_mb.gba or cf_ds.nds using your flash card's menu.

User guide

Each test can be run with 512 bytes, 4096 bytes, or 16384 bytes per chunk, and in either sequential or random order.

The time to read each chunk is displayed in CPU cycles and in microseconds. If the data read from test_sectors.bin doesn't match the expected data, it will warn you that the driver is malfunctioning.

Because some flash cards have internal blocks larger than the standard ATA 512-byte sector, some chunks may be read more quickly than others, especially sequential reads of 512-byte chunks following the first chunk in a block.

For this reason, the tester displays the maximum read time over the last four chunks, as well as the average read time over the whole test.



  • Good-bye lines, hello cycles. The new measurement correctly handles intervals shorter than a scanline or longer than a frame.
  • Combines code for sequential and random tests.
  • Single menu item runs all tests.
  • Displays momentary maximum and average times.
  • Uses malloc() instead of ghetto EWRAM allocation.
  • Warns the user if the DLDI is returning false information instead of actually reading sectors from the card. (My Games n' Music adapter does this for one of my microSD cards).


  • Works on both Game Boy Advance and Nintendo DS.


  • Uses libfat instead of gba_nds_fat.


  • Add menu with exit option.
  • Add 4 KiB and 16 KiB sequential tests.
  • Add corresponding random tests.
  • Slow down the reads for better usability.
  • Smooth out rapidly varying read times.
  • Now requires a 256 KiB or larger file in the root directory..


  • Original release.

External links