2424 * code
2525 */
2626
27- void * CBillboardRenderer::Microcode = NULL ;
27+ #define VU_FUNCTIONS (name ) \
28+ void vsm##name##_CodeStart(); \
29+ void vsm##name##_CodeEnd()
2830
29- extern " C" void vsmBillboards ();
30- extern " C" void vsmBillboardsEnd ();
31+ #define mVsmAddr (name ) ((void *)vsm##name##_CodeStart)
32+ #define mVsmSize (name ) ((u8 *)vsm##name##_CodeEnd - (u8 *)vsm##name##_CodeStart)
33+
34+ extern " C" {
35+ VU_FUNCTIONS (Billboards);
36+ }
3137
3238CBillboardRenderer::CBillboardRenderer ()
33- : CLinearRenderer(Microcode ,
39+ : CLinearRenderer(mVsmAddr (Billboards), mVsmSize(Billboards) ,
3440 1, // 1 input quad per vertex
3541 0, // the number of output quads per vert doesn't actually matter
3642 // (it's only used for strips)
@@ -45,8 +51,6 @@ CBillboardRenderer::CBillboardRenderer()
4551CBillboardRenderer*
4652CBillboardRenderer::Register ()
4753{
48- Microcode = (void *)vsmBillboards;
49-
5054 // create a renderer and register it
5155
5256 CBillboardRenderer* renderer = new CBillboardRenderer;
@@ -110,7 +114,7 @@ void CBillboardRenderer::InitContext(GLenum primType, tU32 rcChanges, bool userR
110114
111115 bool alpha = drawContext.GetBlendEnabled ();
112116 bool useTexture = glContext.GetTexManager ().GetTexEnabled ();
113- GS::tPrim prim = { PRIM : 6 , IIP : 0 , TME : useTexture, FGE : 0 , ABE : alpha, AA1 : 0 , FST : 0 , CTXT : 0 , FIX : 0 };
117+ GS::tPrim prim = { prim_type : 6 , iip : 0 , tme : useTexture, fge : 0 , abe : alpha, aa1 : 0 , fst : 0 , ctxt : 0 , fix : 0 };
114118 tGifTag giftag = { NLOOP : 0 , EOP : 1 , pad0 : 0 , id : 0 , PRE : 1 , PRIM : *(tU64*)&prim, FLG : 0 , NREG : 4 , REGS0 : 2 , REGS1 : 4 , REGS2 : 2 , REGS3 : 4 };
115119
116120 packet.Pad96 ();
0 commit comments