kjliew / qemu-3dfx

MESA GL/3Dfx Glide pass-through for QEMU
GNU General Public License v2.0
399 stars 55 forks source link

failed to compile on RPI4 #1

Closed ghost closed 4 years ago

ghost commented 4 years ago

Hi!!! what i cant get it's how it would work without 3dfx (so, just gl).. I mean, we dont have mesa driver for windows 98.. how I could really use it?? What I need to install onto the guest windows 98??

after default 3dfx/mesa patch

                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:345:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fpra0p1)(uint32_t arg0, uintptr_t arg1);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:346:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fpra0p2)(uint32_t arg0, uintptr_t arg1, uintptr_t arg2);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:347:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fpra1p2)(uint32_t arg0, uint32_t arg1, uintptr_t arg2);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:348:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fprp2)(uintptr_t arg0, uintptr_t arg1, uintptr_t arg2);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:349:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fpra0p3)(uint32_t arg0, uintptr_t arg1, uintptr_t arg2, uintptr_t arg3);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:350:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fpra0p1a3)(uint32_t arg0, uintptr_t arg1, uint32_t arg2, uint32_t arg3);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:351:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fprp2a5)(uintptr_t arg0, uintptr_t arg1, uintptr_t arg2, uint32_t arg3, uint32_t arg4, uint32_t arg5);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:352:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fpra1p2a3)(uint32_t arg0, uint32_t arg1, uintptr_t arg2, uint32_t arg3);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:353:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fpra1p2a4)(uint32_t arg0, uint32_t arg1, uintptr_t arg2, uint32_t arg3, uint32_t arg4);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:354:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fpra2p3)(uint32_t arg0, uint32_t arg1, uint32_t arg2, uintptr_t arg3);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:355:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fpra3p4a5)(uint32_t arg0, uint32_t arg1, uint32_t arg2, uint32_t arg3, uintptr_t arg4, uint32_t arg5);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:356:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fpra4p5)(uint32_t arg0, uint32_t arg1, uint32_t arg2, uint32_t arg3, uint32_t arg4, uintptr_t arg5);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:357:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fpra5p6)(uint32_t arg0, uint32_t arg1, uint32_t arg2, uint32_t arg3, uint32_t arg4, uint32_t arg5, uintptr_t arg6);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:358:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fpra6p7)(uint32_t arg0, uint32_t arg1, uint32_t arg2, uint32_t arg3, uint32_t arg4, uint32_t arg5, uint32_t arg6, uintptr_t arg7);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:359:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fpra7p8)(uint32_t arg0, uint32_t arg1, uint32_t arg2, uint32_t arg3, uint32_t arg4, uint32_t arg5, uint32_t arg6, uint32_t arg7, uintptr_t arg8);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:360:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fpra6p7a9)(uint32_t arg0, uint32_t arg1, uint32_t arg2, uint32_t arg3, uint32_t arg4, uint32_t arg5, uint32_t arg6, uintptr_t arg7, uint32_t arg8, uint32_t arg9);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:362:22: error: expected declaration specifiers or '...' before '*' token
     float __stdcall (*fprfra0)(uint32_t arg0);
                      ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:363:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fprp0f1)(uintptr_t arg0, float arg1);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:364:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fprp0f2)(uintptr_t arg0, float arg1, float arg2);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:365:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fprf0)(float arg0);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:366:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fprf1)(float arg0, float arg1);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:367:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fpra0f1)(uint32_t arg0, float arg1);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:368:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fpra2f3)(uint32_t arg0, uint32_t arg1, uint32_t arg2, float arg3);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:369:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fprf2)(float arg0, float arg1, float arg2);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:370:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fprf3)(float arg0, float arg1, float arg2, float arg3);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:371:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fprf3a4)(float arg0, float arg1, float arg2, float arg3, uint32_t arg4);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:372:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fpra12f13a14)(uint32_t arg0, uint32_t arg1, uint32_t arg2, uint32_t arg3, uint32_t arg4, uint32_t arg5, uint32_t arg6, uint32_t arg7, uint32_t arg8, uint32_t arg9, uint32_t arg10, uint32_t arg11, uint32_t arg12, float arg13, uint32_t arg14);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:373:5: warning: no semicolon at end of struct or union
     } PARG_FP;
     ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:388:16: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fprp0'
             sfp.fprp0 = tblGlide2x[FEnum].ptr;
                ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:389:26: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fprp0'
             *ret = (*(sfp.fprp0))(parg[0]);
                          ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:398:16: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fprp1'
             sfp.fprp1 = tblGlide2x[FEnum].ptr;
                ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:399:26: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fprp1'
             *ret = (*(sfp.fprp1))(parg[0], parg[1]);
                          ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:408:16: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fpra0p1'
             sfp.fpra0p1 = tblGlide2x[FEnum].ptr;
                ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:409:26: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fpra0p1'
             *ret = (*(sfp.fpra0p1))(arg[0], parg[1]);
                          ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:415:16: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fprp2'
             sfp.fprp2 = tblGlide2x[FEnum].ptr;
                ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:416:26: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fprp2'
             *ret = (*(sfp.fprp2))(parg[0], parg[1], parg[2]);
                          ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:421:16: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fpra0p3'
             sfp.fpra0p3 = tblGlide2x[FEnum].ptr;
                ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:422:26: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fpra0p3'
             *ret = (*(sfp.fpra0p3))(arg[0], parg[1], parg[2], parg[3]);
                          ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:426:9: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fprp2a5'
      sfp.fprp2a5 = tblGlide2x[FEnum].ptr;
         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:427:19: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fprp2a5'
      *ret = (*(sfp.fprp2a5))(parg[0], parg[1],parg[2], arg[3], arg[4], arg[5]);
                   ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:432:16: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fpra2p3'
             sfp.fpra2p3 = tblGlide2x[FEnum].ptr;
                ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:433:26: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fpra2p3'
             *ret = (*(sfp.fpra2p3))(arg[0], arg[1], arg[2], parg[3]);
                          ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:439:16: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fpra1p2'
             sfp.fpra1p2 = tblGlide2x[FEnum].ptr;
                ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:440:26: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fpra1p2'
             *ret = (*(sfp.fpra1p2))(arg[0], arg[1], parg[2]);
                          ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:444:16: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fpra1p2a3'
             sfp.fpra1p2a3 = tblGlide2x[FEnum].ptr;
                ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:445:26: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fpra1p2a3'
             *ret = (*(sfp.fpra1p2a3))(arg[0], arg[1], parg[2], arg[3]);
                          ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:449:16: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fpra1p2a4'
             sfp.fpra1p2a4 = tblGlide2x[FEnum].ptr;
                ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:450:26: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fpra1p2a4'
             *ret = (*(sfp.fpra1p2a4))(arg[0], arg[1], parg[2], arg[3], arg[4]);
                          ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:454:16: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fpra0p1a3'
             sfp.fpra0p1a3 = tblGlide2x[FEnum].ptr;
                ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:455:26: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fpra0p1a3'
             *ret = (*(sfp.fpra0p1a3))(arg[0], parg[1], arg[2], arg[3]);
                          ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:460:9: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fpra3p4a5'
      sfp.fpra3p4a5 = tblGlide2x[FEnum].ptr;
         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:461:19: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fpra3p4a5'
      *ret = (*(sfp.fpra3p4a5))(arg[0], arg[1], arg[2], arg[3], parg[0], arg[5]);
                   ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:469:20: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fpra4p5'
                 sfp.fpra4p5 = tblGlide2x[FEnum].ptr;
                    ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:470:30: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fpra4p5'
                 *ret = (*(sfp.fpra4p5))(arg[0], arg[1], arg[2], arg[3], arg[4], parg[1]);
                              ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:482:16: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fpra5p6'
             sfp.fpra5p6 = tblGlide2x[FEnum].ptr;
                ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:483:26: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fpra5p6'
             *ret = (*(sfp.fpra5p6))(arg[0], arg[1], arg[2], arg[3], arg[4], arg[5], parg[2]);
                          ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:488:16: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fpra6p7'
             sfp.fpra6p7 = tblGlide2x[FEnum].ptr;
                ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:489:26: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fpra6p7'
             *ret = (*(sfp.fpra6p7))(arg[0], arg[1], arg[2], arg[3], arg[4], arg[5], arg[6], parg[3]);
                          ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:493:16: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fpra7p8'
             sfp.fpra7p8 = tblGlide2x[FEnum].ptr;
                ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:494:26: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fpra7p8'
             *ret = (*(sfp.fpra7p8))(arg[0], arg[1], arg[2], arg[3], arg[4], arg[5], arg[6], arg[7], parg[0]);
                          ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:498:16: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fpra6p7a9'
             sfp.fpra6p7a9 = tblGlide2x[FEnum].ptr;
                ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:499:26: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fpra6p7a9'
             *ret = (*(sfp.fpra6p7a9))(arg[0], arg[1], arg[2], arg[3], arg[4], arg[5], arg[6], parg[3], arg[8], arg[9]);
                          ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:506:16: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fpra0p2'
             sfp.fpra0p2 = tblGlide2x[FEnum].ptr;
                ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:507:26: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fpra0p2'
             *ret = (*(sfp.fpra0p2))(arg[0], parg[1], parg[2]);
                          ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:515:6: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fprfra0'
   sfp.fprfra0 = tblGlide2x[FEnum].ptr;
      ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:516:13: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fprfra0'
   r = (*(sfp.fprfra0))(arg[0]);
             ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:526:6: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fprp0f1'
   sfp.fprp0f1 = tblGlide2x[FEnum].ptr;
      ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:527:16: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fprp0f1'
   *ret = (*(sfp.fprp0f1))(parg[0], a1);
                ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:536:6: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fprp0f2'
   sfp.fprp0f2 = tblGlide2x[FEnum].ptr;
      ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:537:16: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fprp0f2'
   *ret = (*(sfp.fprp0f2))(parg[0], a1, a2);
                ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:545:6: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fprf0'
   sfp.fprf0 = tblGlide2x[FEnum].ptr;
      ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:546:16: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fprf0'
   *ret = (*(sfp.fprf0))(a0);
                ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:555:20: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fprf1'
                 sfp.fprf1 = tblGlide2x[FEnum].ptr;
                    ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:556:30: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fprf1'
                 *ret = (*(sfp.fprf1))(a0, a1);
                              ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:564:6: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fpra0f1'
   sfp.fpra0f1 = tblGlide2x[FEnum].ptr;
      ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:565:16: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fpra0f1'
   *ret = (*(sfp.fpra0f1))(arg[0], a1);
                ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:573:6: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fpra2f3'
   sfp.fpra2f3 = tblGlide2x[FEnum].ptr;
      ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:574:16: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fpra2f3'
   *ret = (*(sfp.fpra2f3))(arg[0], arg[1], arg[2], a3);
                ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:584:6: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fprf2'
   sfp.fprf2 = tblGlide2x[FEnum].ptr;
      ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:585:16: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fprf2'
   *ret = (*(sfp.fprf2))(a0, a1, a2);
                ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:596:6: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fprf3'
   sfp.fprf3 = tblGlide2x[FEnum].ptr;
      ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:597:16: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fprf3'
   *ret = (*(sfp.fprf3))(a0, a1, a2, a3);
                ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:608:6: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fprf3a4'
   sfp.fprf3a4 = tblGlide2x[FEnum].ptr;
      ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:609:16: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fprf3a4'
   *ret = (*(sfp.fprf3a4))(a0, a1, a2, a3, arg[4]);
                ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:617:6: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fpra12f13a14'
   sfp.fpra12f13a14 = tblGlide2x[FEnum].ptr;
      ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:618:16: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fpra12f13a14'
   *ret = (*(sfp.fpra12f13a14))(arg[0], arg[1], arg[2], arg[3], arg[4], arg[5], arg[6], arg[7], arg[8], arg[9], arg[10], arg[11], arg[12], a13, arg[14]);
                ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:643:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fpra0)(void);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:644:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fpra1)(uint32_t arg0);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:645:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fpra2)(uint32_t arg0, uint32_t arg1);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:646:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fpra3)(uint32_t arg0, uint32_t arg1, uint32_t arg2);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:647:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fpra4)(uint32_t arg0, uint32_t arg1, uint32_t arg2, uint32_t arg3);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:648:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fpra5)(uint32_t arg0, uint32_t arg1, uint32_t arg2, uint32_t arg3, uint32_t arg4);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:649:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fpra6)(uint32_t arg0, uint32_t arg1, uint32_t arg2, uint32_t arg3, uint32_t arg4, uint32_t arg5);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:650:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fpra7)(uint32_t arg0, uint32_t arg1, uint32_t arg2, uint32_t arg3, uint32_t arg4, uint32_t arg5, uint32_t arg6);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:651:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fpra8)(uint32_t arg0, uint32_t arg1, uint32_t arg2, uint32_t arg3, uint32_t arg4, uint32_t arg5, uint32_t arg6, uint32_t arg7);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:652:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fpra9)(uint32_t arg0, uint32_t arg1, uint32_t arg2, uint32_t arg3, uint32_t arg4, uint32_t arg5, uint32_t arg6, uint32_t arg7, uint32_t arg8);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:653:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fpra10)(uint32_t arg0, uint32_t arg1, uint32_t arg2, uint32_t arg3, uint32_t arg4, uint32_t arg5, uint32_t arg6, uint32_t arg7, uint32_t arg8, uint32_t arg9);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:654:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fpra11)(uint32_t arg0, uint32_t arg1, uint32_t arg2, uint32_t arg3, uint32_t arg4, uint32_t arg5, uint32_t arg6, uint32_t arg7, uint32_t arg8, uint32_t arg9, uint32_t arg10);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:655:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fpra12)(uint32_t arg0, uint32_t arg1, uint32_t arg2, uint32_t arg3, uint32_t arg4, uint32_t arg5, uint32_t arg6, uint32_t arg7, uint32_t arg8, uint32_t arg9, uint32_t arg10, uint32_t arg11);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:656:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fpra13)(uint32_t arg0, uint32_t arg1, uint32_t arg2, uint32_t arg3, uint32_t arg4, uint32_t arg5, uint32_t arg6, uint32_t arg7, uint32_t arg8, uint32_t arg9, uint32_t arg10, uint32_t arg11, uint32_t arg12);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:657:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fpra14)(uint32_t arg0, uint32_t arg1, uint32_t arg2, uint32_t arg3, uint32_t arg4, uint32_t arg5, uint32_t arg6, uint32_t arg7, uint32_t arg8, uint32_t arg9, uint32_t arg10, uint32_t arg11, uint32_t arg12, uint32_t arg13);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:658:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fpra15)(uint32_t arg0, uint32_t arg1, uint32_t arg2, uint32_t arg3, uint32_t arg4, uint32_t arg5, uint32_t arg6, uint32_t arg7, uint32_t arg8, uint32_t arg9, uint32_t arg10, uint32_t arg11, uint32_t arg12, uint32_t arg13, uint32_t arg14);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:659:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fpra16)(uint32_t arg0, uint32_t arg1, uint32_t arg2, uint32_t arg3, uint32_t arg4, uint32_t arg5, uint32_t arg6, uint32_t arg7, uint32_t arg8, uint32_t arg9, uint32_t arg10, uint32_t arg11, uint32_t arg12, uint32_t arg13, uint32_t arg14, uint32_t arg15);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:660:5: warning: no semicolon at end of struct or union
     } UARG_FP;
     ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:665:5: error: 'UARG_FP' {aka 'union <anonymous>'} has no member named 'fpra0'
  ufp.fpra0 = tblGlide2x[FEnum].ptr;
     ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:666:15: error: 'UARG_FP' {aka 'union <anonymous>'} has no member named 'fpra0'
  *ret = (*(ufp.fpra0))();
               ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:669:5: error: 'UARG_FP' {aka 'union <anonymous>'} has no member named 'fpra1'
  ufp.fpra1 = tblGlide2x[FEnum].ptr;
     ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:670:15: error: 'UARG_FP' {aka 'union <anonymous>'} has no member named 'fpra1'
  *ret = (*(ufp.fpra1))(arg[0]);
               ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:673:5: error: 'UARG_FP' {aka 'union <anonymous>'} has no member named 'fpra2'
  ufp.fpra2 = tblGlide2x[FEnum].ptr;
     ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:674:15: error: 'UARG_FP' {aka 'union <anonymous>'} has no member named 'fpra2'
  *ret = (*(ufp.fpra2))(arg[0], arg[1]);
               ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:677:5: error: 'UARG_FP' {aka 'union <anonymous>'} has no member named 'fpra3'
  ufp.fpra3 = tblGlide2x[FEnum].ptr;
     ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:678:15: error: 'UARG_FP' {aka 'union <anonymous>'} has no member named 'fpra3'
  *ret = (*(ufp.fpra3))(arg[0], arg[1], arg[2]);
               ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:681:5: error: 'UARG_FP' {aka 'union <anonymous>'} has no member named 'fpra4'
  ufp.fpra4 = tblGlide2x[FEnum].ptr;
     ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:682:15: error: 'UARG_FP' {aka 'union <anonymous>'} has no member named 'fpra4'
  *ret = (*(ufp.fpra4))(arg[0], arg[1], arg[2], arg[3]);
               ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:685:5: error: 'UARG_FP' {aka 'union <anonymous>'} has no member named 'fpra5'
  ufp.fpra5 = tblGlide2x[FEnum].ptr;
     ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:686:15: error: 'UARG_FP' {aka 'union <anonymous>'} has no member named 'fpra5'
  *ret = (*(ufp.fpra5))(arg[0], arg[1], arg[2], arg[3], arg[4]);
               ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:689:5: error: 'UARG_FP' {aka 'union <anonymous>'} has no member named 'fpra6'
  ufp.fpra6 = tblGlide2x[FEnum].ptr;
     ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:690:15: error: 'UARG_FP' {aka 'union <anonymous>'} has no member named 'fpra6'
  *ret = (*(ufp.fpra6))(arg[0], arg[1], arg[2], arg[3], arg[4], arg[5]);
               ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:693:5: error: 'UARG_FP' {aka 'union <anonymous>'} has no member named 'fpra7'
  ufp.fpra7 = tblGlide2x[FEnum].ptr;
     ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:694:15: error: 'UARG_FP' {aka 'union <anonymous>'} has no member named 'fpra7'
  *ret = (*(ufp.fpra7))(arg[0], arg[1], arg[2], arg[3], arg[4], arg[5], arg[6]);
               ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:697:5: error: 'UARG_FP' {aka 'union <anonymous>'} has no member named 'fpra8'
  ufp.fpra8 = tblGlide2x[FEnum].ptr;
     ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:698:15: error: 'UARG_FP' {aka 'union <anonymous>'} has no member named 'fpra8'
  *ret = (*(ufp.fpra8))(arg[0], arg[1], arg[2], arg[3], arg[4], arg[5], arg[6], arg[7]);
               ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:701:5: error: 'UARG_FP' {aka 'union <anonymous>'} has no member named 'fpra9'
  ufp.fpra9 = tblGlide2x[FEnum].ptr;
     ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:702:15: error: 'UARG_FP' {aka 'union <anonymous>'} has no member named 'fpra9'
  *ret = (*(ufp.fpra9))(arg[0], arg[1], arg[2], arg[3], arg[4], arg[5], arg[6], arg[7], arg[8]);
               ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:705:5: error: 'UARG_FP' {aka 'union <anonymous>'} has no member named 'fpra10'
  ufp.fpra10 = tblGlide2x[FEnum].ptr;
     ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:706:15: error: 'UARG_FP' {aka 'union <anonymous>'} has no member named 'fpra10'
  *ret = (*(ufp.fpra10))(arg[0], arg[1], arg[2], arg[3], arg[4], arg[5], arg[6], arg[7], arg[8], arg[9]);
               ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:709:5: error: 'UARG_FP' {aka 'union <anonymous>'} has no member named 'fpra11'
  ufp.fpra11 = tblGlide2x[FEnum].ptr;
     ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:710:15: error: 'UARG_FP' {aka 'union <anonymous>'} has no member named 'fpra11'
  *ret = (*(ufp.fpra11))(arg[0], arg[1], arg[2], arg[3], arg[4], arg[5], arg[6], arg[7], arg[8], arg[9], arg[10]);
               ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:713:5: error: 'UARG_FP' {aka 'union <anonymous>'} has no member named 'fpra12'
  ufp.fpra12 = tblGlide2x[FEnum].ptr;
     ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:714:15: error: 'UARG_FP' {aka 'union <anonymous>'} has no member named 'fpra12'
  *ret = (*(ufp.fpra12))(arg[0], arg[1], arg[2], arg[3], arg[4], arg[5], arg[6], arg[7], arg[8], arg[9], arg[10], arg[11]);
               ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:717:5: error: 'UARG_FP' {aka 'union <anonymous>'} has no member named 'fpra13'
  ufp.fpra13 = tblGlide2x[FEnum].ptr;
     ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:718:15: error: 'UARG_FP' {aka 'union <anonymous>'} has no member named 'fpra13'
  *ret = (*(ufp.fpra13))(arg[0], arg[1], arg[2], arg[3], arg[4], arg[5], arg[6], arg[7], arg[8], arg[9], arg[10], arg[11], arg[12]);
               ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:721:5: error: 'UARG_FP' {aka 'union <anonymous>'} has no member named 'fpra14'
  ufp.fpra14 = tblGlide2x[FEnum].ptr;
     ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:722:15: error: 'UARG_FP' {aka 'union <anonymous>'} has no member named 'fpra14'
  *ret = (*(ufp.fpra14))(arg[0], arg[1], arg[2], arg[3], arg[4], arg[5], arg[6], arg[7], arg[8], arg[9], arg[10], arg[11], arg[12], arg[13]);
               ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:725:5: error: 'UARG_FP' {aka 'union <anonymous>'} has no member named 'fpra15'
  ufp.fpra15 = tblGlide2x[FEnum].ptr;
     ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:726:15: error: 'UARG_FP' {aka 'union <anonymous>'} has no member named 'fpra15'
  *ret = (*(ufp.fpra15))(arg[0], arg[1], arg[2], arg[3], arg[4], arg[5], arg[6], arg[7], arg[8], arg[9], arg[10], arg[11], arg[12], arg[13], arg[14]);
               ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:729:5: error: 'UARG_FP' {aka 'union <anonymous>'} has no member named 'fpra16'
  ufp.fpra16 = tblGlide2x[FEnum].ptr;
     ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:730:15: error: 'UARG_FP' {aka 'union <anonymous>'} has no member named 'fpra16'
  *ret = (*(ufp.fpra16))(arg[0], arg[1], arg[2], arg[3], arg[4], arg[5], arg[6], arg[7], arg[8], arg[9], arg[10], arg[11], arg[12], arg[13], arg[14], arg[15]);
               ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:661:13: warning: variable 'ufp' set but not used [-Wunused-but-set-variable]
     UARG_FP ufp;
             ^~~
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:374:13: warning: variable 'sfp' set but not used [-Wunused-but-set-variable]
     PARG_FP sfp;
             ^~~
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c: At top level:
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:746:17: error: expected declaration specifiers or '...' before '*' token
 void __stdcall (*setConfig)(const uint32_t flag);
                 ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:747:17: error: expected declaration specifiers or '...' before '*' token
 void __stdcall (*setConfigRes)(const int res);
                 ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c: In function 'conf_glide2x':
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:750:9: error: 'setConfig' undeclared (first use in this function); did you mean 'GTestConfig'?
     if (setConfig)
         ^~~~~~~~~
         GTestConfig
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:752:16: error: 'setConfigRes' undeclared (first use in this function); did you mean 'GTestConfig'?
     if (res && setConfigRes)
                ^~~~~~~~~~~~
                GTestConfig
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c: In function 'init_glide2x':
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:791:5: error: 'setConfig' undeclared (first use in this function); did you mean 'GTestConfig'?
     setConfig = (void *)(dlsym(hDll, "setConfig"));
     ^~~~~~~~~
     GTestConfig
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:792:5: error: 'setConfigRes' undeclared (first use in this function); did you mean 'GTestConfig'?
     setConfigRes = (void *)(dlsym(hDll, "setConfigRes"));
     ^~~~~~~~~~~~
     GTestConfig
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c: In function 'wrReadRegion':
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:289:1: warning: control reaches end of non-void function [-Wreturn-type]
 }
 ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c: In function 'wrWriteRegion':
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:296:1: warning: control reaches end of non-void function [-Wreturn-type]
 }
 ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c: In function 'wrGetProcAddress':
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:303:1: warning: control reaches end of non-void function [-Wreturn-type]
 }
 ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c: In function 'wrGetString':
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:310:1: warning: control reaches end of non-void function [-Wreturn-type]
 }
 ^
