1#include "Game/System/GameSystemStationedArchiveLoader.hpp"
2#include "Game/Util.hpp"
7 if (pInfo->mLoadType != 2 && pInfo->mLoadType != 3) {
14ConditionUsePlayerHeap::ConditionUsePlayerHeap() {
23 if (mIsDataMario != 0) {
27 return pInfo->mLoadType == type;
31 switch (pInfo->mHeapType) {
46PlayerHeapHolder::PlayerHeapHolder() {
52 mNapaHeap = PlayerHeapHolder::createHeap(0x500000, (JKRHeap*)MR::getStationedHeapNapa());
53 JKRExpHeap* gddr = PlayerHeapHolder::createHeap(0x500000, (JKRHeap*)MR::getStationedHeapGDDR3());
55 condition->mNapaHeap = mNapaHeap;
56 condition->mGDDRHeap = gddr;
57 mCondition = condition;
58 condition->mIsDataMario = mIsDataMario;
61void PlayerHeapHolder::adjust() {
62 JKRExpHeap* napa = mNapaHeap;
63 if (!napa->isEmpty()) {
64 napa->alloc(0x10000,
nullptr);
67 JKRExpHeap* gddr = mGDDRHeap;
68 if (!gddr->isEmpty()) {
69 gddr->alloc(0x10000,
nullptr);
72 MR::adjustHeapSize(mNapaHeap,
nullptr);
73 MR::adjustHeapSize(mGDDRHeap,
nullptr);
76void PlayerHeapHolder::dispose() {
77 MR::removeResourceAndFileHolderIfIsEqualHeap(mNapaHeap);
78 MR::removeResourceAndFileHolderIfIsEqualHeap(mGDDRHeap);
80 if (mNapaHeap->mSize != 0) {
84 if (mGDDRHeap->mSize != 0) {
89void PlayerHeapHolder::setIsDataMario(
bool data) {
91 mCondition->mIsDataMario = data;
94JKRExpHeap* PlayerHeapHolder::createHeap(u32 size, JKRHeap* pParent) {
95 if (pParent->getMaxAllocatableSize(0x10) < size) {
99 return JKRExpHeap::create(size, pParent,
true);