One application of reverse engineering is the creation of emulators of old systems. This is often done to preserve the technology and to address the lack of access to functioning hardware.
One such system is the Game Boy Advance. Produced between 2001 and 2008, it is a fairly recent system. It is Arm based, has a farily small screen, a Z80 coprocessor and a relatively small RAM (256kB + 32kB + 96kB). From an I/O perspective, it is a fairly limited system, which helps. However, the cartridge system means that games are not only a piece of ROM, but can contain more functionality.
The mGBA emulator team recently posted a blog post on some of the tricks used by game vendors (in this particular case, Nintendo themselves) to prevent emulators from working. An interesting read, both from a hardware and software perspective.