vitaQuake icon indicating copy to clipboard operation
vitaQuake copied to clipboard

vitaQuake needs VitaGL rendering changes ported to fix compilation

Open mattthw opened this issue 2 years ago • 2 comments

Similar to this change in vitaQuakeii, vitaQuake needs the following replaced with the new equivalent calls to vitaGL:

vglStartRendering
vglStopRendering
vglStopRenderingInit
vglStopRenderingTerm
vglUpdateCommonDialog

Errors:

source/menu.c: In function 'M_LanConfig_Key':
source/menu.c:2459:5: warning: implicit declaration of function 'sceNetAdhocInit' [-Wimplicit-function-declaration]
 2459 |     sceNetAdhocInit();
      |     ^~~~~~~~~~~~~~~
source/menu.c:2460:5: error: unknown type name 'SceNetAdhocctlAdhocId'
 2460 |     SceNetAdhocctlAdhocId adhocId;
      |     ^~~~~~~~~~~~~~~~~~~~~
source/menu.c:2461:32: error: 'SceNetAdhocctlAdhocId' undeclared (first use in this function)
 2461 |     memset(&adhocId, 0, sizeof(SceNetAdhocctlAdhocId));
      |                                ^~~~~~~~~~~~~~~~~~~~~
source/menu.c:2461:32: note: each undeclared identifier is reported only once for each function it appears in
source/menu.c:2462:12: error: request for member 'type' in something not a structure or union
 2462 |     adhocId.type = SCE_NET_ADHOCCTL_ADHOCTYPE_RESERVED;
      |            ^
source/menu.c:2462:20: error: 'SCE_NET_ADHOCCTL_ADHOCTYPE_RESERVED' undeclared (first use in this function)
 2462 |     adhocId.type = SCE_NET_ADHOCCTL_ADHOCTYPE_RESERVED;
      |                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
source/menu.c:2463:20: error: request for member 'data' in something not a structure or union
 2463 |     memcpy(&adhocId.data[0], "SOLI00001", SCE_NET_ADHOCCTL_ADHOCID_LEN);
      |                    ^
source/menu.c:2463:43: error: 'SCE_NET_ADHOCCTL_ADHOCID_LEN' undeclared (first use in this function)
 2463 |     memcpy(&adhocId.data[0], "SOLI00001", SCE_NET_ADHOCCTL_ADHOCID_LEN);
      |                                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
source/menu.c:2464:5: warning: implicit declaration of function 'sceNetAdhocctlInit' [-Wimplicit-function-declaration]
 2464 |     sceNetAdhocctlInit(&adhocId);
      |     ^~~~~~~~~~~~~~~~~~
source/menu.c:2466:5: error: unknown type name 'SceNetCheckDialogParam'
 2466 |     SceNetCheckDialogParam param;
      |     ^~~~~~~~~~~~~~~~~~~~~~
source/menu.c:2467:5: warning: implicit declaration of function 'sceNetCheckDialogParamInit' [-Wimplicit-function-declaration]
 2467 |     sceNetCheckDialogParamInit(&param);
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~
source/menu.c:2468:5: error: unknown type name 'SceNetAdhocctlGroupName'
 2468 |     SceNetAdhocctlGroupName groupName;
      |     ^~~~~~~~~~~~~~~~~~~~~~~
source/menu.c:2469:21: error: request for member 'data' in something not a structure or union
 2469 |     memset(groupName.data, 0, SCE_NET_ADHOCCTL_GROUPNAME_LEN);
      |                     ^
source/menu.c:2469:31: error: 'SCE_NET_ADHOCCTL_GROUPNAME_LEN' undeclared (first use in this function)
 2469 |     memset(groupName.data, 0, SCE_NET_ADHOCCTL_GROUPNAME_LEN);
      |                               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
source/menu.c:2470:10: error: request for member 'groupName' in something not a structure or union
 2470 |     param.groupName = &groupName;
      |          ^
source/menu.c:2471:18: error: request for member 'npCommunicationId' in something not a structure or union
 2471 |     memcpy(&param.npCommunicationId.data, "SOLI00001", 9);
      |                  ^
source/menu.c:2472:10: error: request for member 'npCommunicationId' in something not a structure or union
 2472 |     param.npCommunicationId.term = '\0';
      |          ^
source/menu.c:2473:10: error: request for member 'npCommunicationId' in something not a structure or union
 2473 |     param.npCommunicationId.num = 0;
      |          ^
source/menu.c:2474:10: error: request for member 'mode' in something not a structure or union
 2474 |     param.mode = SCE_NETCHECK_DIALOG_MODE_PSP_ADHOC_CONN;
      |          ^
