Skip to content

Commit 78917bd

Browse files
committed
wip
1 parent b5b45b2 commit 78917bd

File tree

2 files changed

+80
-2
lines changed

2 files changed

+80
-2
lines changed

game/overlord/jak3/pagemanager.cpp

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,77 @@ CPageManager::CPage::CPage(u8* start, u8* end, int page_id) {
3636
m_nUnk2 = 0;
3737
}
3838

39+
int CPageManager::CPage::AddRef() {
40+
int state, ret = -1;
41+
42+
CpuSuspendIntr(&state);
43+
44+
if (m_nAllocState == 1 && m_pPageList != nullptr) {
45+
m_pPageList->m_nRefCount++;
46+
m_nRefCount++;
47+
ret = m_nRefCount;
48+
}
49+
50+
CpuResumeIntr(state);
51+
52+
return ret;
53+
}
54+
55+
int CPageManager::CPage::ReleaseRef() {
56+
int state, ret = -1;
57+
58+
CpuSuspendIntr(&state);
59+
60+
if (m_nAllocState == 1 && m_pPageList != nullptr) {
61+
m_pPageList->m_nRefCount--;
62+
m_nRefCount--;
63+
ret = m_nRefCount;
64+
}
65+
66+
CpuResumeIntr(state);
67+
68+
return ret;
69+
}
70+
71+
int CPageManager::CPage::AddDmaRef() {
72+
int state, ret = -1;
73+
74+
CpuSuspendIntr(&state);
75+
76+
if (m_nAllocState == 1 && m_pPageList != nullptr) {
77+
m_pPageList->m_nDmaRefCount++;
78+
m_nDmaRefCount++;
79+
ret = m_nDmaRefCount;
80+
}
81+
82+
CpuResumeIntr(state);
83+
84+
return ret;
85+
}
86+
87+
int CPageManager::CPage::ReleaseDmaRef() {
88+
int state, ret = -1;
89+
90+
CpuSuspendIntr(&state);
91+
92+
if (m_nAllocState == 1 && m_pPageList != nullptr) {
93+
m_pPageList->m_nDmaRefCount--;
94+
m_nDmaRefCount--;
95+
ret = m_nDmaRefCount;
96+
}
97+
98+
CpuResumeIntr(state);
99+
100+
return ret;
101+
}
102+
103+
void CPageManager::CPage::FromPagesCopy(u8* pInPageData, u8* pDest, int nNumBytes) {
104+
if (nNumBytes <= 0) {
105+
return;
106+
}
107+
108+
}
109+
39110
void CPageManager::Initialize() {
40111
m_Cache.Initialize();
41112
}

game/overlord/jak3/pagemanager.h

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,18 +24,25 @@ class CPageManager {
2424
CPageList* m_pPageList;
2525
u8* m_pData;
2626
u8* m_pEnd; // maybe
27-
u32 m_nRefCount;
28-
u32 m_nDmaRefCount;
27+
int m_nRefCount;
28+
int m_nDmaRefCount;
2929
int m_nPageID;
3030
int m_nAllocState;
3131
int m_nUnk2;
3232
};
3333

3434
class CPageList {
35+
friend class CPage;
36+
37+
public:
3538
int AddActivePages(int);
3639
int CancelActivePages();
3740
CPage* StepActivePage();
3841
void GarbageCollect();
42+
43+
private:
44+
int m_nRefCount;
45+
int m_nDmaRefCount;
3946
};
4047

4148
void Initialize();

0 commit comments

Comments
 (0)