public static void InitParser(Ucodes UcodeID) { UcodeCommands.Init(new UcodeCommandDelegate(Ucode_NOOP)); switch (UcodeID) { case Ucodes.F3DEX2: UcodeCommands[(byte)UcodeF3DEX2.VTX] = new UcodeCommandDelegate(Ucode_F3DEX2_VTX); UcodeCommands[(byte)UcodeF3DEX2.TRI1] = new UcodeCommandDelegate(Ucode_F3DEX2_TRI1); UcodeCommands[(byte)UcodeF3DEX2.TRI2] = new UcodeCommandDelegate(Ucode_F3DEX2_TRI2); UcodeCommands[(byte)UcodeF3DEX2.DL] = new UcodeCommandDelegate(Ucode_F3DEX2_DL); UcodeCommands[(byte)UcodeF3DEX2.ENDDL] = new UcodeCommandDelegate(Ucode_F3DEX2_ENDDL); UcodeCommands[(byte)UcodeF3DEX2.TEXTURE] = new UcodeCommandDelegate(Ucode_F3DEX2_TEXTURE); UcodeCommands[(byte)UcodeG.SETTIMG] = new UcodeCommandDelegate(Ucode_G_SETTIMG); UcodeCommands[(byte)UcodeG.SETTILE] = new UcodeCommandDelegate(Ucode_G_SETTILE); UcodeCommands[(byte)UcodeG.SETTILESIZE] = new UcodeCommandDelegate(Ucode_G_SETTILESIZE); UcodeCommands[(byte)UcodeG.LOADBLOCK] = new UcodeCommandDelegate(Ucode_G_LOADBLOCK); UcodeCommands[(byte)UcodeG.LOADTLUT] = new UcodeCommandDelegate(Ucode_G_LOADTLUT); UcodeCommands[(byte)UcodeG.SETCOMBINE] = new UcodeCommandDelegate(Ucode_G_SETCOMBINE); UcodeCommands[(byte)UcodeG.SETFILLCOLOR] = new UcodeCommandDelegate(Ucode_G_SETFILLCOLOR); UcodeCommands[(byte)UcodeG.SETFOGCOLOR] = new UcodeCommandDelegate(Ucode_G_SETFOGCOLOR); UcodeCommands[(byte)UcodeG.SETBLENDCOLOR] = new UcodeCommandDelegate(Ucode_G_SETBLENDCOLOR); UcodeCommands[(byte)UcodeG.SETPRIMCOLOR] = new UcodeCommandDelegate(Ucode_G_SETPRIMCOLOR); UcodeCommands[(byte)UcodeG.SETENVCOLOR] = new UcodeCommandDelegate(Ucode_G_SETENVCOLOR); UcodeCommands[(byte)UcodeF3DEX2.GEOMETRYMODE] = new UcodeCommandDelegate(Ucode_F3DEX2_GEOMETRYMODE); UcodeCommands[(byte)UcodeF3DEX2.SETOTHERMODE_L] = new UcodeCommandDelegate(Ucode_F3DEX2_SETOTHERMODE_L); UcodeCommands[(byte)UcodeF3DEX2.RDPHALF_1] = new UcodeCommandDelegate(Ucode_F3DEX2_RDPHALF_1); UcodeCommands[(byte)UcodeF3DEX2.RDPHALF_2] = new UcodeCommandDelegate(Ucode_F3DEX2_RDPHALF_2); UcodeCommands[(byte)UcodeF3DEX2.BRANCH_Z] = new UcodeCommandDelegate(Ucode_F3DEX2_BRANCH_Z); UcodeCommands[(byte)UcodeF3DEX2.MTX] = new UcodeCommandDelegate(Ucode_F3DEX2_MTX); UcodeCommands[(byte)UcodeF3DEX2.POPMTX] = new UcodeCommandDelegate(Ucode_F3DEX2_POPMTX); DLCmd = (byte)UcodeF3DEX2.DL; EndDLCmd = (byte)UcodeF3DEX2.ENDDL; RDPHalf1Cmd = (byte)UcodeF3DEX2.RDPHALF_1; break; } }
public static void Initialize(Ucodes UcodeID) { TexUtil.InitTexturing(); NGraphics = new NGraphicsStruct(); NGraphics.Textures = new NTextureStruct[2]; NGraphics.Palette = new Color4[256]; CurrentDLists = new List<DisplayListStruct>(); FragmentCache = new List<FragmentCacheStruct>(); TextureCache = new List<TextureCacheStruct>(); InitParser(UcodeID); /* byte[] HighlightBytes = Encoding.ASCII.GetBytes( "!!ARBfp1.0\n" + "OUTPUT FinalColor = result.color;\n" + "MOV FinalColor, {0.0, 1.0, 0.0, 0.3};\n" + "END"); GL.Arb.GenProgram(1, out FPHighlight); GL.Arb.BindProgram(AssemblyProgramTargetArb.FragmentProgram, FPHighlight); GL.Arb.ProgramString(AssemblyProgramTargetArb.FragmentProgram, ArbVertexProgram.ProgramFormatAsciiArb, HighlightBytes.Length, HighlightBytes); */ AddMacros(); }