make[1]: *** [/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/rules.mak:69: hw/3dfx/glide2x_impl.o] Error 1
make[1]: *** Se espera a que terminen otras tareas....
  CC      i386-softmmu/migration/ram.o
  CC      i386-softmmu/accel/accel.o
make: *** [Makefile:472: x86_64-softmmu/all] Error 2
make: *** Se espera a que terminen otras tareas....
  CC      i386-softmmu/accel/qtest.o
  CC      i386-softmmu/accel/stubs/hax-stub.o
  CC      i386-softmmu/accel/stubs/hvf-stub.o
  CC      i386-softmmu/accel/stubs/whpx-stub.o
  CC      i386-softmmu/accel/stubs/kvm-stub.o
  CC      i386-softmmu/accel/tcg/tcg-all.o
  CC      i386-softmmu/accel/tcg/cputlb.o
  CC      i386-softmmu/accel/tcg/tcg-runtime.o
  CC      i386-softmmu/accel/tcg/tcg-runtime-gvec.o
  CC      i386-softmmu/accel/tcg/cpu-exec.o
  CC      i386-softmmu/accel/tcg/cpu-exec-common.o
  CC      i386-softmmu/accel/tcg/translate-all.o
  CC      i386-softmmu/accel/tcg/translator.o
  CC      i386-softmmu/dump/dump.o
  CC      i386-softmmu/hw/3dfx/glidept_mm.o
  CC      i386-softmmu/hw/3dfx/glide2x_impl.o
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c: In function 'wrReadRegion':
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:286:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fpra5p6)(uint32_t arg0, uint32_t arg1, uint32_t arg2, uint32_t arg3, uint32_t arg4, uint32_t arg5, uintptr_t arg6);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:287:5: error: 'fpra5p6' undeclared (first use in this function)
     fpra5p6 = tblGlide2x[FEnum_grLfbReadRegion].ptr;
     ^~~~~~~
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:287:5: note: each undeclared identifier is reported only once for each function it appears in
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c: In function 'wrWriteRegion':
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:293:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fpra6p7)(uint32_t arg0, uint32_t arg1, uint32_t arg2, uint32_t arg3, uint32_t arg4, uint32_t arg5, uint32_t arg6, uintptr_t arg7);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:294:5: error: 'fpra6p7' undeclared (first use in this function)
     fpra6p7 = tblGlide2x[FEnum_grLfbWriteRegion].ptr;
     ^~~~~~~
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c: In function 'wrGetProcAddress':
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:300:26: error: expected declaration specifiers or '...' before '*' token
     uintptr_t __stdcall (*fprp0)(uintptr_t arg0);
                          ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:301:5: error: 'fprp0' undeclared (first use in this function)
     fprp0 = tblGlide2x[FEnum_grGetProcAddress].ptr;
     ^~~~~
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c: In function 'wrGetString':
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:307:29: error: expected declaration specifiers or '...' before '*' token
     const char * __stdcall (*fpra0)(uint32_t arg0);
                             ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:308:5: error: 'fpra0' undeclared (first use in this function)
     fpra0 = tblGlide2x[FEnum_grGetString].ptr;
     ^~~~~
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c: In function 'doGlideFunc':
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:343:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fprp0)(uintptr_t arg0);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:344:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fprp1)(uintptr_t arg0, uintptr_t arg1);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:345:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fpra0p1)(uint32_t arg0, uintptr_t arg1);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:346:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fpra0p2)(uint32_t arg0, uintptr_t arg1, uintptr_t arg2);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:347:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fpra1p2)(uint32_t arg0, uint32_t arg1, uintptr_t arg2);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:348:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fprp2)(uintptr_t arg0, uintptr_t arg1, uintptr_t arg2);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:349:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fpra0p3)(uint32_t arg0, uintptr_t arg1, uintptr_t arg2, uintptr_t arg3);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:350:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fpra0p1a3)(uint32_t arg0, uintptr_t arg1, uint32_t arg2, uint32_t arg3);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:351:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fprp2a5)(uintptr_t arg0, uintptr_t arg1, uintptr_t arg2, uint32_t arg3, uint32_t arg4, uint32_t arg5);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:352:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fpra1p2a3)(uint32_t arg0, uint32_t arg1, uintptr_t arg2, uint32_t arg3);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:353:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fpra1p2a4)(uint32_t arg0, uint32_t arg1, uintptr_t arg2, uint32_t arg3, uint32_t arg4);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:354:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fpra2p3)(uint32_t arg0, uint32_t arg1, uint32_t arg2, uintptr_t arg3);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:355:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fpra3p4a5)(uint32_t arg0, uint32_t arg1, uint32_t arg2, uint32_t arg3, uintptr_t arg4, uint32_t arg5);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:356:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fpra4p5)(uint32_t arg0, uint32_t arg1, uint32_t arg2, uint32_t arg3, uint32_t arg4, uintptr_t arg5);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:357:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fpra5p6)(uint32_t arg0, uint32_t arg1, uint32_t arg2, uint32_t arg3, uint32_t arg4, uint32_t arg5, uintptr_t arg6);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:358:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fpra6p7)(uint32_t arg0, uint32_t arg1, uint32_t arg2, uint32_t arg3, uint32_t arg4, uint32_t arg5, uint32_t arg6, uintptr_t arg7);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:359:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fpra7p8)(uint32_t arg0, uint32_t arg1, uint32_t arg2, uint32_t arg3, uint32_t arg4, uint32_t arg5, uint32_t arg6, uint32_t arg7, uintptr_t arg8);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:360:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fpra6p7a9)(uint32_t arg0, uint32_t arg1, uint32_t arg2, uint32_t arg3, uint32_t arg4, uint32_t arg5, uint32_t arg6, uintptr_t arg7, uint32_t arg8, uint32_t arg9);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:362:22: error: expected declaration specifiers or '...' before '*' token
     float __stdcall (*fprfra0)(uint32_t arg0);
                      ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:363:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fprp0f1)(uintptr_t arg0, float arg1);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:364:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fprp0f2)(uintptr_t arg0, float arg1, float arg2);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:365:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fprf0)(float arg0);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:366:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fprf1)(float arg0, float arg1);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:367:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fpra0f1)(uint32_t arg0, float arg1);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:368:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fpra2f3)(uint32_t arg0, uint32_t arg1, uint32_t arg2, float arg3);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:369:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fprf2)(float arg0, float arg1, float arg2);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:370:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fprf3)(float arg0, float arg1, float arg2, float arg3);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:371:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fprf3a4)(float arg0, float arg1, float arg2, float arg3, uint32_t arg4);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:372:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fpra12f13a14)(uint32_t arg0, uint32_t arg1, uint32_t arg2, uint32_t arg3, uint32_t arg4, uint32_t arg5, uint32_t arg6, uint32_t arg7, uint32_t arg8, uint32_t arg9, uint32_t arg10, uint32_t arg11, uint32_t arg12, float arg13, uint32_t arg14);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:373:5: warning: no semicolon at end of struct or union
     } PARG_FP;
     ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:388:16: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fprp0'
             sfp.fprp0 = tblGlide2x[FEnum].ptr;
                ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:389:26: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fprp0'
             *ret = (*(sfp.fprp0))(parg[0]);
                          ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:398:16: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fprp1'
             sfp.fprp1 = tblGlide2x[FEnum].ptr;
                ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:399:26: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fprp1'
             *ret = (*(sfp.fprp1))(parg[0], parg[1]);
                          ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:408:16: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fpra0p1'
             sfp.fpra0p1 = tblGlide2x[FEnum].ptr;
                ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:409:26: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fpra0p1'
             *ret = (*(sfp.fpra0p1))(arg[0], parg[1]);
                          ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:415:16: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fprp2'
             sfp.fprp2 = tblGlide2x[FEnum].ptr;
                ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:416:26: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fprp2'
             *ret = (*(sfp.fprp2))(parg[0], parg[1], parg[2]);
                          ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:421:16: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fpra0p3'
             sfp.fpra0p3 = tblGlide2x[FEnum].ptr;
                ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:422:26: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fpra0p3'
             *ret = (*(sfp.fpra0p3))(arg[0], parg[1], parg[2], parg[3]);
                          ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:426:9: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fprp2a5'
      sfp.fprp2a5 = tblGlide2x[FEnum].ptr;
         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:427:19: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fprp2a5'
      *ret = (*(sfp.fprp2a5))(parg[0], parg[1],parg[2], arg[3], arg[4], arg[5]);
                   ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:432:16: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fpra2p3'
             sfp.fpra2p3 = tblGlide2x[FEnum].ptr;
                ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:433:26: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fpra2p3'
             *ret = (*(sfp.fpra2p3))(arg[0], arg[1], arg[2], parg[3]);
                          ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:439:16: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fpra1p2'
             sfp.fpra1p2 = tblGlide2x[FEnum].ptr;
                ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:440:26: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fpra1p2'
             *ret = (*(sfp.fpra1p2))(arg[0], arg[1], parg[2]);
                          ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:444:16: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fpra1p2a3'
             sfp.fpra1p2a3 = tblGlide2x[FEnum].ptr;
                ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:445:26: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fpra1p2a3'
             *ret = (*(sfp.fpra1p2a3))(arg[0], arg[1], parg[2], arg[3]);
                          ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:449:16: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fpra1p2a4'
             sfp.fpra1p2a4 = tblGlide2x[FEnum].ptr;
                ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:450:26: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fpra1p2a4'
             *ret = (*(sfp.fpra1p2a4))(arg[0], arg[1], parg[2], arg[3], arg[4]);
                          ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:454:16: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fpra0p1a3'
             sfp.fpra0p1a3 = tblGlide2x[FEnum].ptr;
                ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:455:26: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fpra0p1a3'
             *ret = (*(sfp.fpra0p1a3))(arg[0], parg[1], arg[2], arg[3]);
                          ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:460:9: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fpra3p4a5'
      sfp.fpra3p4a5 = tblGlide2x[FEnum].ptr;
         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:461:19: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fpra3p4a5'
      *ret = (*(sfp.fpra3p4a5))(arg[0], arg[1], arg[2], arg[3], parg[0], arg[5]);
                   ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:469:20: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fpra4p5'
                 sfp.fpra4p5 = tblGlide2x[FEnum].ptr;
                    ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:470:30: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fpra4p5'
                 *ret = (*(sfp.fpra4p5))(arg[0], arg[1], arg[2], arg[3], arg[4], parg[1]);
                              ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:482:16: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fpra5p6'
             sfp.fpra5p6 = tblGlide2x[FEnum].ptr;
                ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:483:26: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fpra5p6'
             *ret = (*(sfp.fpra5p6))(arg[0], arg[1], arg[2], arg[3], arg[4], arg[5], parg[2]);
                          ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:488:16: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fpra6p7'
             sfp.fpra6p7 = tblGlide2x[FEnum].ptr;
                ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:489:26: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fpra6p7'
             *ret = (*(sfp.fpra6p7))(arg[0], arg[1], arg[2], arg[3], arg[4], arg[5], arg[6], parg[3]);
                          ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:493:16: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fpra7p8'
             sfp.fpra7p8 = tblGlide2x[FEnum].ptr;
                ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:494:26: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fpra7p8'
             *ret = (*(sfp.fpra7p8))(arg[0], arg[1], arg[2], arg[3], arg[4], arg[5], arg[6], arg[7], parg[0]);
                          ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:498:16: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fpra6p7a9'
             sfp.fpra6p7a9 = tblGlide2x[FEnum].ptr;
                ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:499:26: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fpra6p7a9'
             *ret = (*(sfp.fpra6p7a9))(arg[0], arg[1], arg[2], arg[3], arg[4], arg[5], arg[6], parg[3], arg[8], arg[9]);
                          ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:506:16: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fpra0p2'
             sfp.fpra0p2 = tblGlide2x[FEnum].ptr;
                ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:507:26: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fpra0p2'
             *ret = (*(sfp.fpra0p2))(arg[0], parg[1], parg[2]);
                          ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:515:6: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fprfra0'
   sfp.fprfra0 = tblGlide2x[FEnum].ptr;
      ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:516:13: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fprfra0'
   r = (*(sfp.fprfra0))(arg[0]);
             ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:526:6: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fprp0f1'
   sfp.fprp0f1 = tblGlide2x[FEnum].ptr;
      ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:527:16: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fprp0f1'
   *ret = (*(sfp.fprp0f1))(parg[0], a1);
                ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:536:6: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fprp0f2'
   sfp.fprp0f2 = tblGlide2x[FEnum].ptr;
      ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:537:16: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fprp0f2'
   *ret = (*(sfp.fprp0f2))(parg[0], a1, a2);
                ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:545:6: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fprf0'
   sfp.fprf0 = tblGlide2x[FEnum].ptr;
      ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:546:16: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fprf0'
   *ret = (*(sfp.fprf0))(a0);
                ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:555:20: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fprf1'
                 sfp.fprf1 = tblGlide2x[FEnum].ptr;
                    ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:556:30: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fprf1'
                 *ret = (*(sfp.fprf1))(a0, a1);
                              ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:564:6: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fpra0f1'
   sfp.fpra0f1 = tblGlide2x[FEnum].ptr;
      ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:565:16: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fpra0f1'
   *ret = (*(sfp.fpra0f1))(arg[0], a1);
                ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:573:6: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fpra2f3'
   sfp.fpra2f3 = tblGlide2x[FEnum].ptr;
      ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:574:16: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fpra2f3'
   *ret = (*(sfp.fpra2f3))(arg[0], arg[1], arg[2], a3);
                ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:584:6: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fprf2'
   sfp.fprf2 = tblGlide2x[FEnum].ptr;
      ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:585:16: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fprf2'
   *ret = (*(sfp.fprf2))(a0, a1, a2);
                ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:596:6: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fprf3'
   sfp.fprf3 = tblGlide2x[FEnum].ptr;
      ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:597:16: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fprf3'
   *ret = (*(sfp.fprf3))(a0, a1, a2, a3);
                ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:608:6: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fprf3a4'
   sfp.fprf3a4 = tblGlide2x[FEnum].ptr;
      ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:609:16: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fprf3a4'
   *ret = (*(sfp.fprf3a4))(a0, a1, a2, a3, arg[4]);
                ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:617:6: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fpra12f13a14'
   sfp.fpra12f13a14 = tblGlide2x[FEnum].ptr;
      ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:618:16: error: 'PARG_FP' {aka 'union <anonymous>'} has no member named 'fpra12f13a14'
   *ret = (*(sfp.fpra12f13a14))(arg[0], arg[1], arg[2], arg[3], arg[4], arg[5], arg[6], arg[7], arg[8], arg[9], arg[10], arg[11], arg[12], a13, arg[14]);
                ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:643:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fpra0)(void);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:644:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fpra1)(uint32_t arg0);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:645:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fpra2)(uint32_t arg0, uint32_t arg1);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:646:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fpra3)(uint32_t arg0, uint32_t arg1, uint32_t arg2);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:647:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fpra4)(uint32_t arg0, uint32_t arg1, uint32_t arg2, uint32_t arg3);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:648:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fpra5)(uint32_t arg0, uint32_t arg1, uint32_t arg2, uint32_t arg3, uint32_t arg4);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:649:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fpra6)(uint32_t arg0, uint32_t arg1, uint32_t arg2, uint32_t arg3, uint32_t arg4, uint32_t arg5);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:650:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fpra7)(uint32_t arg0, uint32_t arg1, uint32_t arg2, uint32_t arg3, uint32_t arg4, uint32_t arg5, uint32_t arg6);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:651:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fpra8)(uint32_t arg0, uint32_t arg1, uint32_t arg2, uint32_t arg3, uint32_t arg4, uint32_t arg5, uint32_t arg6, uint32_t arg7);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:652:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fpra9)(uint32_t arg0, uint32_t arg1, uint32_t arg2, uint32_t arg3, uint32_t arg4, uint32_t arg5, uint32_t arg6, uint32_t arg7, uint32_t arg8);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:653:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fpra10)(uint32_t arg0, uint32_t arg1, uint32_t arg2, uint32_t arg3, uint32_t arg4, uint32_t arg5, uint32_t arg6, uint32_t arg7, uint32_t arg8, uint32_t arg9);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:654:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fpra11)(uint32_t arg0, uint32_t arg1, uint32_t arg2, uint32_t arg3, uint32_t arg4, uint32_t arg5, uint32_t arg6, uint32_t arg7, uint32_t arg8, uint32_t arg9, uint32_t arg10);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:655:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fpra12)(uint32_t arg0, uint32_t arg1, uint32_t arg2, uint32_t arg3, uint32_t arg4, uint32_t arg5, uint32_t arg6, uint32_t arg7, uint32_t arg8, uint32_t arg9, uint32_t arg10, uint32_t arg11);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:656:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fpra13)(uint32_t arg0, uint32_t arg1, uint32_t arg2, uint32_t arg3, uint32_t arg4, uint32_t arg5, uint32_t arg6, uint32_t arg7, uint32_t arg8, uint32_t arg9, uint32_t arg10, uint32_t arg11, uint32_t arg12);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:657:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fpra14)(uint32_t arg0, uint32_t arg1, uint32_t arg2, uint32_t arg3, uint32_t arg4, uint32_t arg5, uint32_t arg6, uint32_t arg7, uint32_t arg8, uint32_t arg9, uint32_t arg10, uint32_t arg11, uint32_t arg12, uint32_t arg13);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:658:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fpra15)(uint32_t arg0, uint32_t arg1, uint32_t arg2, uint32_t arg3, uint32_t arg4, uint32_t arg5, uint32_t arg6, uint32_t arg7, uint32_t arg8, uint32_t arg9, uint32_t arg10, uint32_t arg11, uint32_t arg12, uint32_t arg13, uint32_t arg14);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:659:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fpra16)(uint32_t arg0, uint32_t arg1, uint32_t arg2, uint32_t arg3, uint32_t arg4, uint32_t arg5, uint32_t arg6, uint32_t arg7, uint32_t arg8, uint32_t arg9, uint32_t arg10, uint32_t arg11, uint32_t arg12, uint32_t arg13, uint32_t arg14, uint32_t arg15);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:660:5: warning: no semicolon at end of struct or union
     } UARG_FP;
     ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:665:5: error: 'UARG_FP' {aka 'union <anonymous>'} has no member named 'fpra0'
  ufp.fpra0 = tblGlide2x[FEnum].ptr;
     ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:666:15: error: 'UARG_FP' {aka 'union <anonymous>'} has no member named 'fpra0'
  *ret = (*(ufp.fpra0))();
               ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:669:5: error: 'UARG_FP' {aka 'union <anonymous>'} has no member named 'fpra1'
  ufp.fpra1 = tblGlide2x[FEnum].ptr;
     ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:670:15: error: 'UARG_FP' {aka 'union <anonymous>'} has no member named 'fpra1'
  *ret = (*(ufp.fpra1))(arg[0]);
               ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:673:5: error: 'UARG_FP' {aka 'union <anonymous>'} has no member named 'fpra2'
  ufp.fpra2 = tblGlide2x[FEnum].ptr;
     ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:674:15: error: 'UARG_FP' {aka 'union <anonymous>'} has no member named 'fpra2'
  *ret = (*(ufp.fpra2))(arg[0], arg[1]);
               ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:677:5: error: 'UARG_FP' {aka 'union <anonymous>'} has no member named 'fpra3'
  ufp.fpra3 = tblGlide2x[FEnum].ptr;
     ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:678:15: error: 'UARG_FP' {aka 'union <anonymous>'} has no member named 'fpra3'
  *ret = (*(ufp.fpra3))(arg[0], arg[1], arg[2]);
               ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:681:5: error: 'UARG_FP' {aka 'union <anonymous>'} has no member named 'fpra4'
  ufp.fpra4 = tblGlide2x[FEnum].ptr;
     ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:682:15: error: 'UARG_FP' {aka 'union <anonymous>'} has no member named 'fpra4'
  *ret = (*(ufp.fpra4))(arg[0], arg[1], arg[2], arg[3]);
               ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:685:5: error: 'UARG_FP' {aka 'union <anonymous>'} has no member named 'fpra5'
  ufp.fpra5 = tblGlide2x[FEnum].ptr;
     ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:686:15: error: 'UARG_FP' {aka 'union <anonymous>'} has no member named 'fpra5'
  *ret = (*(ufp.fpra5))(arg[0], arg[1], arg[2], arg[3], arg[4]);
               ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:689:5: error: 'UARG_FP' {aka 'union <anonymous>'} has no member named 'fpra6'
  ufp.fpra6 = tblGlide2x[FEnum].ptr;
     ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:690:15: error: 'UARG_FP' {aka 'union <anonymous>'} has no member named 'fpra6'
  *ret = (*(ufp.fpra6))(arg[0], arg[1], arg[2], arg[3], arg[4], arg[5]);
               ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:693:5: error: 'UARG_FP' {aka 'union <anonymous>'} has no member named 'fpra7'
  ufp.fpra7 = tblGlide2x[FEnum].ptr;
     ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:694:15: error: 'UARG_FP' {aka 'union <anonymous>'} has no member named 'fpra7'
  *ret = (*(ufp.fpra7))(arg[0], arg[1], arg[2], arg[3], arg[4], arg[5], arg[6]);
               ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:697:5: error: 'UARG_FP' {aka 'union <anonymous>'} has no member named 'fpra8'
  ufp.fpra8 = tblGlide2x[FEnum].ptr;
     ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:698:15: error: 'UARG_FP' {aka 'union <anonymous>'} has no member named 'fpra8'
  *ret = (*(ufp.fpra8))(arg[0], arg[1], arg[2], arg[3], arg[4], arg[5], arg[6], arg[7]);
               ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:701:5: error: 'UARG_FP' {aka 'union <anonymous>'} has no member named 'fpra9'
  ufp.fpra9 = tblGlide2x[FEnum].ptr;
     ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:702:15: error: 'UARG_FP' {aka 'union <anonymous>'} has no member named 'fpra9'
  *ret = (*(ufp.fpra9))(arg[0], arg[1], arg[2], arg[3], arg[4], arg[5], arg[6], arg[7], arg[8]);
               ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:705:5: error: 'UARG_FP' {aka 'union <anonymous>'} has no member named 'fpra10'
  ufp.fpra10 = tblGlide2x[FEnum].ptr;
     ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:706:15: error: 'UARG_FP' {aka 'union <anonymous>'} has no member named 'fpra10'
  *ret = (*(ufp.fpra10))(arg[0], arg[1], arg[2], arg[3], arg[4], arg[5], arg[6], arg[7], arg[8], arg[9]);
               ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:709:5: error: 'UARG_FP' {aka 'union <anonymous>'} has no member named 'fpra11'
  ufp.fpra11 = tblGlide2x[FEnum].ptr;
     ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:710:15: error: 'UARG_FP' {aka 'union <anonymous>'} has no member named 'fpra11'
  *ret = (*(ufp.fpra11))(arg[0], arg[1], arg[2], arg[3], arg[4], arg[5], arg[6], arg[7], arg[8], arg[9], arg[10]);
               ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:713:5: error: 'UARG_FP' {aka 'union <anonymous>'} has no member named 'fpra12'
  ufp.fpra12 = tblGlide2x[FEnum].ptr;
     ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:714:15: error: 'UARG_FP' {aka 'union <anonymous>'} has no member named 'fpra12'
  *ret = (*(ufp.fpra12))(arg[0], arg[1], arg[2], arg[3], arg[4], arg[5], arg[6], arg[7], arg[8], arg[9], arg[10], arg[11]);
               ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:717:5: error: 'UARG_FP' {aka 'union <anonymous>'} has no member named 'fpra13'
  ufp.fpra13 = tblGlide2x[FEnum].ptr;
     ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:718:15: error: 'UARG_FP' {aka 'union <anonymous>'} has no member named 'fpra13'
  *ret = (*(ufp.fpra13))(arg[0], arg[1], arg[2], arg[3], arg[4], arg[5], arg[6], arg[7], arg[8], arg[9], arg[10], arg[11], arg[12]);
               ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:721:5: error: 'UARG_FP' {aka 'union <anonymous>'} has no member named 'fpra14'
  ufp.fpra14 = tblGlide2x[FEnum].ptr;
     ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:722:15: error: 'UARG_FP' {aka 'union <anonymous>'} has no member named 'fpra14'
  *ret = (*(ufp.fpra14))(arg[0], arg[1], arg[2], arg[3], arg[4], arg[5], arg[6], arg[7], arg[8], arg[9], arg[10], arg[11], arg[12], arg[13]);
               ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:725:5: error: 'UARG_FP' {aka 'union <anonymous>'} has no member named 'fpra15'
  ufp.fpra15 = tblGlide2x[FEnum].ptr;
     ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:726:15: error: 'UARG_FP' {aka 'union <anonymous>'} has no member named 'fpra15'
  *ret = (*(ufp.fpra15))(arg[0], arg[1], arg[2], arg[3], arg[4], arg[5], arg[6], arg[7], arg[8], arg[9], arg[10], arg[11], arg[12], arg[13], arg[14]);
               ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:729:5: error: 'UARG_FP' {aka 'union <anonymous>'} has no member named 'fpra16'
  ufp.fpra16 = tblGlide2x[FEnum].ptr;
     ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:730:15: error: 'UARG_FP' {aka 'union <anonymous>'} has no member named 'fpra16'
  *ret = (*(ufp.fpra16))(arg[0], arg[1], arg[2], arg[3], arg[4], arg[5], arg[6], arg[7], arg[8], arg[9], arg[10], arg[11], arg[12], arg[13], arg[14], arg[15]);
               ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:661:13: warning: variable 'ufp' set but not used [-Wunused-but-set-variable]
     UARG_FP ufp;
             ^~~
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:374:13: warning: variable 'sfp' set but not used [-Wunused-but-set-variable]
     PARG_FP sfp;
             ^~~
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c: At top level:
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:746:17: error: expected declaration specifiers or '...' before '*' token
 void __stdcall (*setConfig)(const uint32_t flag);
                 ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:747:17: error: expected declaration specifiers or '...' before '*' token
 void __stdcall (*setConfigRes)(const int res);
                 ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c: In function 'conf_glide2x':
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:750:9: error: 'setConfig' undeclared (first use in this function); did you mean 'GTestConfig'?
     if (setConfig)
         ^~~~~~~~~
         GTestConfig
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:752:16: error: 'setConfigRes' undeclared (first use in this function); did you mean 'GTestConfig'?
     if (res && setConfigRes)
                ^~~~~~~~~~~~
                GTestConfig
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c: In function 'init_glide2x':
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:791:5: error: 'setConfig' undeclared (first use in this function); did you mean 'GTestConfig'?
     setConfig = (void *)(dlsym(hDll, "setConfig"));
     ^~~~~~~~~
     GTestConfig
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:792:5: error: 'setConfigRes' undeclared (first use in this function); did you mean 'GTestConfig'?
     setConfigRes = (void *)(dlsym(hDll, "setConfigRes"));
     ^~~~~~~~~~~~
     GTestConfig
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c: In function 'wrReadRegion':
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:289:1: warning: control reaches end of non-void function [-Wreturn-type]
 }
 ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c: In function 'wrWriteRegion':
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:296:1: warning: control reaches end of non-void function [-Wreturn-type]
 }
 ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c: In function 'wrGetProcAddress':
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:303:1: warning: control reaches end of non-void function [-Wreturn-type]
 }
 ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c: In function 'wrGetString':
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/3dfx/glide2x_impl.c:310:1: warning: control reaches end of non-void function [-Wreturn-type]
 }
 ^
