Well heres the source to the heavy64 demo

Well theres not many comments.. sorry just read the code, it will explain
more than i can;)

Let try to explain a few things about what i do in this demo.

Unlike the vector demo released at POM99 which created the display list
directly in memory and told the rdp to execute it, this demo utilizes the
RSP gfx code called FAST3d, its whats mostly used in devkit demos you see
here and there. Constructing a display list for direct execution by the RDP
is different then making one thats going to be interpreted by the rsp!!

-First get gbi.h in handy in a window-
The thing is that you can have direct commands like:
/* RDP commands: */
#define G_NOOP                  0xc0    /*   0 */
#define G_SETCIMG               0xff    /*  -1 */
etc etc
or RSP commands embedded in it that are not passed to the RDP, pleez
try to understand this concept.
/* IMMEDIATE commands: */
#define G_POPMTX                (G_IMMFIRST-2)  \\BD
#define G_MOVEWORD              (G_IMMFIRST-3)  \\BC
#define G_TEXTURE               (G_IMMFIRST-4)  \\BB
#define G_SETOTHERMODE_H        (G_IMMFIRST-5)  \\BA
#define G_SETOTHERMODE_L        (G_IMMFIRST-6)  \\B9
etc etc etc

I have have laid an easy path for all you interested coders out there by
providing gfx macros (both static and dynamic)
like
gsLoadTextureBlock       macro
gsViewport      macro
etc etc
gSetScissor     macro           ;0, 0, SCREEN_WD, SCREEN_HT
etc etc
(might be helpful if you get a grep util to search around for stuff;)

the rutine "dorsp"
starts the gfx task defined in the gfx task structure
check it carefully

look in inits.asm
it contains the VI inits and most important the interrupt handler!
I use it to depack somestuff during the demo without slowing dowm
by starting the depack rutine and when Vblank int occurs
i check to see if the depack rutine was begun and if so then save all
important registers and start the main loop again.. this still needs much
improvement! . i have been workin on a way to start several tasks and switch
between them but only on drawing board for now.. see what you can come up
with.

in the main asm file --heavy64.asm
there is a debug loop that prints mem to screen which i use to debug
the demo: line 456
comment out to display some stuff
allows to poke peek and cop0 registers

lookat the sprite file, it was modified to build proper instructions
to suit the rsp (texture rectangle command needed fixup coz rsp 
only likes 64 bit commands)

samsfx.asm is some simple 8 bit sample replay rutine

also check out the use of segmented static display lists
its best to use and set segment 0 to 0 so that you can flat address all
you stuff, there might be a few instances when you could do otherwise
but not likely for a simple demo;)


****************************************************************************
to assemble just type:

asm heavy64

(this gets just the raw binary , needs header placed and swapping, sending)
to do this :

asm heavy64 send

(need ias and talk64 in PATH, also might need to adjust port #,
line 92: -p2 )
****************************************************************************


TOOLS required to do this job
asmn64.exe psyq assembler or some other competent asseblr
ias.exe and/or talk64.exe (on dextrose)
and the qbasic files:
vtx2asm.bas - included (modify to suit your needs)
            - used to convert n64 mesh display list to suaitable format
vtxgrid.bas - to generate the quad patch grid dlist (3ds2n64 failed me)
3ds2n64.exe or 3ds2c.exe (on destrose)
            - to convert some cool 3ds gfx to n64 format



greets fly out to dextrose crew, and the rest of the n64scene YOU KNOW WHO YOU ARE!!!

- I want to see some interesting asm coded stuff if you use this source;)

pay your respects to the
 U64 GFX SW TEAM:
 S Anderson, S Carr, H Cheng, K Luster, R Moore,N Pooley, A Srinivasan






