New ARM call
svn-id: r16020
This commit is contained in:
parent
7d160b2df6
commit
7a19453220
2 changed files with 21 additions and 55 deletions
|
@ -2,56 +2,31 @@
|
||||||
#include "globals.h"
|
#include "globals.h"
|
||||||
#include "init_arm.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() {
|
void ARMInit() {
|
||||||
// init global ARM only
|
// init global ARM only
|
||||||
MemSet(gVars->arm, sizeof(gVars->arm), 0);
|
MemSet(gVars->arm, sizeof(gVars->arm), 0);
|
||||||
ARM(PNO_COPYRECT ).pnoPtr = _PnoInit(RSC_COPYRECT, &ARM(PNO_COPYRECT).pnoDesc);
|
PnoInit(RSC_ARMCOMMON, &ARM(ARM_COMMON));
|
||||||
ARM(PNO_COSTUMEPROC3).pnoPtr = _PceInit(RSC_COSTUMEPROC3);
|
PnoInit(RSC_ARMENGINE, &ARM(ARM_ENGINE));
|
||||||
ARM(PNO_DRAWSTRIP ).pnoPtr = _PceInit(RSC_DRAWSTRIP);
|
|
||||||
ARM(PNO_BLIT ).pnoPtr = _PnoInit(RSC_BLIT, &ARM(PNO_BLIT).pnoDesc);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ARMRelease() {
|
void ARMRelease() {
|
||||||
_PnoFree(&ARM(PNO_BLIT ).pnoDesc, ARM(PNO_BLIT).pnoPtr);
|
PnoUnload(&ARM(ARM_ENGINE).pnoDesc);
|
||||||
_PceFree(ARM(PNO_DRAWSTRIP ).pnoPtr);
|
PnoUnload(&ARM(ARM_COMMON).pnoDesc);
|
||||||
_PceFree(ARM(PNO_COSTUMEPROC3 ).pnoPtr);
|
|
||||||
_PnoFree(&ARM(PNO_COPYRECT ).pnoDesc, ARM(PNO_COPYRECT).pnoPtr);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
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);
|
|
||||||
}
|
|
|
@ -4,13 +4,4 @@
|
||||||
void ARMInit();
|
void ARMInit();
|
||||||
void ARMRelease();
|
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
|
#endif
|
Loading…
Add table
Add a link
Reference in a new issue