make[1]: *** [/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/rules.mak:69: hw/3dfx/glide2x_impl.o] Error 1

after mesa only patch

     ^~~~~~~
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:91:9: warning: implicit declaration of function 'fpra2p3' [-Wimplicit-function-declaration]
         fpra2p3(target, level, GL_TEXTURE_COMPRESSED_IMAGE_SIZE, (uintptr_t)&csize);
         ^~~~~~~
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:91:9: warning: nested extern declaration of 'fpra2p3' [-Wnested-externs]
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c: In function 'wrGetParamIa1p2':
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:102:20: error: expected ')' before '*' token
     void (__stdcall *fpa1p2)(uint32_t arg0, uint32_t arg1, uintptr_t arg2);
                    ^~
                    )
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:103:5: error: 'fpa1p2' undeclared (first use in this function)
     fpa1p2 = tblMesaGL[FEnum].ptr;
     ^~~~~~
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:104:5: warning: implicit declaration of function 'fpa1p2' [-Wimplicit-function-declaration]
     fpa1p2(arg0, arg1, (uintptr_t)&ret);
     ^~~~~~
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c: In function 'doMesaFunc':
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:129:29: error: expected ')' before '*' token
         uintptr_t (__stdcall *rpfpa0)(uint32_t);
                             ^~
                             )
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:130:29: error: expected ')' before '*' token
         uintptr_t (__stdcall *rpfpa1)(uint32_t, uint32_t);
                             ^~
                             )
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:131:28: error: expected ')' before '*' token
         uint32_t (__stdcall *fpp0)(uintptr_t);
                            ^~
                            )
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:132:28: error: expected ')' before '*' token
         uint32_t (__stdcall *fpp1)(uintptr_t, uintptr_t);
                            ^~
                            )
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:133:28: error: expected ')' before '*' token
         uint32_t (__stdcall *fpa0p1)(uint32_t, uintptr_t);
                            ^~
                            )
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:134:28: error: expected ')' before '*' token
         uint32_t (__stdcall *fpa0p2)(uint32_t, uintptr_t, uintptr_t);
                            ^~
                            )
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:135:28: error: expected ')' before '*' token
         uint32_t (__stdcall *fpa0p3)(uint32_t, uintptr_t, uintptr_t, uintptr_t);
                            ^~
                            )
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:136:28: error: expected ')' before '*' token
         uint32_t (__stdcall *fpa1p2)(uint32_t, uint32_t, uintptr_t);
                            ^~
                            )
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:137:28: error: expected ')' before '*' token
         uint32_t (__stdcall *fpa0p2a3)(uint32_t, uintptr_t, uintptr_t, uint32_t);
                            ^~
                            )
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:138:28: error: expected ')' before '*' token
         uint32_t (__stdcall *fpa2p3)(uint32_t, uint32_t, uint32_t, uintptr_t);
                            ^~
                            )
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:139:28: error: expected ')' before '*' token
         uint32_t (__stdcall *fpa3p4)(uint32_t, uint32_t, uint32_t, uint32_t, uintptr_t);
                            ^~
                            )
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:140:28: error: expected ')' before '*' token
         uint32_t (__stdcall *fpa4p5)(uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uintptr_t);
                            ^~
                            )
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:141:28: error: expected ')' before '*' token
         uint32_t (__stdcall *fpa5p6)(uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uintptr_t);
                            ^~
                            )
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:142:28: error: expected ')' before '*' token
         uint32_t (__stdcall *fpa6p7)(uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uintptr_t);
                            ^~
                            )
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:143:28: error: expected ')' before '*' token
         uint32_t (__stdcall *fpa7p8)(uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uintptr_t);
                            ^~
                            )
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:144:28: error: expected ')' before '*' token
         uint32_t (__stdcall *fpa8p9)(uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uintptr_t);
                            ^~
                            )
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:145:28: error: expected ')' before '*' token
         uint32_t (__stdcall *fpa9p10)(uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uintptr_t);
                            ^~
                            )
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:147:28: error: expected ')' before '*' token
         uint32_t (__stdcall *fpa0f1)(uint32_t, float);
                            ^~
                            )
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:148:28: error: expected ')' before '*' token
         uint32_t (__stdcall *fpa0f2)(uint32_t, float, float);
                            ^~
                            )
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:149:28: error: expected ')' before '*' token
         uint32_t (__stdcall *fpa0f3)(uint32_t, float, float, float);
                            ^~
                            )
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:150:28: error: expected ')' before '*' token
         uint32_t (__stdcall *fpa0f4)(uint32_t, float, float, float, float);
                            ^~
                            )
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:151:28: error: expected ')' before '*' token
         uint32_t (__stdcall *fpa0f2a3f5)(uint32_t, float, float, uint32_t, float, float);
                            ^~
                            )
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:152:28: error: expected ')' before '*' token
         uint32_t (__stdcall *fpa1f2)(uint32_t, uint32_t, float);
                            ^~
                            )
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:153:28: error: expected ')' before '*' token
         uint32_t (__stdcall *fpa1f5)(uint32_t, uint32_t, float, float, float, float);
                            ^~
                            )
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:154:28: error: expected ')' before '*' token
         uint32_t (__stdcall *fpa0f2p6)(uint32_t, uint32_t, float, float, float, float, uintptr_t);
                            ^~
                            )
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:155:28: error: expected ')' before '*' token
         uint32_t (__stdcall *fpa0f2a4p5)(uint32_t, float, float, uint32_t, uint32_t, uintptr_t);
                            ^~
                            )
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:156:28: error: expected ')' before '*' token
         uint32_t (__stdcall *fpa0f2a4f6a8p9)(uint32_t, float, float, uint32_t, uint32_t, float, float, uint32_t, uint32_t, uintptr_t);
                            ^~
                            )
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:157:28: error: expected ')' before '*' token
         uint32_t (__stdcall *fpf0)(float);
                            ^~
                            )
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:158:28: error: expected ')' before '*' token
         uint32_t (__stdcall *fpf1)(float, float);
                            ^~
                            )
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:159:28: error: expected ')' before '*' token
         uint32_t (__stdcall *fpf2)(float, float, float);
                            ^~
                            )
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:160:28: error: expected ')' before '*' token
         uint32_t (__stdcall *fpf3)(float, float, float, float);
                            ^~
                            )
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:161:28: error: expected ')' before '*' token
         uint32_t (__stdcall *fpf5)(float, float, float, float, float, float);
                            ^~
                            )
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:162:28: error: expected ')' before '*' token
         uint32_t (__stdcall *fpf7)(float, float, float, float, float, float, float, float);
                            ^~
                            )
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:164:28: error: expected ')' before '*' token
         uint32_t (__stdcall *fpd0)(double);
                            ^~
                            )
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:165:28: error: expected ')' before '*' token
         uint32_t (__stdcall *fpd1)(double, double);
                            ^~
                            )
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:166:28: error: expected ')' before '*' token
         uint32_t (__stdcall *fpd2)(double, double, double);
                            ^~
                            )
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:167:28: error: expected ')' before '*' token
         uint32_t (__stdcall *fpd3)(double, double, double, double);
                            ^~
                            )
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:168:28: error: expected ')' before '*' token
         uint32_t (__stdcall *fpd5)(double, double, double, double, double, double);
                            ^~
                            )
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:169:28: error: expected ')' before '*' token
         uint32_t (__stdcall *fpa0d1)(uint32_t, double);
                            ^~
                            )
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:170:28: error: expected ')' before '*' token
         uint32_t (__stdcall *fpa0d2)(uint32_t, double, double);
                            ^~
                            )
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:171:28: error: expected ')' before '*' token
         uint32_t (__stdcall *fpa0d3)(uint32_t, double, double, double);
                            ^~
                            )
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:172:28: error: expected ')' before '*' token
         uint32_t (__stdcall *fpa0d4)(uint32_t, double, double, double, double);
                            ^~
                            )
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:173:28: error: expected ')' before '*' token
         uint32_t (__stdcall *fpa1d2)(uint32_t, uint32_t, double);
                            ^~
                            )
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:174:28: error: expected ')' before '*' token
         uint32_t (__stdcall *fpa1d5)(uint32_t, uint32_t, double, double, double, double);
                            ^~
                            )
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:175:28: error: expected ')' before '*' token
         uint32_t (__stdcall *fpa0d2a3d5)(uint32_t, double, double, uint32_t, double, double);
                            ^~
                            )
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:176:28: error: expected ')' before '*' token
         uint32_t (__stdcall *fpa0d2a4p5)(uint32_t, double, double, uint32_t, uint32_t, uintptr_t);
                            ^~
                            )
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:177:28: error: expected ')' before '*' token
         uint32_t (__stdcall *fpa0d2a4d6a8p9)(uint32_t, double, double, uint32_t, uint32_t, double, double, uint32_t, uint32_t, uintptr_t);
                            ^~
                            )
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:178:5: warning: no semicolon at end of struct or union
     } USFP;
     ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:184:17: error: 'USFP' {aka 'union <anonymous>'} has no member named 'fpa0p2'
             usfp.fpa0p2 = tblMesaGL[FEnum].ptr;
                 ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:185:26: error: 'USFP' {aka 'union <anonymous>'} has no member named 'fpa0p2'
             *ret = (*usfp.fpa0p2)(arg[0], parg[1], parg[2]);
                          ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:191:17: error: 'USFP' {aka 'union <anonymous>'} has no member named 'fpa0p3'
             usfp.fpa0p3 = tblMesaGL[FEnum].ptr;
                 ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:192:26: error: 'USFP' {aka 'union <anonymous>'} has no member named 'fpa0p3'
             *ret = (*usfp.fpa0p3)(arg[0], parg[1], parg[2], parg[3]);
                          ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:208:17: error: 'USFP' {aka 'union <anonymous>'} has no member named 'fpa2p3'
             usfp.fpa2p3 = tblMesaGL[FEnum].ptr;
                 ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:209:26: error: 'USFP' {aka 'union <anonymous>'} has no member named 'fpa2p3'
             *ret = (*usfp.fpa2p3)(arg[0], arg[1], arg[2], parg[3]);
                          ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:216:17: error: 'USFP' {aka 'union <anonymous>'} has no member named 'fpa3p4'
             usfp.fpa3p4 = tblMesaGL[FEnum].ptr;
                 ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:217:26: error: 'USFP' {aka 'union <anonymous>'} has no member named 'fpa3p4'
             *ret = (*usfp.fpa3p4)(arg[0], arg[1], arg[2], arg[3], parg[0]);
                          ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:227:17: error: 'USFP' {aka 'union <anonymous>'} has no member named 'fpa4p5'
             usfp.fpa4p5 = tblMesaGL[FEnum].ptr;
                 ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:228:26: error: 'USFP' {aka 'union <anonymous>'} has no member named 'fpa4p5'
             *ret = (*usfp.fpa4p5)(arg[0], arg[1], arg[2], arg[3], arg[4], parg[1]);
                          ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:231:17: error: 'USFP' {aka 'union <anonymous>'} has no member named 'rpfpa0'
             usfp.rpfpa0 = tblMesaGL[FEnum].ptr;
                 ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:232:26: error: 'USFP' {aka 'union <anonymous>'} has no member named 'rpfpa0'
             *ret = (*usfp.rpfpa0)(arg[0]);
                          ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:237:17: error: 'USFP' {aka 'union <anonymous>'} has no member named 'rpfpa1'
             usfp.rpfpa1 = tblMesaGL[FEnum].ptr;
                 ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:238:26: error: 'USFP' {aka 'union <anonymous>'} has no member named 'rpfpa1'
             *ret = (*usfp.rpfpa1)(arg[0], arg[1]);
                          ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:350:17: error: 'USFP' {aka 'union <anonymous>'} has no member named 'fpa0p1'
             usfp.fpa0p1 = tblMesaGL[FEnum].ptr;
                 ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:351:26: error: 'USFP' {aka 'union <anonymous>'} has no member named 'fpa0p1'
             *ret = (*usfp.fpa0p1)(arg[0], parg[1]);
                          ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:445:17: error: 'USFP' {aka 'union <anonymous>'} has no member named 'fpp0'
             usfp.fpp0 = tblMesaGL[FEnum].ptr;
                 ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:446:26: error: 'USFP' {aka 'union <anonymous>'} has no member named 'fpp0'
             *ret = (*usfp.fpp0)(parg[0]);
                          ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:452:17: error: 'USFP' {aka 'union <anonymous>'} has no member named 'fpp1'
             usfp.fpp1 = tblMesaGL[FEnum].ptr;
                 ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:453:26: error: 'USFP' {aka 'union <anonymous>'} has no member named 'fpp1'
             *ret = (*usfp.fpp1)(parg[0], parg[1]);
                          ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:462:17: error: 'USFP' {aka 'union <anonymous>'} has no member named 'fpa5p6'
             usfp.fpa5p6 = tblMesaGL[FEnum].ptr;
                 ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:463:26: error: 'USFP' {aka 'union <anonymous>'} has no member named 'fpa5p6'
             *ret = (*usfp.fpa5p6)(arg[0], arg[1], arg[2], arg[3], arg[4], arg[5], parg[2]);
                          ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:509:17: error: 'USFP' {aka 'union <anonymous>'} has no member named 'fpa1p2'
             usfp.fpa1p2 = tblMesaGL[FEnum].ptr;
                 ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:510:26: error: 'USFP' {aka 'union <anonymous>'} has no member named 'fpa1p2'
             *ret = (*usfp.fpa1p2)(arg[0], arg[1], parg[2]);
                          ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:514:17: error: 'USFP' {aka 'union <anonymous>'} has no member named 'fpa0p2a3'
             usfp.fpa0p2a3 = tblMesaGL[FEnum].ptr;
                 ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:515:26: error: 'USFP' {aka 'union <anonymous>'} has no member named 'fpa0p2a3'
             *ret = (*usfp.fpa0p2a3)(arg[0], parg[1], parg[2], arg[3]);
                          ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:520:17: error: 'USFP' {aka 'union <anonymous>'} has no member named 'fpa6p7'
             usfp.fpa6p7 = tblMesaGL[FEnum].ptr;
                 ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:521:26: error: 'USFP' {aka 'union <anonymous>'} has no member named 'fpa6p7'
             *ret = (*usfp.fpa6p7)(arg[0], arg[1], arg[2], arg[3], arg[4], arg[5], arg[6], parg[3]);
                          ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:530:17: error: 'USFP' {aka 'union <anonymous>'} has no member named 'fpa7p8'
             usfp.fpa7p8 = tblMesaGL[FEnum].ptr;
                 ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:531:26: error: 'USFP' {aka 'union <anonymous>'} has no member named 'fpa7p8'
             *ret = (*usfp.fpa7p8)(arg[0], arg[1], arg[2], arg[3], arg[4], arg[5], arg[6], arg[7], parg[0]);
                          ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:535:17: error: 'USFP' {aka 'union <anonymous>'} has no member named 'fpa8p9'
             usfp.fpa8p9 = tblMesaGL[FEnum].ptr;
                 ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:536:26: error: 'USFP' {aka 'union <anonymous>'} has no member named 'fpa8p9'
             *ret = (*usfp.fpa8p9)(arg[0], arg[1], arg[2], arg[3], arg[4], arg[5], arg[6], arg[7], arg[8], parg[1]);
                          ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:542:17: error: 'USFP' {aka 'union <anonymous>'} has no member named 'fpa9p10'
             usfp.fpa9p10 = tblMesaGL[FEnum].ptr;
                 ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:543:26: error: 'USFP' {aka 'union <anonymous>'} has no member named 'fpa9p10'
             *ret = (*usfp.fpa9p10)(arg[0], arg[1], arg[2], arg[3], arg[4], arg[5], arg[6], arg[7], arg[8], arg[9], parg[2]);
                          ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:593:21: error: 'USFP' {aka 'union <anonymous>'} has no member named 'fpf0'
                 usfp.fpf0 = tblMesaGL[FEnum].ptr;
                     ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:594:30: error: 'USFP' {aka 'union <anonymous>'} has no member named 'fpf0'
                 *ret = (*usfp.fpf0)(a0);
                              ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:609:21: error: 'USFP' {aka 'union <anonymous>'} has no member named 'fpf1'
                 usfp.fpf1 = tblMesaGL[FEnum].ptr;
                     ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:610:30: error: 'USFP' {aka 'union <anonymous>'} has no member named 'fpf1'
                 *ret = (*usfp.fpf1)(a0,a1);
                              ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:627:21: error: 'USFP' {aka 'union <anonymous>'} has no member named 'fpf3'
                 usfp.fpf3 = tblMesaGL[FEnum].ptr;
                     ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:628:30: error: 'USFP' {aka 'union <anonymous>'} has no member named 'fpf2'
                 *ret = (*usfp.fpf2)(a0,a1,a2);
                              ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:644:21: error: 'USFP' {aka 'union <anonymous>'} has no member named 'fpf3'
                 usfp.fpf3 = tblMesaGL[FEnum].ptr;
                     ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:645:30: error: 'USFP' {aka 'union <anonymous>'} has no member named 'fpf3'
                 *ret = (*usfp.fpf3)(a0,a1,a2,a3);
                              ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:653:21: error: 'USFP' {aka 'union <anonymous>'} has no member named 'fpf5'
                 usfp.fpf5 = tblMesaGL[FEnum].ptr;
                     ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:654:30: error: 'USFP' {aka 'union <anonymous>'} has no member named 'fpf5'
                 *ret = (*usfp.fpf5)(a0,a1,a2,a3,a4,a5);
                              ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:661:21: error: 'USFP' {aka 'union <anonymous>'} has no member named 'fpf7'
                 usfp.fpf7 = tblMesaGL[FEnum].ptr;
                     ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:662:30: error: 'USFP' {aka 'union <anonymous>'} has no member named 'fpf7'
                 *ret = (*usfp.fpf7)(a0,a1,a2,a3,a4,a5,a6,a7);
                              ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:681:21: error: 'USFP' {aka 'union <anonymous>'} has no member named 'fpa0f1'
                 usfp.fpa0f1 = tblMesaGL[FEnum].ptr;
                     ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:682:30: error: 'USFP' {aka 'union <anonymous>'} has no member named 'fpa0f1'
                 *ret = (*usfp.fpa0f1)(arg[0], a1);
                              ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:694:21: error: 'USFP' {aka 'union <anonymous>'} has no member named 'fpa0f2'
                 usfp.fpa0f2 = tblMesaGL[FEnum].ptr;
                     ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:695:30: error: 'USFP' {aka 'union <anonymous>'} has no member named 'fpa0f2'
                 *ret = (*usfp.fpa0f2)(arg[0], a1, a2);
                              ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:707:21: error: 'USFP' {aka 'union <anonymous>'} has no member named 'fpa0f3'
                 usfp.fpa0f3 = tblMesaGL[FEnum].ptr;
                     ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:708:30: error: 'USFP' {aka 'union <anonymous>'} has no member named 'fpa0f3'
                 *ret = (*usfp.fpa0f3)(arg[0], a1, a2, a3);
                              ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:721:21: error: 'USFP' {aka 'union <anonymous>'} has no member named 'fpa0f4'
                 usfp.fpa0f4 = tblMesaGL[FEnum].ptr;
                     ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:722:30: error: 'USFP' {aka 'union <anonymous>'} has no member named 'fpa0f4'
                 *ret = (*usfp.fpa0f4)(arg[0], a1, a2, a3, a4);
                              ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:732:21: error: 'USFP' {aka 'union <anonymous>'} has no member named 'fpa0f2a3f5'
                 usfp.fpa0f2a3f5 = tblMesaGL[FEnum].ptr;
                     ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:733:30: error: 'USFP' {aka 'union <anonymous>'} has no member named 'fpa0f2a3f5'
                 *ret = (*usfp.fpa0f2a3f5)(arg[0], a1, a2, arg[3], a4, a5);
                              ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:741:21: error: 'USFP' {aka 'union <anonymous>'} has no member named 'fpa0f2a4p5'
                 usfp.fpa0f2a4p5 = tblMesaGL[FEnum].ptr;
                     ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:742:30: error: 'USFP' {aka 'union <anonymous>'} has no member named 'fpa0f2a4p5'
                 *ret = (*usfp.fpa0f2a4p5)(arg[0], a1, a2, arg[3], arg[4], parg[1]);
                              ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:752:21: error: 'USFP' {aka 'union <anonymous>'} has no member named 'fpa0f2a4f6a8p9'
                 usfp.fpa0f2a4f6a8p9 = tblMesaGL[FEnum].ptr;
                     ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:753:30: error: 'USFP' {aka 'union <anonymous>'} has no member named 'fpa0f2a4f6a8p9'
                 *ret = (*usfp.fpa0f2a4f6a8p9)(arg[0], a1, a2, arg[3], arg[4], a5, a6, arg[7], arg[8], parg[1]);
                              ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:764:21: error: 'USFP' {aka 'union <anonymous>'} has no member named 'fpa1f2'
                 usfp.fpa1f2 = tblMesaGL[FEnum].ptr;
                     ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:765:30: error: 'USFP' {aka 'union <anonymous>'} has no member named 'fpa1f2'
                 *ret = (*usfp.fpa1f2)(arg[0], arg[1], a2);
                              ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:776:21: error: 'USFP' {aka 'union <anonymous>'} has no member named 'fpa1f5'
                 usfp.fpa1f5 = tblMesaGL[FEnum].ptr;
                     ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:777:30: error: 'USFP' {aka 'union <anonymous>'} has no member named 'fpa1f5'
                 *ret = (*usfp.fpa1f5)(arg[0], arg[1], a2, a3, a4, a5);
                              ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:787:21: error: 'USFP' {aka 'union <anonymous>'} has no member named 'fpa0f2p6'
                 usfp.fpa0f2p6 = tblMesaGL[FEnum].ptr;
                     ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:788:30: error: 'USFP' {aka 'union <anonymous>'} has no member named 'fpa0f2p6'
                 *ret = (*usfp.fpa0f2p6)(arg[0], arg[1], a2, a3, a4, a5, parg[2]);
                              ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:807:21: error: 'USFP' {aka 'union <anonymous>'} has no member named 'fpd0'
                 usfp.fpd0 = tblMesaGL[FEnum].ptr;
                     ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:808:30: error: 'USFP' {aka 'union <anonymous>'} has no member named 'fpd0'
                 *ret = (*usfp.fpd0)(a0);
                              ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:826:21: error: 'USFP' {aka 'union <anonymous>'} has no member named 'fpd1'
                 usfp.fpd1 = tblMesaGL[FEnum].ptr;
                     ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:827:30: error: 'USFP' {aka 'union <anonymous>'} has no member named 'fpd1'
                 *ret = (*usfp.fpd1)(a0,a1);
                              ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:849:21: error: 'USFP' {aka 'union <anonymous>'} has no member named 'fpd2'
                 usfp.fpd2 = tblMesaGL[FEnum].ptr;
                     ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:850:30: error: 'USFP' {aka 'union <anonymous>'} has no member named 'fpd2'
                 *ret = (*usfp.fpd2)(a0,a1,a2);
                              ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:866:21: error: 'USFP' {aka 'union <anonymous>'} has no member named 'fpd3'
                 usfp.fpd3 = tblMesaGL[FEnum].ptr;
                     ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:867:30: error: 'USFP' {aka 'union <anonymous>'} has no member named 'fpd3'
                 *ret = (*usfp.fpd3)(a0,a1,a2,a3);
                              ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:880:21: error: 'USFP' {aka 'union <anonymous>'} has no member named 'fpd5'
                 usfp.fpd5 = tblMesaGL[FEnum].ptr;
                     ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:881:30: error: 'USFP' {aka 'union <anonymous>'} has no member named 'fpd5'
                 *ret = (*usfp.fpd5)(a0,a1,a2,a3,a4,a5);
                              ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:891:21: error: 'USFP' {aka 'union <anonymous>'} has no member named 'fpa0d1'
                 usfp.fpa0d1 = tblMesaGL[FEnum].ptr;
                     ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:892:30: error: 'USFP' {aka 'union <anonymous>'} has no member named 'fpa0d1'
                 *ret = (*usfp.fpa0d1)(arg[0], a1);
                              ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:904:21: error: 'USFP' {aka 'union <anonymous>'} has no member named 'fpa0d2'
                 usfp.fpa0d2 = tblMesaGL[FEnum].ptr;
                     ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:905:30: error: 'USFP' {aka 'union <anonymous>'} has no member named 'fpa0d2'
                 *ret = (*usfp.fpa0d2)(arg[0], a1, a2);
                              ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:917:21: error: 'USFP' {aka 'union <anonymous>'} has no member named 'fpa0d3'
                 usfp.fpa0d3 = tblMesaGL[FEnum].ptr;
                     ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:918:30: error: 'USFP' {aka 'union <anonymous>'} has no member named 'fpa0d3'
                 *ret = (*usfp.fpa0d3)(arg[0], a1, a2, a3);
                              ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:931:21: error: 'USFP' {aka 'union <anonymous>'} has no member named 'fpa0d4'
                 usfp.fpa0d4 = tblMesaGL[FEnum].ptr;
                     ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:932:30: error: 'USFP' {aka 'union <anonymous>'} has no member named 'fpa0d4'
                 *ret = (*usfp.fpa0d4)(arg[0], a1, a2, a3, a4);
                              ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:939:21: error: 'USFP' {aka 'union <anonymous>'} has no member named 'fpa1d2'
                 usfp.fpa1d2 = tblMesaGL[FEnum].ptr;
                     ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:940:30: error: 'USFP' {aka 'union <anonymous>'} has no member named 'fpa1d2'
                 *ret = (*usfp.fpa1d2)(arg[0], arg[1], a2);
                              ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:951:21: error: 'USFP' {aka 'union <anonymous>'} has no member named 'fpa1d5'
                 usfp.fpa1d5 = tblMesaGL[FEnum].ptr;
                     ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:952:30: error: 'USFP' {aka 'union <anonymous>'} has no member named 'fpa1d5'
                 *ret = (*usfp.fpa1d5)(arg[0], arg[1], a2, a3, a4, a5);
                              ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:962:21: error: 'USFP' {aka 'union <anonymous>'} has no member named 'fpa0d2a3d5'
                 usfp.fpa0d2a3d5 = tblMesaGL[FEnum].ptr;
                     ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:963:30: error: 'USFP' {aka 'union <anonymous>'} has no member named 'fpa0d2a3d5'
                 *ret = (*usfp.fpa0d2a3d5)(arg[0], a1, a2, arg[5], a4, a5);
                              ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:971:21: error: 'USFP' {aka 'union <anonymous>'} has no member named 'fpa0d2a4p5'
                 usfp.fpa0d2a4p5 = tblMesaGL[FEnum].ptr;
                     ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:972:30: error: 'USFP' {aka 'union <anonymous>'} has no member named 'fpa0d2a4p5'
                 *ret = (*usfp.fpa0d2a4p5)(arg[0], a1, a2, arg[5], arg[6], parg[3]);
                              ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:982:21: error: 'USFP' {aka 'union <anonymous>'} has no member named 'fpa0d2a4d6a8p9'
                 usfp.fpa0d2a4d6a8p9 = tblMesaGL[FEnum].ptr;
                     ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:983:30: error: 'USFP' {aka 'union <anonymous>'} has no member named 'fpa0d2a4d6a8p9'
                 *ret = (*usfp.fpa0d2a4d6a8p9)(arg[0], a1, a2, arg[5], arg[6], a5, a6, arg[11], arg[12], parg[1]);
                              ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:992:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fpra0)(void);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:993:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fpra1)(uint32_t arg0);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:994:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fpra2)(uint32_t arg0, uint32_t arg1);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:995:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fpra3)(uint32_t arg0, uint32_t arg1, uint32_t arg2);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:996:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fpra4)(uint32_t arg0, uint32_t arg1, uint32_t arg2, uint32_t arg3);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:997:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fpra5)(uint32_t arg0, uint32_t arg1, uint32_t arg2, uint32_t arg3, uint32_t arg4);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:998:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fpra6)(uint32_t arg0, uint32_t arg1, uint32_t arg2, uint32_t arg3, uint32_t arg4, uint32_t arg5);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:999:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fpra7)(uint32_t arg0, uint32_t arg1, uint32_t arg2, uint32_t arg3, uint32_t arg4, uint32_t arg5, uint32_t arg6);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:1000:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fpra8)(uint32_t arg0, uint32_t arg1, uint32_t arg2, uint32_t arg3, uint32_t arg4, uint32_t arg5, uint32_t arg6, uint32_t arg7);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:1001:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fpra9)(uint32_t arg0, uint32_t arg1, uint32_t arg2, uint32_t arg3, uint32_t arg4, uint32_t arg5, uint32_t arg6, uint32_t arg7, uint32_t arg8);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:1002:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fpra10)(uint32_t arg0, uint32_t arg1, uint32_t arg2, uint32_t arg3, uint32_t arg4, uint32_t arg5, uint32_t arg6, uint32_t arg7, uint32_t arg8, uint32_t arg9);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:1003:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fpra11)(uint32_t arg0, uint32_t arg1, uint32_t arg2, uint32_t arg3, uint32_t arg4, uint32_t arg5, uint32_t arg6, uint32_t arg7, uint32_t arg8, uint32_t arg9, uint32_t arg10);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:1004:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fpra12)(uint32_t arg0, uint32_t arg1, uint32_t arg2, uint32_t arg3, uint32_t arg4, uint32_t arg5, uint32_t arg6, uint32_t arg7, uint32_t arg8, uint32_t arg9, uint32_t arg10, uint32_t arg11);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:1005:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fpra13)(uint32_t arg0, uint32_t arg1, uint32_t arg2, uint32_t arg3, uint32_t arg4, uint32_t arg5, uint32_t arg6, uint32_t arg7, uint32_t arg8, uint32_t arg9, uint32_t arg10, uint32_t arg11, uint32_t arg12);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:1006:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fpra14)(uint32_t arg0, uint32_t arg1, uint32_t arg2, uint32_t arg3, uint32_t arg4, uint32_t arg5, uint32_t arg6, uint32_t arg7, uint32_t arg8, uint32_t arg9, uint32_t arg10, uint32_t arg11, uint32_t arg12, uint32_t arg13);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:1007:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fpra15)(uint32_t arg0, uint32_t arg1, uint32_t arg2, uint32_t arg3, uint32_t arg4, uint32_t arg5, uint32_t arg6, uint32_t arg7, uint32_t arg8, uint32_t arg9, uint32_t arg10, uint32_t arg11, uint32_t arg12, uint32_t arg13, uint32_t arg14);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:1008:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fpra16)(uint32_t arg0, uint32_t arg1, uint32_t arg2, uint32_t arg3, uint32_t arg4, uint32_t arg5, uint32_t arg6, uint32_t arg7, uint32_t arg8, uint32_t arg9, uint32_t arg10, uint32_t arg11, uint32_t arg12, uint32_t arg13, uint32_t arg14, uint32_t arg15);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:1009:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fpra17)(uint32_t arg0, uint32_t arg1, uint32_t arg2, uint32_t arg3, uint32_t arg4, uint32_t arg5, uint32_t arg6, uint32_t arg7, uint32_t arg8, uint32_t arg9, uint32_t arg10, uint32_t arg11, uint32_t arg12, uint32_t arg13, uint32_t arg14, uint32_t arg15, uint32_t arg16);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:1010:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fpra18)(uint32_t arg0, uint32_t arg1, uint32_t arg2, uint32_t arg3, uint32_t arg4, uint32_t arg5, uint32_t arg6, uint32_t arg7, uint32_t arg8, uint32_t arg9, uint32_t arg10, uint32_t arg11, uint32_t arg12, uint32_t arg13, uint32_t arg14, uint32_t arg15, uint32_t arg16, uint32_t arg17);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:1011:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fpra19)(uint32_t arg0, uint32_t arg1, uint32_t arg2, uint32_t arg3, uint32_t arg4, uint32_t arg5, uint32_t arg6, uint32_t arg7, uint32_t arg8, uint32_t arg9, uint32_t arg10, uint32_t arg11, uint32_t arg12, uint32_t arg13, uint32_t arg14, uint32_t arg15, uint32_t arg16, uint32_t arg17, uint32_t arg18);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:1012:25: error: expected declaration specifiers or '...' before '*' token
     uint32_t __stdcall (*fpra20)(uint32_t arg0, uint32_t arg1, uint32_t arg2, uint32_t arg3, uint32_t arg4, uint32_t arg5, uint32_t arg6, uint32_t arg7, uint32_t arg8, uint32_t arg9, uint32_t arg10, uint32_t arg11, uint32_t arg12, uint32_t arg13, uint32_t arg14, uint32_t arg15, uint32_t arg16, uint32_t arg17, uint32_t arg18, uint32_t arg19);
                         ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:1013:5: warning: no semicolon at end of struct or union
     } UARG_FP;
     ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:1018:12: error: 'UARG_FP' {aka 'union <anonymous>'} has no member named 'fpra0'
         ufp.fpra0 = tblMesaGL[FEnum].ptr;
            ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:1019:22: error: 'UARG_FP' {aka 'union <anonymous>'} has no member named 'fpra0'
         *ret = (*(ufp.fpra0))();
                      ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:1022:12: error: 'UARG_FP' {aka 'union <anonymous>'} has no member named 'fpra1'
         ufp.fpra1 = tblMesaGL[FEnum].ptr;
            ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:1023:22: error: 'UARG_FP' {aka 'union <anonymous>'} has no member named 'fpra1'
         *ret = (*(ufp.fpra1))(arg[0]);
                      ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:1026:12: error: 'UARG_FP' {aka 'union <anonymous>'} has no member named 'fpra2'
         ufp.fpra2 = tblMesaGL[FEnum].ptr;
            ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:1027:22: error: 'UARG_FP' {aka 'union <anonymous>'} has no member named 'fpra2'
         *ret = (*(ufp.fpra2))(arg[0], arg[1]);
                      ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:1030:12: error: 'UARG_FP' {aka 'union <anonymous>'} has no member named 'fpra3'
         ufp.fpra3 = tblMesaGL[FEnum].ptr;
            ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:1031:22: error: 'UARG_FP' {aka 'union <anonymous>'} has no member named 'fpra3'
         *ret = (*(ufp.fpra3))(arg[0], arg[1], arg[2]);
                      ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:1034:12: error: 'UARG_FP' {aka 'union <anonymous>'} has no member named 'fpra4'
         ufp.fpra4 = tblMesaGL[FEnum].ptr;
            ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:1035:22: error: 'UARG_FP' {aka 'union <anonymous>'} has no member named 'fpra4'
         *ret = (*(ufp.fpra4))(arg[0], arg[1], arg[2], arg[3]);
                      ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:1038:12: error: 'UARG_FP' {aka 'union <anonymous>'} has no member named 'fpra5'
         ufp.fpra5 = tblMesaGL[FEnum].ptr;
            ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:1039:22: error: 'UARG_FP' {aka 'union <anonymous>'} has no member named 'fpra5'
         *ret = (*(ufp.fpra5))(arg[0], arg[1], arg[2], arg[3], arg[4]);
                      ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:1042:12: error: 'UARG_FP' {aka 'union <anonymous>'} has no member named 'fpra6'
         ufp.fpra6 = tblMesaGL[FEnum].ptr;
            ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:1043:22: error: 'UARG_FP' {aka 'union <anonymous>'} has no member named 'fpra6'
         *ret = (*(ufp.fpra6))(arg[0], arg[1], arg[2], arg[3], arg[4], arg[5]);
                      ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:1046:12: error: 'UARG_FP' {aka 'union <anonymous>'} has no member named 'fpra7'
         ufp.fpra7 = tblMesaGL[FEnum].ptr;
            ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:1047:22: error: 'UARG_FP' {aka 'union <anonymous>'} has no member named 'fpra7'
         *ret = (*(ufp.fpra7))(arg[0], arg[1], arg[2], arg[3], arg[4], arg[5], arg[6]);
                      ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:1050:12: error: 'UARG_FP' {aka 'union <anonymous>'} has no member named 'fpra8'
         ufp.fpra8 = tblMesaGL[FEnum].ptr;
            ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:1051:22: error: 'UARG_FP' {aka 'union <anonymous>'} has no member named 'fpra8'
         *ret = (*(ufp.fpra8))(arg[0], arg[1], arg[2], arg[3], arg[4], arg[5], arg[6], arg[7]);
                      ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:1054:12: error: 'UARG_FP' {aka 'union <anonymous>'} has no member named 'fpra9'
         ufp.fpra9 = tblMesaGL[FEnum].ptr;
            ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:1055:22: error: 'UARG_FP' {aka 'union <anonymous>'} has no member named 'fpra9'
         *ret = (*(ufp.fpra9))(arg[0], arg[1], arg[2], arg[3], arg[4], arg[5], arg[6], arg[7], arg[8]);
                      ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:1058:12: error: 'UARG_FP' {aka 'union <anonymous>'} has no member named 'fpra10'
         ufp.fpra10 = tblMesaGL[FEnum].ptr;
            ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:1059:22: error: 'UARG_FP' {aka 'union <anonymous>'} has no member named 'fpra10'
         *ret = (*(ufp.fpra10))(arg[0], arg[1], arg[2], arg[3], arg[4], arg[5], arg[6], arg[7], arg[8], arg[9]);
                      ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:1062:12: error: 'UARG_FP' {aka 'union <anonymous>'} has no member named 'fpra11'
         ufp.fpra11 = tblMesaGL[FEnum].ptr;
            ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:1063:22: error: 'UARG_FP' {aka 'union <anonymous>'} has no member named 'fpra11'
         *ret = (*(ufp.fpra11))(arg[0], arg[1], arg[2], arg[3], arg[4], arg[5], arg[6], arg[7], arg[8], arg[9], arg[10]);
                      ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:1066:12: error: 'UARG_FP' {aka 'union <anonymous>'} has no member named 'fpra12'
         ufp.fpra12 = tblMesaGL[FEnum].ptr;
            ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:1067:22: error: 'UARG_FP' {aka 'union <anonymous>'} has no member named 'fpra12'
         *ret = (*(ufp.fpra12))(arg[0], arg[1], arg[2], arg[3], arg[4], arg[5], arg[6], arg[7], arg[8], arg[9], arg[10], arg[11]);
                      ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:1070:12: error: 'UARG_FP' {aka 'union <anonymous>'} has no member named 'fpra13'
         ufp.fpra13 = tblMesaGL[FEnum].ptr;
            ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:1071:22: error: 'UARG_FP' {aka 'union <anonymous>'} has no member named 'fpra13'
         *ret = (*(ufp.fpra13))(arg[0], arg[1], arg[2], arg[3], arg[4], arg[5], arg[6], arg[7], arg[8], arg[9], arg[10], arg[11], arg[12]);
                      ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:1074:12: error: 'UARG_FP' {aka 'union <anonymous>'} has no member named 'fpra14'
         ufp.fpra14 = tblMesaGL[FEnum].ptr;
            ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:1075:22: error: 'UARG_FP' {aka 'union <anonymous>'} has no member named 'fpra14'
         *ret = (*(ufp.fpra14))(arg[0], arg[1], arg[2], arg[3], arg[4], arg[5], arg[6], arg[7], arg[8], arg[9], arg[10], arg[11], arg[12], arg[13]);
                      ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:1078:12: error: 'UARG_FP' {aka 'union <anonymous>'} has no member named 'fpra15'
         ufp.fpra15 = tblMesaGL[FEnum].ptr;
            ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:1079:22: error: 'UARG_FP' {aka 'union <anonymous>'} has no member named 'fpra15'
         *ret = (*(ufp.fpra15))(arg[0], arg[1], arg[2], arg[3], arg[4], arg[5], arg[6], arg[7], arg[8], arg[9], arg[10], arg[11], arg[12], arg[13], arg[14]);
                      ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:1082:12: error: 'UARG_FP' {aka 'union <anonymous>'} has no member named 'fpra16'
         ufp.fpra16 = tblMesaGL[FEnum].ptr;
            ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:1083:22: error: 'UARG_FP' {aka 'union <anonymous>'} has no member named 'fpra16'
         *ret = (*(ufp.fpra16))(arg[0], arg[1], arg[2], arg[3], arg[4], arg[5], arg[6], arg[7], arg[8], arg[9], arg[10], arg[11], arg[12], arg[13], arg[14], arg[15]);
                      ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:1086:12: error: 'UARG_FP' {aka 'union <anonymous>'} has no member named 'fpra17'
         ufp.fpra17 = tblMesaGL[FEnum].ptr;
            ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:1087:22: error: 'UARG_FP' {aka 'union <anonymous>'} has no member named 'fpra17'
         *ret = (*(ufp.fpra17))(arg[0], arg[1], arg[2], arg[3], arg[4], arg[5], arg[6], arg[7], arg[8], arg[9], arg[10], arg[11], arg[12], arg[13], arg[14], arg[15], arg[16]);
                      ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:1090:12: error: 'UARG_FP' {aka 'union <anonymous>'} has no member named 'fpra18'
         ufp.fpra18 = tblMesaGL[FEnum].ptr;
            ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:1091:22: error: 'UARG_FP' {aka 'union <anonymous>'} has no member named 'fpra18'
         *ret = (*(ufp.fpra18))(arg[0], arg[1], arg[2], arg[3], arg[4], arg[5], arg[6], arg[7], arg[8], arg[9], arg[10], arg[11], arg[12], arg[13], arg[14], arg[15], arg[16], arg[17]);
                      ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:1094:12: error: 'UARG_FP' {aka 'union <anonymous>'} has no member named 'fpra19'
         ufp.fpra19 = tblMesaGL[FEnum].ptr;
            ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:1095:22: error: 'UARG_FP' {aka 'union <anonymous>'} has no member named 'fpra19'
         *ret = (*(ufp.fpra19))(arg[0], arg[1], arg[2], arg[3], arg[4], arg[5], arg[6], arg[7], arg[8], arg[9], arg[10], arg[11], arg[12], arg[13], arg[14], arg[15], arg[16], arg[17], arg[18]);
                      ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:1098:12: error: 'UARG_FP' {aka 'union <anonymous>'} has no member named 'fpra20'
         ufp.fpra20 = tblMesaGL[FEnum].ptr;
            ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:1099:22: error: 'UARG_FP' {aka 'union <anonymous>'} has no member named 'fpra20'
         *ret = (*(ufp.fpra20))(arg[0], arg[1], arg[2], arg[3], arg[4], arg[5], arg[6], arg[7], arg[8], arg[9], arg[10], arg[11], arg[12], arg[13], arg[14], arg[15], arg[16], arg[17], arg[18], arg[19]);
                      ^
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:1014:13: warning: variable 'ufp' set but not used [-Wunused-but-set-variable]
     UARG_FP ufp;
             ^~~
/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/hw/mesa/mesagl_impl.c:179:10: warning: variable 'usfp' set but not used [-Wunused-but-set-variable]
     USFP usfp;
          ^~~~
  CC      x86_64-softmmu/hw/mesa/mglcntx_linux.o
  CC      x86_64-softmmu/hw/mesa/mglvarry.o
  CC      x86_64-softmmu/hw/mesa/szgldata.o
make[1]: *** [/home/pi/Escritorio/qemu-3dfx/qemu-4.1.1/rules.mak:69: hw/mesa/mesagl_impl.o] Error 1
make[1]: *** Se espera a que terminen otras tareas....
kjliew commented 4 years ago

I had only built the code on x86_64 Windows and Linux with GCC. If you are trying to build it for ARM as of RPi4, then you may run into several issues. The __stdcall keyword is not supported on anything other than i386_x86. You need to add the relevant redefinition for ARM. Here's an example from glide2x_impl.c and mesagl_impl.c.

#if defined(CONFIG_LINUX) && CONFIG_LINUX
#include <dlfcn.h>
  #if defined(HOST_X86_64) && HOST_X86_64
  #define __stdcall
  #endif
#endif

You also need the host platform MESA to support OpenGL, not OpenGL ES because the guest stub does not perform any OpenGL->OpenGL ES translation. This may be technically possible but it is not done. I am not familiar with ARM platforms such as RPi4. You may want to check $ glxinfo if OpenGL core profile is available.

For how it is going to work with just MESA to emulate 3Dfx Glide API, check out: https://www.vogons.org/viewtopic.php?f=24&t=72859

ghost commented 4 years ago

Rpi4 it's opengl 2.1 desktop profile conformant by Mesa!! Good enough for the software I need.

I had run several desktop games with mesa and box86 https://www.youtube.com/playlist?list=PLhgmBihZpcBxWacPE05P-tN_ZuPBy8cxh

But I got surprised about the qemu performance on master on windows 98 on rpi4. Even without hw acceleration many games are playable, commandos, need for speed 2 se, sims, etc.

https://www.youtube.com/playlist?list=PLhgmBihZpcByDyOIUOkhLy97Q7HDUefcH

I am not a dev, but I have someone in mind than could help us to give support to arm for your project.

ghost commented 4 years ago

LaIt@kjliew okay now it finish... let see.. :)

I have to tell you than if this works you deserve a nobel.

So far nothing, I have to install the "3dfx" gpu drivers or just with the warper it's ok?? If I want to run the test it goes wild glitchy but I see something on the console, mesapt: dll loaded. I have the freeware display driver installed to get 32 bit colours and high res on windows98 etc, I have to remove it? I have to set something on the command line??

Also, when trying nfs2se console says the glide dll was unloaded (the game didn't run) . That said I had to use the original 3dfx glide2x.dll bc the game wont recognize your library.

Also, do you have any discord or IRC channel to stay in touch about this?? I would prefer discord or even hangouts (that last one it's the one I use more)

new retry

ive compiled openglide (didnt know I had) with sdl bc sdl it's giving the best quality so far for my vm and gtk it{s crashing in my side at least on master qemu. I will recompile it without sdl trying to fix it

pi@raspberrypi:~/.w95 $ ./win98.sh glidept: DLL loaded - glide2x.dll glidept: DLL unloaded glidept: DLL loaded - glide2x.dll trace: _grGlideInit@0 called glidept: grSstWinOpen called, fmt 0 org 0 buf 2 aux 1 gLfb 0xc8887000 Segmentation fault

Mesa test keeps crashing.

kjliew commented 4 years ago

Let address the issue one at a time. For Glide pass-through, you will need:

For MESA GL pass-through, you will need:

NFS2SE is a well tested game. It works very well with QEMU on x86 PC, fully accelerated through Glide pass-through or MESA GL pass-through with OpenGL-based Glide wrappers.

I don't typically frequent discord or IRC, but I can join #IRC of your choice to get you going on RPi4. Or, we can also meet at #qemu or #dosbox channels.

ghost commented 4 years ago

Ok, I will keep doing research and some workaround, the problem is than if I disable sdl from openglide I cant use sdl2 on my vm (I am right?) Bc gtk it's crashing when utilizing sound. And yes we have libgl and opengl desktop profile 2.1. about IRC we will see later bc IRC is a bit annoying to me and maybe I just need to keep doing research and workarounds, the good thing it's that it compiles hahaha does dx it's planned on the future.. I imagine that it's totally different than opengl... But I dont know

kjliew commented 4 years ago

No, you can keep using SDL2 for QEMU. OpenGlide does not depend on QEMU for its rendering. In fact, it hijacked QEMU window to do OpenGL rendering. QEMU with GTK display option is not supported for both Glide and MESA GL pass-through.

ghost commented 4 years ago

So far, I recompiled it without sdl (I had apply the diff before anyway bc I found that on the forum) and it goes a bit longer, it shows the splash (bc I set that) it opened a new window and it goes black screen OpenGLid.log we have 16 texture units, but this shows 8 only, just a glxinfo error. this it's the terminal log

glidept: DLL loaded - glide2x.dll
glidept: DLL unloaded
glidept: DLL loaded - glide2x.dll
trace: _grGlideInit@0 called
glidept: grSstWinOpen called, fmt 0 org 0 buf 2 aux 1 gLfb 0xc8846000
glidept: LFB mode is Shared Memory (fast)
     window 640x480 

anyway, if opengl doesnt work why it would work glide haha

kjliew commented 4 years ago

Glide pass-through sanity check is available here. https://www.vogons.org/viewtopic.php?p=687744#p687744 It will show an RGB iterated colored triangle.

it opened a new window and it goes black screen

If you had patched the OpenGlide, then it should render into the same window of QEMU. I am not sure if this is what you meant by a new window. It seems to me that Glide pass-through is working but there is problem with using the correct window to show the results.

ghost commented 4 years ago

Ryeah, I forgot to patch it (I thought I did and I didnt) , but now it's pathched and it does the same, black screen, but noe on the same windows. I will try the sanity checks.

The sanity check its dos only and seems my dos on win98 vm it's not working. Stub exe filed dos4gw.exe not such..

Thanks for trying to help. But we are on an ending point, nor gl nor glide working.. glide was expected.. but gl?? Weird... I will try than my supporters back you with a pi4. Where are you from @kjliew ?

kjliew commented 4 years ago

I just uploaded the same sanity test for WIN32. Check it out. If you can see 3Dfx splash screen from OpenGlide on the same QEMU window, then the host OpenGL rendering context should be working.

ghost commented 4 years ago

no, it fail, it show a triangle and nothing more

glidept: grSstWinClose called             
glidept: grGlideShutdown called, fifo 0x00be data 0x0dae shm 0x00436b8 lfb 0xfb000000
glidept:   GrState 1 VtxLayout 0
glidept: DLL unloaded
glidept: DLL loaded - glide2x.dll
trace: _grSstControl@4 called
trace: _grSstControl@4 called
trace: _grGlideGetVersion@4 called
glidept: grGlideGetVersion  Glide 2.45 - OpenGLide 0.09rc9
trace: _grGlideInit@0 called
glidept: grSstWinOpen called, fmt 1 org 0 buf 2 aux 1 gLfb 0xc8507000
glidept: LFB mode is Shared Memory (fast)
     window 640x480 
kjliew commented 4 years ago

no, it fail, it show a triangle and nothing more

I don't get it. TEST04 is meant to show just a triangle. If you got that, then it passed. Can you be specific on why you think it failed. The console trace looked normal and Glide pass-through working for TEST04.

ghost commented 4 years ago

I dont know, I was expecting something moving like glxgears.. not just a triangle. it's supposed to be a 3d api, not a triangle maker

kjliew commented 4 years ago

I uploaded another TEST25. This one has textures and spinning triangle. I think Glide is working. It may take some time for NFS2SE to load if this was the game you were trying earlier. I can't estimate how fast QEMU TCG can run x86 codes on ARM. On the Core m3-6Y30 ultrabook, it took about 5 second for NFS2SE demo to show up after OpenGlide 3Dfx splash screen.

If you are looking for more game-like 3D demo, then you can download 3Dfx tech demos at https://falconfly.vogonswiki.com/artwork.html Valley of Ra and Race are good ones.

Now you have Glide pass-through working, you may want to retry wglgears demo for MESA GL pass-through. I guess you didn't get it working last time because you were missing the 3Dfx kernel driver shared by all the guest wrapper DLLs.

ghost commented 4 years ago

It was almost instantly on software mode but i will try another game. No, i have all the libraries etc on the same folder, gl doesnt work.

@kjliew mmm race need apilib.dll

1585984364724195728492

kjliew commented 4 years ago

The invalid instruction is an i686 CMOV! What CPU had you chosen for QEMU? You should emulate at least an i686-class CPU. Never had I thought that ARM compiled QEMU would select an x86 CPU less than i686.

  401291:       0f 44 cb                cmove  ecx,ebx
  401294:       eb e8                   jmp    0x40127e
  401296:       8d b4 26 00 00 00 00    lea    esi,[esi+eiz*1+0x0]
  40129d:       8d 76 00                lea    esi,[esi+0x0]

race need apilib.dll

Download and install Arcade Toolbox Runtime.

ghost commented 4 years ago

Ive choosen i386 also Pentium. It may be a bug on qemu. Bc a review of my build with the vm was capable of running dow games. Maybe it's something wrong than was fixed on master I guess. This qemu also runs slower than master

kjliew commented 4 years ago

Ive choosen i386 also Pentium

Those aren't good enough. Do you have the option to choose something better? How about $ qemu-system-i386 -cpu ? All the guest wrapper DLLs require at least an i686 supporting CMOV instructions. Please don't ask why, that's the x86 GNU GCC toolchain I use. Otherwise, you need to recompile all of them yourself.

ghost commented 4 years ago

How I get those? I dont know where to start

kjliew commented 4 years ago

If you don't know where to start (to recompile the guest wrapper DLLs), won't it be easier for you just to select a better CPU to emulate from QEMU?

ghost commented 4 years ago

15859867490941304976577 But I dont get why it's in the corner

kjliew commented 4 years ago

But I dont get why it's in the corner

That's fine, because you are running QEMU in full-screen and the wglgears demo is an OpenGL full-screen app. Try to run QEMU in window and you will see how it work. For games, it is always going to be full-screen.

BTW, nice shot, nice to meet you.

ghost commented 4 years ago

Now need for speed runs, but on the corner!!

kjliew commented 4 years ago

Unfortunately, that is how the host OpenGL works for now if QEMU is in fullscreen. If you run QEMU in windowed, then the window will be sized to fit the actual size of OpenGL rendering context. Usually, OpenGL games will have option to select the game resolution and this should be use to fill up the screen. The wglgears demo runs at 640x480. I meant to keep the MESA GL pass-through as simple as possible without adding any scaling/adjustment options for the rendering. It is all up to the games. And, I like playing games in windowed.

ghost commented 4 years ago

Well, it does 10 fps haha so.. not too much playable haha but it was a good experiment!! I will retry it on my rk3399 , panfrost provide 2.1 too

kjliew commented 4 years ago

That was within expectation anyway. Without KVM, QEMU TCG may not have enough performance to run 3D games. Even though Linux on ARM does support KVM, but it cannot be used to accelerate foreign architecture instructions. Check out some of the performance figures for x86 KVM in action with QEMU: https://www.vogons.org/viewtopic.php?p=832278#p832278

ghost commented 4 years ago

Many thanks!

ghost commented 4 years ago

leave this result, Thanks @kjliew !!!

https://www.youtube.com/watch?v=H0IwylEIJ0Q&feature=youtu.be

tlosm commented 4 years ago

Askmewho... can you write someware how did you fix step by step?

ghost commented 4 years ago

Change both two files definitions from above with

if (defined(HOST_X86_64) && HOST_X86_64) || defined(arm)

Then it compiles. Use at least pentium3/or similar and cirrus on qemu.

You can use gl4es to get desktop profile on other sbcs rather than rpi

tlosm commented 4 years ago

Thanks mate.

WalkingDot commented 4 years ago

Hello,

I'm not sure if I should create a new issue or continue with this one... because it is also related to the Raspberry Pi 4. But I'm using a 64-bit kernel (aarch64/arm64) and emulating Windows XP.

Mesa is installed and working: glxinfo | grep "OpenGL version" OpenGL version string: 2.1 Mesa 20.1.2

I've used this patch: 10-qemu411-mesa-glide.patch

And edited these files to be used for the aarch64 architecture: qemu-3dfx/qemu-0/hw/3dfx/glide2x_impl.c qemu-3dfx/qemu-1/hw/mesa/mesagl_impl.c

Replaced: #if defined(HOST_X86_64) && HOST_X86_64 with: #if defined(HOST_AARCH64) && HOST_AARCH64

Then i've configured qemu qemu-4.1.1: (is there maybe a problem, e.g. that an important dependency is missing?)

./configure --target-list=i386-softmmu --enable-debug
Install prefix    /usr/local
BIOS directory    /usr/local/share/qemu
firmware path     /usr/local/share/qemu-firmware
binary directory  /usr/local/bin
library directory /usr/local/lib
module directory  /usr/local/lib/qemu
libexec directory /usr/local/libexec
include directory /usr/local/include
config directory  /usr/local/etc
local state directory   /usr/local/var
Manual directory  /usr/local/share/man
ELF interp prefix /usr/gnemul/qemu-%M
Source path       /home/xxx/qemu/myqemu/qemu-3dfx/qemu-4.1.1
GIT binary        git
GIT submodules
C compiler        cc
Host C compiler   cc
C++ compiler      c++
Objective-C compiler cc
ARFLAGS           rv
CFLAGS            -g
QEMU_CFLAGS       -I/usr/include/pixman-1  -I$(SRC_PATH)/dtc/libfdt
-pthread -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include
-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE
-Wstrict-prototypes -Wredundant-decls -Wall -Wundef -Wwrite-strings
-Wmissing-prototypes -fno-strict-aliasing -fno-common -fwrapv
-std=gnu99  -Wexpansion-to-defined -Wendif-labels
-Wno-shift-negative-value -Wno-missing-include-dirs -Wempty-body
-Wnested-externs -Wformat-security -Wformat-y2k -Winit-self
-Wignored-qualifiers -Wold-style-declaration -Wold-style-definition
-Wtype-limits -fstack-protector-strong -I/usr/include/p11-kit-1
-I/usr/include/libpng16   -I$(SRC_PATH)/capstone/include
LDFLAGS           -Wl,--warn-common -g
QEMU_LDFLAGS      -L$(BUILD_DIR)/dtc/libfdt
make              make
install           install
python            python3 -B (3.8.3)
slirp support     system
smbd              /usr/sbin/smbd
module support    no
host CPU          aarch64
host big endian   no
target list       i386-softmmu
gprof enabled     no
sparse enabled    no
strip binaries    no
profiler          no
static build      no
SDL support       yes (2.0.12)
SDL image support no
GTK support       yes (3.24.20)
GTK GL support    yes
VTE support       yes (0.60.3)
TLS priority      NORMAL
GNUTLS support    yes
libgcrypt         no
nettle            yes (3.6)
libtasn1          yes
PAM               yes
iconv support     yes
curses support    yes
virgl support     yes (0.8.2)
curl support      yes
mingw32 support   no
Audio drivers     pa oss
Block whitelist (rw)
Block whitelist (ro)
VirtFS support    yes
Multipath support no
VNC support       yes
VNC SASL support  yes
VNC JPEG support  yes
VNC PNG support   yes
xen support       no
brlapi support    yes
bluez  support    yes
Documentation     no
PIE               no
vde support       yes
netmap support    no
Linux AIO support yes
ATTR/XATTR support yes
Install blobs     yes
KVM support       yes
HAX support       no
HVF support       no
WHPX support      no
TCG support       yes
TCG debug enabled yes
TCG interpreter   no
malloc trim support yes
RDMA support      no
PVRDMA support    no
fdt support       git
membarrier        no
preadv support    yes
fdatasync         yes
madvise           yes
posix_madvise     yes
posix_memalign    yes
libcap-ng support yes
vhost-net support yes
vhost-crypto support yes
vhost-scsi support yes
vhost-vsock support yes
vhost-user support yes
Trace backends    log
spice support     no
rbd support       no
xfsctl support    yes
smartcard support yes
libusb            yes
usb net redir     yes
OpenGL support    yes
OpenGL dmabufs    yes
libiscsi support  no
libnfs support    yes
build guest agent yes
QGA VSS support   no
QGA w32 disk info no
QGA MSI support   no
seccomp support   yes
coroutine backend ucontext
coroutine pool    yes
debug stack usage no
mutex debugging   yes
crypto afalg      no
GlusterFS support no
gcov              gcov
gcov enabled      no
TPM support       yes
libssh support    yes
QOM debugging     yes
Live block migration yes
lzo support       yes
snappy support    yes
bzip2 support     yes
lzfse support     no
NUMA host support yes
libxml2           yes
tcmalloc support  no
jemalloc support  no
avx2 optimization
replication support yes
VxHS block device no
bochs support     yes
cloop support     yes
dmg support       yes
qcow v1 support   yes
vdi support       yes
vvfat support     yes
qed support       yes
parallels support yes
sheepdog support  yes
capstone          internal
docker            no
libpmem support   no
libudev           yes
default devices   yes

Building was successfully and faster as expected :)

After that I've started Windows XP with the default cpu, "-vga cirrus" and "-display sdl".

Then I've copied the file fxptl.sys into the directory "windows/system32/drivers". Copied glide.dll, glide2x.dll and glide3x.dll to "windows/system32". And executed instdrv.exe:

Driver installed
Driver started
fxLibInit OK
fxMapLinear OK, 0047f000

For testing I have executed the file "test04.exe". But I've received the following error message: The application failed to initialize properly (0xc0000142). And the Host console outputs only: glidept: DLL unloaded

Could you please help me to get qemu-3dfx running?

kjliew commented 4 years ago

I think you just have to wait a while after Windows XP startup. This issue manifested in x86 build, too, but usually on slower systems and debug build. A good indicator is to enable QEMU networking -net nic,model=rtl8139 -net user. After Windows XP displayed network connectivity, then you can try test04.exe.

WalkingDot commented 4 years ago

Thank you for your reply.

I've rebuild qemu-3dfx without the debug option and added the -net nic,model=rtl8139 -net user parameter.

After the boot up the network was quite fast active and I waited some more minutes but unfortunately without success.

@Askmewho posted:

new retry

ive compiled openglide

I haven't compiled any openglide stuff, is this maybe the problem? Or should I use 01-qemu411-mesa.patch instead of 10-qemu411-mesa-glide.patch?

Here are some more additional infos. Host OS: Manjaro KDE Plasma (AARCH64 Version).

Guest OS: Fresh installed Windows XP SP3 (32-Bit Version). Only DirectX 9.0c, the 3 glide-dll's and fxptl.sys are installed... nothing more.

Thanks!

kjliew commented 4 years ago

I haven't compiled any openglide stuff, is this maybe the problem?

Yes, you need OpenGlide at the host. If QEMU can't find host glide wrapper, then guest glide wrapper DLLs won't load at guest OS. If you don't want to compile OpenGlide, then you can't play 3Dfx Glide games with host glide wrapper. You can use Zeckensack's Glide wrapper on guest OS to translate Glide to OpenGL with some level of performance degradation.

Upstream OpenGlide is missing several fixes, experimental Glide3x and LFB fastpath for QEMU.

ghost commented 4 years ago

This project it's amazing, but you will not get better performance even with hw acceleration buddy. The qemu dynarec sucks. It will bottleneck everything.

kjliew commented 4 years ago

You can use glide.cfg to tweak some aspects of QEMU Glide pass-through. The defaults are tuned for x86 with KVM/WHPX acceleration. For ARM/AArch64 without KVM, changing LFB mode to "LfbHandler,1" should be faster on TCG to save whole-screen copy of shared memory on minor LFB updates.

@Askmewho From the video, your OpenGlide could be a problem because it lacks the fix for proper LFB writemode handling. Otherwise, I think ARM/AArch64 at 2.0GHz should be able to deliver 30FPS for GLQuake and NFS2SE on QEMU TCG.

WalkingDot commented 4 years ago

I've now compiled OpenGlide but the same error remains.

git clone https://github.com/voyageur/openglide.git
cd openglide
./bootstrap
./configure
make
sudo make install

Did I do something wrong or is something probably still missing? Or is it e.g. DirectX 9.0c, Cirrus, resolution, color depth, dpi...

Update: I've found a DosBox tutorial where the path to OpenGlide is specified. Do I also have to do something similar with Qemu?

cd dosbox
./autogen.sh
./configure CPPFLAGS="-I /usr/local/include/openglide/"
make
sudo make install 

@Askmewho With SMP and the ARMv8 instruction sets, I might be able to squeeze out a bit more performance.

ghost commented 4 years ago

Hope you achieve better results. Just asking info, there are no wine alternatives to this to get glide hw acceleration on x86 linux?

There is no multithread official support for arm emulating x86 afaik. You need to try out other qemu forks than support that kind of approaches.

kjliew commented 4 years ago

@WalkingDot If you still get the same error (0xc0000142), then it really meant that QEMU did not find libglide2x.so in the search path. Linux is tricky, I did not know about your distro if default lib.so path is /usr/lib or /usr/local/lib or /usr/lib/$arch/lib. Use LD_LIBRARY_PATH on QEMU invocation to point to the host glide wrappers so that QEMU can find them. It is easier just to boot DOS in QEMU and run the DOS version of TEST04 to verify LD_LIBRARY_PATH in effect.

WalkingDot commented 4 years ago

Wow... thank you so much for your help! I added the LD_LIBRARY_PATH and now it's working:

glidept: DLL loaded - glide2x.dll
trace: _grSstControl@4 called
trace: _grSstControl@4 called
trace: _grGlideGetVersion@4 called
glidept: grGlideGetVersion  Glide 2.45 - OpenGLide 0.09rc9
trace: _grGlideInit@0 called
glidept: grSstWinOpen called, fmt 1 org 0 buf 2 aux 1 gLfb 0x00740000
glidept: LFB mode is Shared Memory (fast)
     window 640x480 
glidept: grSstWinClose called             
glidept: grGlideShutdown called, fifo 0x00be data 0x0dae shm 0x00436b8 lfb 0xfb000000
glidept:   GrState 1 VtxLayout 0
glidept: DLL unloaded

Next I have tried to start Diablo 2 LOD (1.14d) with the launch parameter -3dfx. But unfortunately this error message appears: Error 1: Diablo II is unable to proceed. Unsupported graphics mode.

I've also tested Sven's GLIDE-wrapper, but I get an error, too: Setpixelformat failed! OpenGL could not be activated. Please check your video driver.

That' s too bad :-(((

If I find Need for Speed, I would test it and report the "LfbHandler,1" difference.

kjliew commented 4 years ago

Need For Speed 2 SE demo is available at https://archive.org/details/NFS2SEA

Diablo 2 LOD (1.13d) works on Windows XP guest with Sven's GLIDE-wrapper within QEMU on x86 Linux. I stopped at v1.13d because this is the last version that still compatible with Win98SE. You need to put opengl32.dll (MESAGL guest wrapper) and glide3x.dll (Sven's Glide wrapper) into the game EXE folder. I think v1.14d should work equally well if you must play with this version.

