Resource Access Management

This chapter describes the runtime Nintendo 64 software architecture. It is intended as a brief tour of the overall architecture and discusses the basic design guidelines. More specific details are provided in subsequent chapters. This chapter briefly covers the following topics:

- CPU: threads, messages, interrupts, cache coherency, tlbs

- IO: device library, device manager

- Memory: static allocation, region library

- RCP: tasks, command lists, yielding Graphics: graphics interface

- Audio: sequencer, audio player, driver, wavetable synthesis

- Application: typical application framework

- Debugger: debugger support for CPU and RSP

The Nintendo 64 game machine is made up of a variety of resources. These resources include the CPU, memory, memory bus bandwidth, IO devices, the RSP, the RDP, and peripheral devices. The software is designed to provide raw access to all of the resources. The software layer basically translates logical functions and arguments into exact hardware register settings.

Management of most resources is left up to the game itself. Resources such as processor access and memory usage are too precious to waste by using some general management algorithm that is not tailored to a particular game’s requirement. The only management layers provided are the audio playback and I/O device access.

The audio playback mechanism is fairly consistent from game to game. Only the sounds themselves are different. Therefore, a general tool to stream audio playback is useful. The I/O devices can be managed to provide simultaneous multiple access contexts for different threads. For example, streaming audio data and paging in graphics database might require sharing access to the ROM.

Figure 4.1.1 Application Resources

Copyright © 1999 Nintendo of America Inc. All Rights Reserved Nintendo and N64 are registered trademarks of Nintendo Last Updated January, 1999