1#ifndef ALCHEMY_IO_WRITE_QUEUE_H
2#define ALCHEMY_IO_WRITE_QUEUE_H
29#define IO_WRITE_8 (1 << 16)
31#define IO_WRITE_16 (2 << 16)
33#define IO_WRITE_32 (3 << 16)
35#define IO_WRITE_SET (4 << 16)
37#define IO_WRITE_CLEAR (8 << 16)
58#define IO_WRITE_QUEUE_PUSH(address, value, control) \
60 struct IoWriteQueue *q = &gIoWriteQueue; \
63 u16 *count_ = &q->count; \
68 u32 *entry = q->entries[count]; \
70 *count_ = count + 1; \
72 *entry++ = (address); \
82#define IO_WRITE_QUEUE_PUSH_IME(ime, address, value, control) \
84 struct IoWriteQueue *q; \
91 IME_SAVE(ime, saved); \
95 u32 *entry = q->entries[count]; \
97 *count_ = count + 1; \
99 *entry++ = (address); \
100 *entry = (control); \
102 IME_RESTORE(ime, saved); \
The edition's language, for C to compare (LANGUAGE == LANGUAGE_GERMAN).
void IoWriteQueue_ClearBits16(u32 address, u32 value)
Queues clearing a halfword register's bits.
void IoWriteQueue_Store32(u32 address, u32 value)
Queues a word store.
void IoWriteQueue_ClearBits8(u32 address, u32 value)
Queues clearing a byte register's bits.
void IoWriteQueue_SetBits32(u32 address, u32 value)
Queues setting a word register's bits.
void IoWriteQueue_SetBits16(u32 address, u32 value)
Queues setting a halfword register's bits.
void IoWriteQueue_SetBits8(u32 address, u32 value)
Queues setting a byte register's bits.
void IoWriteQueue_Store8(u32 address, u32 value)
Queues a byte store.
void IoWriteQueue_ClearBits32(u32 address, u32 value)
Queues clearing a word register's bits.
void IoWriteQueue_Store16(u32 address, u32 value)
Queues a halfword store.
struct IoWriteQueue gIoWriteQueue
Saving, disabling and restoring the interrupt master enable.
The register writes VBlank carries out once the frame loop has finished a frame; IoWriteQueue_FlushPe...
u16 count
Entries waiting, at most 32.
u32 entries[32][3]
Each entry is the value, the address and the control word, in that order.
The integer types, TRUE, UNUSED and the fixed-address macros.