;//////////////////////////////////////////////////////////////////////////////////////// ;// ;// Note that this code is highly unoptimized, but might be useful to learn from or so. ;// ViewScreenMatrix = 0 Giftag = 4 Color = 5 Data = 6 Dest = 30 .global g_PbVu1_Envmap .global g_PbVu1_Envmap_End .global g_Vu1_Triangle .global g_Vu1_Triangle_End .p2align 4 ; This aligns the following data to quadword alignment .vu g_PbVu1_Envmap: nop xtop vi14 nop lq vf28, 0(vi00) nop lq vf29, 1(vi00) nop lq vf30, 2(vi00) nop lq vf31, 3(vi00) nop lq vf24, 4(vi00) nop lq vf25, 5(vi00) nop lq vf26, 6(vi00) nop lq vf27, 7(vi00) nop iaddiu vi02, vi14, 246 ; nop iaddiu vi03, vi14, 246 ; xgkick adree nop iaddiu vi01, vi14, 1 ; coord adress nop lq.xyzw vf06, 0(vi14) ; giftag nop sqi.xyzw vf06, (vi02++) ; store the giftag nop iaddiu vi05, vi00, 80 add.xyzw vf06,vf00,vf00 loi 125.0 addi vf07,vf00,I loi 220.0 addi vf10,vf00,I nop ftoi0 vf10, vf10 nop t_loop: nop lqi vf05, (vi01++) ; XYZ nop lqi vf09, (vi01++) ; Normal ;//////////////////////////////////////////////////////////////////////////////////////// ;// Project point mulax acc, vf28, vf05x nop madday acc, vf29, vf05y nop maddaz acc, vf30, vf05z nop maddw vf05, vf31, vf05w nop nop div q, vf00w, vf05w ;///////////////////////////////////////////////////////////////////////////////////////// ;// Rotate normal mulax acc, vf24, vf09x nop madday acc, vf25, vf09y nop maddaz acc, vf26, vf09z nop maddw vf09, vf27, vf09w loi 0.5 ;// 127.0 ;///////////////////////////////////////////////////////////////////////////////////////// ;// trunc if negative muli vf09, vf09, i nop addi.xy vf09xy, vf09xy, i waitq mulq vf05, vf05, q nop ftoi4 vf05, vf05 nop ; fixedpoint for gif mulq.xy vf09xy, vf09xy, q nop addq.z vf09z, vf00z, q nop nop sqi vf09, (vi02++) ; ST nop sqi vf10, (vi02++) ; RGA nop sqi vf05, (vi02++) ; XYZ nop iaddi vi05, vi05, -1 ; nop nop ; nop ibne vi05, vi00, t_loop ; loop check nop nop nop xgkick vi03 nop[e] nop nop nop g_PbVu1_Envmap_End: