| Terms |
Definitions |
|
Using a pointer to move sequentially through an array is more efficient than using x[i] because all ARM load and store instructions have a post increment mode
|
True
|
|
Can you create a hardware sprite that will only appear as one pixel on the screen
|
Yes
|
|
There is more video memory available for sprite image data in tile-based video modes than in the bit-mapped modes
|
True
|
|
In a tile-based video mode, blitting code is required for every background you enable
|
False
|
|
What will happen if you left shift a 24.8 fixed point value by 24
|
Your will lose the integer part of the number
|
|
Which video modes have a hardware double buffer?
|
4,5
|
|
Where do you copy the address of your custom interrupt service routine to in GBA memory
|
0x3007FFC - beginning of stack in iwRam
|
|
To reduce the impact of pointer aliasing overhead (extra data retrieval) what optimization can we use
|
Assign a local variable to value
|
|
Where are the hardware sprites properties loaded into memory
|
OAM
|
|
How many total palettes can be available at any one time
|
32
|
|
Since the GBA CPU is a RISC processor, we can manipulate multiple data items in memory at once
|
False
|
|
You may need to handle multiple interrupts at one time
|
True
|
|
Sprites can be flipped and rotated at the same time
|
False
|
|
What is the maximum number of hardware non-rotational backgrounds available in video mode 1
|
2
|
|
How many total bytes of memory are needed for rotation/scale data of a sprite
|
8 bytes
|
|
In the RGB macro, what is the purpose of “0x1F” in the three locations:
RGB(r,g,b) ((r & 0x1F) | ((g & 0x1F) << 5) | ((b & 0x1F) << 10))
|
To limit the three colors to only 5 bits
|
|
For a standard 256 color palette, which index 0-255 is used for the transparency
|
0
|
|
Which data transfer using DMA is NOT possible
|
anything to ROM
--possible ones--
EWRAM to Video Memory
Game Pak ROM to EWRAM
I/O RAM to OAM
|
|
How many bits are used for tile map entries of rotational backgrounds
|
8
|
|
The system can be configured for either big or little endian operation, but little endian is the default
|
True
|
|
What sequence would be used to get a 1 bit for each key currently pressed
|
(~REG_KEY & 0x03FF) (none)
|
|
What is the purpose of this code?
#define REG_VCOUNT *(volatile unsigned short*)0x04000006while(REG_VCOUNT != 160){}
|
wait until GBA is on the first line of vertical blank
|
|
Which video mode would you use if you wanted two scrolling backgrounds and one rotational background
|
1
|
|
Both the screen refresh rate and your game’s frames per second will always be constant at ~60 Hz (59.73 Hertz)
|
false
|
|
What are the dimensions in pixels of the GBA screen
|
240 x 160
|
|
Which CPU does the GBA use
|
ARM7 16.7 MHz
|
|
In sprite 1d mapping mode, its tiles are stored sequentially allowing for it to be copied using a DMA transfer
|
True
|
|
Which of these is UNTRUE about IWRAM (Internal Working RAM)
|
--true ans--
Only 32KB of mem
Fastest Memory in GBA
Ideal for running ARM code at full speed
Directly addressible on 32 bit internal data bus
|
|
Which one of these do you NOT enable in the display control register
|
Palettes
|
|
The GBA processor has which of these
|
--Has--
Hardware Multiplier
Three Stage Pipeline
-----Doesn't have-----
hardware divide intruction
floating point unit
|
|
The DMA controller takes over the hardware by halting the CPU during its transfer of data
|
False
|
|
How many keys/buttons does the GBA have for input
|
10
|
|
How many 2-byte attributes are allocated in OAM to control sprite display (without rotational data)
|
3
|
|
What is the system bus bit depth of the GBA
|
32 - bit
|
|
If your code uses addition, subtraction, and multiplication then there is no performance difference between signed an unsigned operations
|
True
|
|
The GBA screen refreshes at fixed intervals with both horizontal and vertical blank periods
|
false
|
|
How do you get a pixel in a sprite to be transparent
|
have a sprite pixel index the first palette entry
|
|
What is pointer aliasing in reference to two pointers
|
Both point to the same address
|
|
which of these is UNTRUE about the Game Boy Advnaced Architecture
|
Operating System
--True ans--
have complete control over hardware
each executable must contain code neccessary
macimum control means maximum responsobility
|
|
Which register would you check to determine which interrupt has occurred
|
REG_IF
|
|
If you multiply a 24.8 and a 24.8 fixed point value, what is the resulting fixed point value? (left side of "." is the total integer bits, right side of "." is the total fraction bits)
|
16.16
|
|
Which code could you add to the beginning of the Wait4VBlank function code to ensure that if you call it twice in a row, you would wait for the next vertical blank
|
While(REG_VCOUNT == 160){}
|
|
Where does sprite image data need to be loaded to
|
Video RAM
|
|
What sequence would be used to get a 1 bit for each key currently pressed
|
(~REG_KEY & 0x03FF)
|
|
Multiplying a matrix A by matrix B will always result in the same matrix as multiplying matrix B by matrix A
|
False
|
|
Since the GBA CPU is a CISC processor we can manipulate multiple data items in memory at once
|
false... its a RISC
|
|
You have less hardware sprites available in a bitmap video mode than a tile video mode
|
False
|
|
The data used to determine a sprite's degree of rotation is located in which of the four 2-byte attributes
|
3
|
|
Which code waits for the beginning of the Vblank period
|
while (REG_VCOUNT != 160){}
|
|
DMA can be used to transfer memory the following ways except one.
Pick the incorrect choice
|
ans
Source and destination address increments 16 bytes after each copy
correct ways
Source and destination address remains constant after each copy
Source address decrements and destination address increments after each copy
Source and destination address increments 4 bytes after each copy
|
|
It is possible for an interrupt to occur while you are handling another interrupt
|
True
|
|
Copying data to the OAM during the vertical draw period will NOT cause visual artifacts
|
False
|
|
There is more video memory available for sprite image data in tile-based video modes than in the bit-mapped modes
|
true
|
|
Which video modes use palettes
|
0,1,2,4
|
|
The GBA has built in support for floating point operations
|
False
|
|
What software functions can we call that are resident in the GBA to control background rotation
|
none
|
|
What is the maximum sprite size supported by the GBA
|
64x64
|
|
Which one of the following can two backgrounds share
|
All of others can be shared
Tile image, map , palette
|
|
You will potentially cause visual artifacts if you update video memory during the vertical draw period
|
True
|
|
If your loop iteration count can NOT be zero then what type of loop construct should we use
|
do {} while()
|
|
The same tile image data and/or tile map data loaded into video memory can be indexed by more than one background simultaneously
|
True
|
|
Which GBA color format values are the same
|
0x7FFF 0xFFFF
|
|
What is a rotational tile map an array of
|
Tile image indicies
|
|
For the GBA's color, there are bits for BGR. How many bits are for each color
|
5B,5G,5R
|
|
Which line of code would draw a pixel correctly in video mode 4, for an odd x? unsigned short offset = (y * 240 + x) >> 1;
|
videoBuffer[offset] = (color<<8) | videoBuffer[offset] & 0x00FF
|
|
How many offsets are there for char base blocks (tile image data) and screen base blocks (tile map data) respectively
|
4,32
|
|
How many tile map sizes are available for text (non-rotational) backgrounds
|
4
|
|
Which hardware register do you change to force the display to go blank
|
0x04000000 - REG_DISPCNT (display control)
|
|
Which step does NOT automatically happen when an interrupt gets triggered
|
Disables all interupts
|
|
Can a timer counter be extended by using other registers
|
yes, a timer counter can be linked to the next counter to extend the 16bit range
|
|
The data processing operations can operate on 8, 16, or 32 bit values
|
False
|
|
Which hardware subsystem catches interrupt messages
|
none(Interrupt subsystem)
|
|
Because of the way parameters are passed to C/C++ non-member functions (NMF) and C++ member functions (MF), those that pass over N parameters should be considered less efficient. What is N
|
4 for c/c++ NMF, 3 for c++ member funcs
|
|
How many registers must you set to transform a rotational background properly
|
6
|
|
Which statement is UNTRUE about hardware sprites
|
Sprite Image data has to be copied over after the initial copy
|
|
When you did the double buffer lab using video mode 3, which function needed to be called after the “Draw_WaitVBlank” function
|
Draw_Present
|
|
How many digital sound channels are available on the GBA
|
2
|
|
How much data can you transfer with DMA in each count
|
16 or 32
|
|
In video mode 4, you can write one byte of pixel information into video memory using one assignment instruction: videobuffer[y * 240 + x] = color;
|
False
|
|
The game’s executable is run directly on the Game Cartridge ROM instead of on the System RAM by default
|
True
|
|
How do you restore an interrupt
|
REG_IF = nFlags
|
|
When accessing the Game Cartridge ROM, the speed is represented as a pair of wait-states such as 3/1. What do first and second numbers represent respectively
|
selecting an address/ transfer of Data
|
|
What is the maximum number of hardware sprites that you can have in any video mode
|
128
|
|
Before setting up an Interrupt Service Routine (ISR) what must be done
|
Disable all interupts
|
|
You use REG_HOFS and REG_VOFS to scroll a rotational background in video mode 2
|
False
|
|
What is the maximum number of rotational backgrounds available in any one video mode
|
2
|
|
What are the different byte widths that can be copied per count using DMA
|
2,4
|
|
When tile map data is loaded into video memory, it must be loaded at a hardware specific offset and must not run past the next offset
|
False
|