Setpixelformat failed!

QEMU should have posted some logs on the console. Did you verify if wglgears.exe worked from WinXP guest?

WalkingDot commented 4 years ago

I'm sorry about all the noobish problems...

opengl32.dll and wglgears.exe were missing. But I've found your wrpguest-mesagl-b7858ee.zip on vogons and placed the opengl32.dll into the game folder.

Now D2LOD, NFS2 and wglgears.exe are working, but unfortunately they all have low fps.

I've created the glide.cfg, added LfbHandler,1 withou the " " and placed it in: /usr/local/share/quemu/ /usr/local/bin/ But I couldn't notice any difference, though.

Here I have a screenshot of Sven's GLIDE-Wrapper info/bench:

Screenshot_20200706_184950
kjliew commented 4 years ago

QEMU output console log will tell if "LfbHandler,1" is in effect.

glidept: LFB mode is MMIO Handlers (slow)

As the log said, it only affects performance for Glide pass-through. When you used Sven's Glide wrapper, it was MESAGL pass-through with APIs wrapping at TCG (slow). You can do the same with OpenGlide if you built it as guest wrapper, but the performance is way better with OpenGlide as host wrapper with the guest DLL stubs simply passing along the APIs and API wrapping takes place at host CPU(fast). Unfortunately, OpenGlide does not work for Diablo II, the game will load and run (if you have the Glide3x patch), but rendering is flawed.

