コード例 #1
0
    private unsafe static void TILE(PSX_LIBGPU.TILE *tag, Int32 w, Int32 h)
    {
        UInt32  currentABR = SFXKey.GetCurrentABR(tag->code);
        SFXMesh mesh       = SFXRender.GetMesh(currentABR, tag->code);

        mesh.TILE(tag, w, h);
    }
コード例 #2
0
    private unsafe static void SPRT(PSX_LIBGPU.SPRT *tag, Int32 w, Int32 h)
    {
        UInt32  meshKey = SFXKey.GetCurrentABRTex(tag->code, tag->clut) | 67108864u;
        SFXMesh mesh    = SFXRender.GetMesh(meshKey, tag->code);

        mesh.SPRT(tag, w, h);
    }
コード例 #3
0
    private unsafe static void PolyBGT4(PSX_LIBGPU.POLY_GT4 *tag)
    {
        UInt32  meshKey = SFXKey.GetABRTex(tag->code, tag->clut, tag->tpage) | 67108864u | 536870912u;
        SFXMesh mesh    = SFXRender.GetMesh(meshKey, tag->code);

        mesh.PolyBGT4(tag);
    }
コード例 #4
0
    private unsafe static void PolyFT4(PSX_LIBGPU.POLY_FT4 *tag, UInt32 fillter = 0u)
    {
        UInt32  meshKey = SFXKey.GetABRTex(tag->code, tag->clut, tag->tpage) | fillter;
        SFXMesh mesh    = SFXRender.GetMesh(meshKey, tag->code);

        mesh.PolyFT4(tag);
    }
コード例 #5
0
    private unsafe static void PolyGT4(PSX_LIBGPU.POLY_GT4 *tag)
    {
        UInt32  abrtex = SFXKey.GetABRTex(tag->code, tag->clut, tag->tpage);
        SFXMesh mesh   = SFXRender.GetMesh(abrtex, tag->code);

        mesh.PolyGT4(tag);
    }
コード例 #6
0
    public static void Render()
    {
        RenderTexture.active = (RenderTexture)null;
        Camera    camera = Camera.main ? Camera.main : GameObject.Find("Battle Camera").GetComponent <BattleMapCameraController>().GetComponent <Camera>();
        Matrix4x4 worldToCameraMatrix = camera.worldToCameraMatrix;

        PSXTextureMgr.BeginRender();
        PSXTextureMgr.CaptureBG();
        camera.worldToCameraMatrix = Matrix4x4.identity;
        for (Int32 i = 0; i < SFXRender.commandBuffer.Count; i++)
        {
            SFXRender.commandBuffer[i].Render(i);
        }
        SFXMesh.DummyRender();
        camera.worldToCameraMatrix = worldToCameraMatrix;
    }
