guParseGbiDL [Function]



Outputs a GBI display list


#include <ultra64.h>        /* gu.h */
void guParseGbiDL(u64 *gbi_dl, u32 nbytes, u8 flags);


Pointer to the GBI display list in DRAM
Byte size of the GBI display list (0 shows the entire list)
Additional information flags
GU_PARSEGBI_ROWMAJOR (Enables output by order of rows)
GU_PARSEGBI_NONEST (Disables output of nests)
GU_PARSEGBI_FLTMTX (Enables output in floating point)
GU_PARSEGBI_SHOWDMA (Enables showing of DMA data)
GU_PARSEGBI_ALLMTX (Enables output of matrices)
GU_PARSEGBI_DUMPONLY (Enables showing in hexadecimal)

Returned value



This function interprets commands and data in the GBI display list and outputs them in a readable format. The GBI display list is processed by graphics microcode running on the RSP in order to create an RDP-format display list. Depending on which microcode is used in the graphics task, this output from the RSP can be either sent directly to the RDP or passed via DRAM. If this RSP output (RDP display list) has been stored in DRAM, it can be output in a readable format using the guParseRdpDL function. See osSpTaskLoad to read about the OSTask structure.

Regarding the flags argument:
The following flags can be ORed to make multiple specifications.
Outputs the matrix in order of rows (when not specified, the matrix is output in order of columns).
Nested display lists are not output.
Matrix is output in floating point.
DMA-processed data are also output.
Modeling matrices and projection matrices are also output.
Dumped in hexadecimal.


To use this function you must run dlprint on the Indy. gbi_dl and nbytes correspond to the data_ptr field and the data_size field of the OSTask structure. Normally you set nbytes to 0 in order to output the entire list.


The OSTask looks like this:

typedef struct {
     u32  type;              // Task type
     u32  flags;             // Task state bit type
     u64  *ucode_boot;       // Pointer to boot microcode
     u32  ucode_boot_size;   // Size of this
     u64  *ucode;            // Pointer to task microcode
     u32  ucode_size;        // Size of this
     u64  *ucode_data;       // Pointer to microcode data
     u32  ucode_data_size;   // Size of this
     u64  *dram_stack;       // Pointer to DRAM matrix stack
     u32  dram_stack_size;   // Size of this
     u64  *output_buff;      // Pointer to output buffer
     u64  *output_buff_size; // Size of this
     u64  *data_ptr;         // Pointer to SP command list
     u32  data_size;         // Size of this
     u64  *yield_data_ptr;   // Pointer to yield buffer
     u32  yield_data_size;   // Size of this
} OSTask_t;
typedef union {
    OSTask_t       t;
    long long int  force_structure_alignment;
} OSTask;

See Also

alParseAbiCL, dlprint, guParseRdpDL, and osSpTaskLoad

Revision History

03/01/99 Completely rewritten.