I don't have knowledge about OpenGL performance characteristics from ARM/AArch64, but I think wglgears should be light enough to get 60FPS for any kind of accelerated OpenGL. GLQuake1 and NFS2SE played at near 30FPS on Intel Core m3-6Y30 at 1.5GHz on QEMU TCG with OpenGlide. While other factors such as OpenGL drivers maturity may be an advantage for x86, this is the performance level that I would expect from a similar clocked ARM/AArch64.

WalkingDot commented 4 years ago

I'd guess it's Windows XP. It's too cpu hungry... I intended to use 4 cores with smp and accel tcg,thread=multi... the game could use 1 core up to 100% and the remaining 3 cores are available for windows processes. But if OpenGlide loads, the RPi4 get's memory errors and qemu crashes. So I've to use thread=single and that's probably why even wglgears runs poorly with slowdowns.

I will install Win 98SE in the next days and try again.

mjuned47 commented 4 years ago

I'd guess it's Windows XP. It's too cpu hungry... I intended to use 4 cores with smp and accel tcg,thread=multi... the game could use 1 core up to 100% and the remaining 3 cores are available for windows processes. But if OpenGlide loads, the RPi4 get's memory errors and qemu crashes. So I've to use thread=single and that's probably why even wglgears runs poorly with slowdowns.

I will install Win 98SE in the next days and try again.

Bro im getting error on compiling in arm64 ,i have opened that issue plz look into it ,help if you can Also , what i have done to get 3dfx working on my device is

Qemu compilied with this option ./configure --target-list=x86_64-softmmu --enable-opengl --enable-virglrender --enable-sdl And i want direct3d enable in emulated windows xp Can you help me??