source/menu.c:2474:18: error: 'SCE_NETCHECK_DIALOG_MODE_PSP_ADHOC_CONN' undeclared (first use in this function)
 2474 |     param.mode = SCE_NETCHECK_DIALOG_MODE_PSP_ADHOC_CONN;
      |                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
source/menu.c:2475:10: error: request for member 'timeoutUs' in something not a structure or union
 2475 |     param.timeoutUs = 0;
      |          ^
source/menu.c:2477:15: warning: implicit declaration of function 'sceNetCheckDialogInit' [-Wimplicit-function-declaration]
 2477 |     int res = sceNetCheckDialogInit(&param);
      |               ^~~~~~~~~~~~~~~~~~~~~

after updating the header files and make files we arrive at the GL issue:

/usr/local/vitasdk/bin/../lib/gcc/arm-vita-eabi/10.3.0/../../../../arm-vita-eabi/bin/ld: source/sys_psp2.o: in function `quake_main':
/Users/matt_1/workspace/projects-vita/project-solitude/project-workspace/SolitudeVita/source/sys_psp2.c:573: undefined reference to `vglStartRendering'
/usr/local/vitasdk/bin/../lib/gcc/arm-vita-eabi/10.3.0/../../../../arm-vita-eabi/bin/ld: /Users/matt_1/workspace/projects-vita/project-solitude/project-workspace/SolitudeVita/source/sys_psp2.c:574: undefined reference to `vglStopRenderingInit'
/usr/local/vitasdk/bin/../lib/gcc/arm-vita-eabi/10.3.0/../../../../arm-vita-eabi/bin/ld: /Users/matt_1/workspace/projects-vita/project-solitude/project-workspace/SolitudeVita/source/sys_psp2.c:575: undefined reference to `vglUpdateCommonDialog'
/usr/local/vitasdk/bin/../lib/gcc/arm-vita-eabi/10.3.0/../../../../arm-vita-eabi/bin/ld: /Users/matt_1/workspace/projects-vita/project-solitude/project-workspace/SolitudeVita/source/sys_psp2.c:576: undefined reference to `vglStopRenderingTerm'
/usr/local/vitasdk/bin/../lib/gcc/arm-vita-eabi/10.3.0/../../../../arm-vita-eabi/bin/ld: source/gl_vidpsp2.o: in function `GL_BeginRendering':
/Users/matt_1/workspace/projects-vita/project-solitude/project-workspace/SolitudeVita/source/gl_vidpsp2.c:512: undefined reference to `vglStartRendering'
/usr/local/vitasdk/bin/../lib/gcc/arm-vita-eabi/10.3.0/../../../../arm-vita-eabi/bin/ld: source/gl_vidpsp2.o: in function `GL_EndRendering':
/Users/matt_1/workspace/projects-vita/project-solitude/project-workspace/SolitudeVita/source/gl_vidpsp2.c:526: undefined reference to `vglStopRenderingInit'
/usr/local/vitasdk/bin/../lib/gcc/arm-vita-eabi/10.3.0/../../../../arm-vita-eabi/bin/ld: /Users/matt_1/workspace/projects-vita/project-solitude/project-workspace/SolitudeVita/source/gl_vidpsp2.c:527: undefined reference to `vglUpdateCommonDialog'
/usr/local/vitasdk/bin/../lib/gcc/arm-vita-eabi/10.3.0/../../../../arm-vita-eabi/bin/ld: /Users/matt_1/workspace/projects-vita/project-solitude/project-workspace/SolitudeVita/source/gl_vidpsp2.c:528: undefined reference to `vglStopRenderingTerm'
/usr/local/vitasdk/bin/../lib/gcc/arm-vita-eabi/10.3.0/../../../../arm-vita-eabi/bin/ld: /Users/matt_1/workspace/projects-vita/project-solitude/project-workspace/SolitudeVita/source/gl_vidpsp2.c:529: undefined reference to `vglStopRendering'
/usr/local/vitasdk/bin/../lib/gcc/arm-vita-eabi/10.3.0/../../../../arm-vita-eabi/bin/ld: /Users/matt_1/workspace/projects-vita/project-solitude/project-workspace/SolitudeVita/source/gl_vidpsp2.c:538: undefined reference to `vglStartRendering'
/usr/local/vitasdk/bin/../lib/gcc/arm-vita-eabi/10.3.0/../../../../arm-vita-eabi/bin/ld: /Users/matt_1/workspace/projects-vita/project-solitude/project-workspace/SolitudeVita/source/gl_vidpsp2.c:553: undefined reference to `vglStopRendering'
collect2: error: ld returned 1 exit status
make: *** [Solitude.elf] Error 1

mattthw avatar Mar 27 '22 06:03 mattthw

