diff --git a/backends/PalmOS/Src/init_arm.cpp b/backends/PalmOS/Src/init_arm.cpp index ca98b21a40f..77aea25ceef 100644 --- a/backends/PalmOS/Src/init_arm.cpp +++ b/backends/PalmOS/Src/init_arm.cpp @@ -2,56 +2,31 @@ #include "globals.h" #include "init_arm.h" +static void PnoInit(DmResID resID,PNOInitType *pnoP) { + // Load and allocate PNO + MemHandle armH = DmGetResource('ARMC', resID); + MemPtr armP = MemHandleLock(armH); + PnoLoad(&pnoP->pnoDesc, armP); + MemPtrUnlock(armP); + DmReleaseResource(armH); + + // Init PNO + PnoEntryHeader *header = (PnoEntryHeader *)ALIGN_4BYTE(pnoP->headerBuffer); + pnoP->alignedHeader = header; + + header->r10Value = pnoP->pnoDesc.r10Value; + header->pnoMainAddress = pnoP->pnoDesc.pnoMainAddress; +} + void ARMInit() { // init global ARM only MemSet(gVars->arm, sizeof(gVars->arm), 0); - ARM(PNO_COPYRECT ).pnoPtr = _PnoInit(RSC_COPYRECT, &ARM(PNO_COPYRECT).pnoDesc); - ARM(PNO_COSTUMEPROC3).pnoPtr = _PceInit(RSC_COSTUMEPROC3); - ARM(PNO_DRAWSTRIP ).pnoPtr = _PceInit(RSC_DRAWSTRIP); - ARM(PNO_BLIT ).pnoPtr = _PnoInit(RSC_BLIT, &ARM(PNO_BLIT).pnoDesc); + PnoInit(RSC_ARMCOMMON, &ARM(ARM_COMMON)); + PnoInit(RSC_ARMENGINE, &ARM(ARM_ENGINE)); } void ARMRelease() { - _PnoFree(&ARM(PNO_BLIT ).pnoDesc, ARM(PNO_BLIT).pnoPtr); - _PceFree(ARM(PNO_DRAWSTRIP ).pnoPtr); - _PceFree(ARM(PNO_COSTUMEPROC3 ).pnoPtr); - _PnoFree(&ARM(PNO_COPYRECT ).pnoDesc, ARM(PNO_COPYRECT).pnoPtr); + PnoUnload(&ARM(ARM_ENGINE).pnoDesc); + PnoUnload(&ARM(ARM_COMMON).pnoDesc); } -MemPtr _PceInit(DmResID resID) { - MemHandle armH = DmGetResource('ARMC', resID); - NativeFuncType *armP = (NativeFuncType *)MemHandleLock(armH); - - return armP; -} - -UInt32 _PceCall(void *armP, void *userDataP) { - return PceNativeCall((NativeFuncType *)armP, userDataP); -} - -void _PceFree(void *armP) { - MemHandle armH = MemPtrRecoverHandle(armP); - - MemPtrUnlock(armP); - DmReleaseResource(armH); -} - -MemPtr _PnoInit(DmResID resID, PnoDescriptor *pnoP) { - MemHandle armH = DmGetResource('ARMC', resID); - MemPtr armP = MemHandleLock(armH); - PnoLoad(pnoP, armP); - - return armP; -} - -UInt32 _PnoCall(PnoDescriptor *pnoP, void *userDataP) { - return PnoCall(pnoP, userDataP); -} - -void _PnoFree(PnoDescriptor *pnoP, MemPtr armP) { - MemHandle armH = MemPtrRecoverHandle(armP); - - PnoUnload(pnoP); - MemPtrUnlock(armP); - DmReleaseResource(armH); -} \ No newline at end of file diff --git a/backends/PalmOS/Src/init_arm.h b/backends/PalmOS/Src/init_arm.h index 04ffbfc52da..348405035d8 100644 --- a/backends/PalmOS/Src/init_arm.h +++ b/backends/PalmOS/Src/init_arm.h @@ -4,13 +4,4 @@ void ARMInit(); void ARMRelease(); -// calls -MemPtr _PceInit(DmResID resID); -UInt32 _PceCall(void *armP, void *userDataP); -void _PceFree(void *armP); - -MemPtr _PnoInit(DmResID resID, PnoDescriptor *pnoP); -UInt32 _PnoCall(PnoDescriptor *pnoP, void *userDataP); -void _PnoFree(PnoDescriptor *pnoP, MemPtr armP); - -#endif \ No newline at end of file +#endif