コード例 #7
0
    public unsafe static void Add(PSX_LIBGPU.P_TAG *tag)
    {
        Int32 num = (Int32)(tag->code & 252);

        if (num == 32)
        {
            UInt32  meshKey = SFXKey.GetCurrentABR(tag->code);
            SFXMesh mesh    = SFXRender.GetMesh(meshKey, tag->code);
            mesh.PolyF3((PSX_LIBGPU.POLY_F3 *)tag);
            return;
        }
        if (num == 36)
        {
            if (SFX.currentEffectID != 149)
            {
                SFXRender.PolyFT3((PSX_LIBGPU.POLY_FT3 *)tag);
            }
            return;
        }
        if (num == 40)
        {
            UInt32  meshKey = SFXKey.GetCurrentABR(tag->code);
            SFXMesh mesh    = SFXRender.GetMesh(meshKey, tag->code);
            mesh.PolyF4((PSX_LIBGPU.POLY_F4 *)tag);
            return;
        }
        if (num == 44)
        {
            SFXRender.PolyFT4((PSX_LIBGPU.POLY_FT4 *)tag, 0u);
            return;
        }
        if (num == 48)
        {
            UInt32  meshKey = SFXKey.GetCurrentABR(tag->code);
            SFXMesh mesh    = SFXRender.GetMesh(meshKey, tag->code);
            mesh.PolyG3((PSX_LIBGPU.POLY_G3 *)tag);
            return;
        }
        if (num == 52)
        {
            SFXRender.PolyGT3((PSX_LIBGPU.POLY_GT3 *)tag);
            return;
        }
        if (num == 56)
        {
            UInt32  meshKey = SFXKey.GetCurrentABR(tag->code);
            SFXMesh mesh    = SFXRender.GetMesh(meshKey, tag->code);
            mesh.PolyG4((PSX_LIBGPU.POLY_G4 *)tag);
            return;
        }
        if (num == 60)
        {
            if (SFX.currentEffectID != 126 && SFX.currentEffectID != 149 && SFX.currentEffectID != 395)
            {
                SFXRender.PolyGT4((PSX_LIBGPU.POLY_GT4 *)tag);
            }
            return;
        }
        if (num == 64)
        {
            UInt32  meshKey = SFXKey.GetCurrentABR(tag->code) | 134217728u;
            SFXMesh mesh    = SFXRender.GetMesh(meshKey, tag->code);
            mesh.LineF2((PSX_LIBGPU.LINE_F2 *)tag);
            return;
        }
        if (num == 68)
        {
            SFXRender.PolyBFT4((PSX_LIBGPU.POLY_FT4 *)tag);
            return;
        }
        if (num == 72)
        {
            SFXRender.PolyBGT4((PSX_LIBGPU.POLY_GT4 *)tag);
            return;
        }
        if (num == 76)
        {
            SFXRender.PolyFT4((PSX_LIBGPU.POLY_FT4 *)tag, 33554432u);
            return;
        }
        if (num == 80)
        {
            UInt32  meshKey = SFXKey.GetCurrentABR(tag->code) | 134217728u;
            SFXMesh mesh    = SFXRender.GetMesh(meshKey, tag->code);
            mesh.LineG2((PSX_LIBGPU.LINE_G2 *)tag);
            return;
        }
        if (num == 96)
        {
            SFXRender.TILE((PSX_LIBGPU.TILE *)tag, (Int32)((PSX_LIBGPU.TILE *)tag)->w, (Int32)((PSX_LIBGPU.TILE *)tag)->h);
            return;
        }
        if (num == 100)
        {
            SFXRender.SPRT((PSX_LIBGPU.SPRT *)tag, (Int32)((PSX_LIBGPU.SPRT *)tag)->w, (Int32)((PSX_LIBGPU.SPRT *)tag)->h);
            return;
        }
        if (num == 104)
        {
            SFXRender.TILE((PSX_LIBGPU.TILE *)tag, 1, 1);
            return;
        }
        if (num == 112)
        {
            SFXRender.TILE((PSX_LIBGPU.TILE *)tag, 8, 8);
            return;
        }
        if (num == 116)
        {
            SFXRender.SPRT((PSX_LIBGPU.SPRT *)tag, 8, 8);
            return;
        }
        if (num == 120)
        {
            SFXRender.TILE((PSX_LIBGPU.TILE *)tag, 16, 16);
            return;
        }
        if (num != 124)
        {
            switch (tag->code)
            {
            case 225:
                if (tag->getLen() == 1u)
                {
                    SFXRender.DR_TPAGE((PSX_LIBGPU.DR_TPAGE *)tag);
                }
                else
                {
                    SFXRender.DR_TPAGE((PSX_LIBGPU.DR_TPAGE *)tag);
                }
                break;

            case 228:
                SFXRender.DR_AREA((PSX_LIBGPU.DR_AREA *)tag);
                break;

            case 229:
                SFXRender.DR_OFFSET((PSX_LIBGPU.DR_OFFSET *)tag);
                break;

            case 231:
                if (SFX.currentEffectID != 395 && SFX.currentEffectID != 126)
                {
                    SFXRender.DR_MOVE((PSX_LIBGPU.DR_MOVE *)tag);
                }
                break;
            }
            return;
        }
        SFXRender.SPRT((PSX_LIBGPU.SPRT *)tag, 16, 16);
    }
コード例 #8
0
    private static SFXMesh GetMesh(UInt32 meshKey, Byte code)
    {
        UInt32         blendMode = SFXKey.GetBlendMode(meshKey);
        List <SFXMesh> list;

        if (!SFXKey.isLinePolygon(meshKey))
        {
            if (SFXKey.IsTexture(meshKey))
            {
                UInt32 num = blendMode;
                if (num != 0u)
                {
                    if (num != 1u)
                    {
                        list = SFXRender.meshTexSub;
                    }
                    else
                    {
                        UInt32 fillter = SFXKey.GetFillter(meshKey);
                        if (fillter != 33554432u)
                        {
                            if (fillter != 67108864u)
                            {
                                list = ((!SFX.isDebugFillter) ? SFXRender.meshTexAddPS : SFXRender.meshTexAddBL);
                            }
                            else
                            {
                                list = SFXRender.meshTexAddBL;
                            }
                        }
                        else
                        {
                            list = SFXRender.meshTexAddPS;
                        }
                    }
                }
                else
                {
                    list = SFXRender.meshTexOpa;
                }
            }
            else
            {
                UInt32 num = blendMode;
                if (num != 0u)
                {
                    if (num != 1u)
                    {
                        list = SFXRender.meshSub;
                    }
                    else
                    {
                        list = SFXRender.meshAdd;
                    }
                }
                else
                {
                    list = SFXRender.meshOpa;
                }
            }
        }
        else
        {
            UInt32 num = blendMode;
            if (num != 0u)
            {
                if (num != 1u)
                {
                    list = SFXRender.meshLineSub;
                }
                else
                {
                    list = SFXRender.meshLineAdd;
                }
            }
            else
            {
                list = SFXRender.meshLineOpa;
            }
        }
        foreach (SFXMesh sfxmesh in list)
        {
            if (sfxmesh.GetKey() == meshKey)
            {
                return(sfxmesh);
            }
        }
        SFXMesh sfxmesh2 = SFXRender.meshEmpty[SFXRender.meshEmpty.Count - 1];

        SFXRender.meshEmpty.RemoveAt(SFXRender.meshEmpty.Count - 1);
        list.Add(sfxmesh2);
        sfxmesh2.Setup(meshKey, code);
        return(sfxmesh2);
    }