olivieryuyu / N64-Microcode-

Testing - Phase 1
3 stars 0 forks source link

G_MOVEWORD #5

Open olivieryuyu opened 2 years ago

olivieryuyu commented 2 years ago

G_MOVEWORD

Header of the command: 0x0E

Function: store a 32 bits word to the specific location in DMEM.

As G_MOVEWORD can be used for many purposes and new macros may be created by users, it is better to explain it its structure at microcode level.

STRUCTURE:

HH____DDD WWWWWWWW

HH: header of the command (8 bits)

DDD: place in DMEM where the word should be stored (12 bits)

WWWWWWWW: word to be stored (32 bits)

On contrary of Fast3D, there is no index and offset, only the exact DMEM address where the word should be stored.

In this respect DMEM indices set in gbi.h are used, potentially with some small calculations made from parameters at running time.

DMEM indices

 #define G_MV_VIEWPORT          0x050
 #define G_MV_LIGHT         0x180
 #define D_G_MTX_MVP            0x290

Related GBI macros:

gSPSegment/gsSPSegment (same usage than Fast3D) gSPClipRatio/gsSPClipRatio (same usage than Fast3D) gSPNearClip/gsSPNearClip (this new macro allows to set on or off near clipping on or off) gSPPrecisedClipRatio/gsSPPrecisedClipRatio (enhancement of gSPClipRatio where the size ratio is defined in a S15.16 format). It not 1, 2, 3 etc but it can therefore be 1,5 or 2,7) gSPInsertMatrix/gsSPInsertMatrix (same usage than Fast3D) gSPModifyVertex/gsSPModifyVertex (same usage than Fast3D but performed by emulation, not by the microcode). gSPSetAmbientLight/gsSPSetAmbientLight: (this new macro defines the colors of the ambient light. it should be noticed that ambient light is not structured in the same way than the rest of the other lights). gSPLightColor/gsSPLightColor (same usage than Fast3D) gSPFogFactor/gsSPFogFactor (same usage than Fast3D) gSPFogPosition/gsSPFogPosition (same usage than Fast3D) gSPTexture/gsSPTexture (same usage than Fast3D but performed by emulation, not by the microcode). gSPSetTextureTile/gsSPSetTextureTile (this new macro only define the tile and the level for textures) gSPSetTextureScale/gsSPSetTextureScale (this new macro only define the scales for textures)