Found this: https://github.com/Rinnegatamante/vitaGL/commit/4b086a0f97acadfb88897c2b69c823fcebad7c20 and https://github.com/Rinnegatamante/vitaQuakeII/commit/6ad5f48cdf23e260f07685bb148622aa59dce5f3. Together I may be unblocked.

mattthw avatar Mar 27 '22 06:03 mattthw

I attempted the change, but I end up with a crash at start:

https://github.com/mmccoy37/SolitudeVita/commit/b396865249d65676b796cd5b876fb7dd2d07be31

➜  vita-parse-core git:(master) ✗ python2 main.py /tmp/psp2core-1648368370-0x0000dc3987-eboot.bin.psp2dmp /Users/matt_1/workspace/projects-vita/project-solitude/project-workspace/SolitudeVita/Solitude.elf
=== THREADS ===
    SOLI00001
        ID: 0x40010003
        Stop reason: 0x0 (No reason)
        Status: 0x8 (Waiting)
        PC: 0xe00097d4 (SceLibKernel@1 + 0x66c4)
    Quake
        ID: 0x4003002f
        Stop reason: 0x30004 (Data abort exception)
        Status: 0x1 (Running)
        PC: 0x812f8926 (TouchRemap@1 + 0x8926)
    SceCommonDialogWorker
        ID: 0x400100c3
        Stop reason: 0x0 (No reason)
        Status: 0x8 (Waiting)
        PC: 0xe0009414 (SceLibKernel@1 + 0x6304)

=== THREAD "Quake" <0x4003002f> CRASHED (Data abort exception) ===
REGISTERS:
    R0: 0x0
    R1: 0xb15c
    R2: 0xdeadbeef
    R3: 0xdeadbeef
    R4: 0x812db058
    R5: 0x0
    R6: 0x1
    R7: 0x814542a8
    R8: 0x81302c54
    R9: 0x81302c58
    R10: 0x84a4bb00
    R11: 0x81316b4c
    R12: 0xdeadbeef
    SP: 0x90a00088
    PC: 0x812f8926 (TouchRemap@1 + 0x8926)
    LR: 0x812f86c1 (TouchRemap@1 + 0x86c1)

STACK CONTENTS AROUND SP:
          0x90a00048: 0x0
          0x90a0004c: 0x8121c8db (Solitude.elf@1 + 0x1ec8db => _sbrk_r at ??:?)
          0x90a00050: 0x1fe120
          0x90a00054: 0x84057928 (Solitude.elf@2 + 0x2d57928)
          0x90a00058: 0x84057090 (Solitude.elf@2 + 0x2d57090)
          0x90a0005c: 0x0
          0x90a00060: 0x0
          0x90a00064: 0x8121c8db (Solitude.elf@1 + 0x1ec8db => _sbrk_r at ??:?)
          0x90a00068: 0x201000
          0x90a0006c: 0x201530
          0x90a00070: 0x84057928 (Solitude.elf@2 + 0x2d57928)
          0x90a00074: 0x812190c3 (Solitude.elf@1 + 0x1e90c3 => _malloc_trim_r at ??:?)
          0x90a00078: 0x84057050 (Solitude.elf@2 + 0x2d57050)
          0x90a0007c: 0x8130d4d0 (Solitude.elf@2 + 0xd4d0)
          0x90a00080: 0x84057928 (Solitude.elf@2 + 0x2d57928)
          0x90a00084: 0x3500
    SP => 0x90a00088: 0x812db058 (TouchRemap@2 + 0x58)
          0x90a0008c: 0x0
          0x90a00090: 0x1
          0x90a00094: 0x814542a8 (Solitude.elf@2 + 0x1542a8)
          0x90a00098: 0x813008b8 (Solitude.elf@2 + 0x8b8)
          0x90a0009c: 0x0
          0x90a000a0: 0x0
          0x90a000a4: 0x8105a751 (Solitude.elf@1 + 0x2a751 => quake_main at ??:?)
          0x90a000a8: 0xffffffff
          0x90a000ac: 0xffffffff
          0x90a000b0: 0xffffffff
          0x90a000b4: 0x81316b48 (Solitude.elf@2 + 0x16b48)
          0x90a000b8: 0xffffffff
          0x90a000bc: 0xffffffff
          0x90a000c0: 0xffffffff
          0x90a000c4: 0xffffffff
          0x90a000c8: 0xffffffff
          0x90a000cc: 0xffffffff
          0x90a000d0: 0xffffffff
          0x90a000d4: 0xffffffff
          0x90a000d8: 0xffffffff
          0x90a000dc: 0xffffffff
          0x90a000e0: 0xffffffff
          0x90a000e4: 0xffffffff

Disabling TouchRemap allows me to progress and open the game. However I end up with a black screen. Next steps are:

  • try a fresh config from vitaQuake
  • disable plugins I don't need

mattthw avatar Mar 27 '22 08:03 mattthw