You've already forked Microtransactions64
mirror of
https://github.com/Print-and-Panic/Microtransactions64.git
synced 2026-01-21 10:17:19 -08:00
fix memory.c and add ucode_small flag
This commit is contained in:
@@ -49,6 +49,7 @@
|
||||
#define OBJ_FLAG_SILHOUETTE (1 << 19) // 0x00080000
|
||||
#define OBJ_FLAG_OCCLUDE_SILHOUETTE (1 << 20) // 0x00100000
|
||||
#define OBJ_FLAG_OPACITY_FROM_CAMERA_DIST (1 << 21) // 0x00200000
|
||||
#define OBJ_FLAG_UCODE_SMALL (1 << 22) // 0x00400000
|
||||
#define OBJ_FLAG_HITBOX_WAS_SET (1 << 30) // 0x40000000
|
||||
|
||||
/* oHeldState */
|
||||
|
||||
@@ -68,7 +68,6 @@ struct MemoryPool *gEffectsMemoryPool;
|
||||
|
||||
|
||||
uintptr_t sSegmentTable[32];
|
||||
uintptr_t sSegmentROMTable[32];
|
||||
u32 sPoolFreeSpace;
|
||||
u8 *sPoolStart;
|
||||
u8 *sPoolEnd;
|
||||
@@ -339,13 +338,13 @@ void *load_segment(s32 segment, u8 *srcStart, u8 *srcEnd, u32 side, u8 *bssStart
|
||||
addr = dynamic_dma_read(srcStart, srcEnd, side, TLB_PAGE_SIZE, (uintptr_t)bssEnd - (uintptr_t)bssStart);
|
||||
if (addr != NULL) {
|
||||
u8 *realAddr = (u8 *)ALIGN((uintptr_t)addr, TLB_PAGE_SIZE);
|
||||
set_segment_base_addr(segment, realAddr); sSegmentROMTable[segment] = (uintptr_t) srcStart;
|
||||
set_segment_base_addr(segment, realAddr);
|
||||
mapTLBPages(segment << 24, VIRTUAL_TO_PHYSICAL(realAddr), (srcEnd - srcStart) + ((uintptr_t)bssEnd - (uintptr_t)bssStart), segment);
|
||||
}
|
||||
} else {
|
||||
addr = dynamic_dma_read(srcStart, srcEnd, side, 0, 0);
|
||||
if (addr != NULL) {
|
||||
set_segment_base_addr(segment, addr); sSegmentROMTable[segment] = (uintptr_t) srcStart;
|
||||
set_segment_base_addr(segment, addr);
|
||||
}
|
||||
}
|
||||
#if PUPPYPRINT_DEBUG
|
||||
@@ -420,7 +419,7 @@ void *load_segment_decompress(s32 segment, u8 *srcStart, u8 *srcEnd) {
|
||||
decompress(compressed, dest);
|
||||
#endif
|
||||
osSyncPrintf("end decompress\n");
|
||||
set_segment_base_addr(segment, dest); sSegmentROMTable[segment] = (uintptr_t) srcStart;
|
||||
set_segment_base_addr(segment, dest);
|
||||
main_pool_free(compressed);
|
||||
}
|
||||
}
|
||||
@@ -459,7 +458,7 @@ void *load_segment_decompress_heap(u32 segment, u8 *srcStart, u8 *srcEnd) {
|
||||
#elif MIO0
|
||||
decompress(compressed, gDecompressionHeap);
|
||||
#endif
|
||||
set_segment_base_addr(segment, gDecompressionHeap); sSegmentROMTable[segment] = (uintptr_t) srcStart;
|
||||
set_segment_base_addr(segment, gDecompressionHeap);
|
||||
main_pool_free(compressed);
|
||||
}
|
||||
return gDecompressionHeap;
|
||||
|
||||
@@ -920,6 +920,7 @@ void cur_obj_update(void) {
|
||||
f32 distanceFromMario;
|
||||
BhvCommandProc bhvCmdProc;
|
||||
s32 bhvProcResult;
|
||||
s32 objListIndex;
|
||||
|
||||
// Calculate the distance from the object to Mario.
|
||||
if (objFlags & OBJ_FLAG_COMPUTE_DIST_TO_MARIO) {
|
||||
@@ -995,6 +996,15 @@ void cur_obj_update(void) {
|
||||
COND_BIT((!(objFlags & OBJ_FLAG_UCODE_LARGE )), gCurrentObject->header.gfx.node.flags, GRAPH_RENDER_UCODE_REJ );
|
||||
COND_BIT(( objFlags & OBJ_FLAG_SILHOUETTE ), gCurrentObject->header.gfx.node.flags, GRAPH_RENDER_SILHOUETTE );
|
||||
COND_BIT(( objFlags & OBJ_FLAG_OCCLUDE_SILHOUETTE ), gCurrentObject->header.gfx.node.flags, GRAPH_RENDER_OCCLUDE_SILHOUETTE);
|
||||
BehaviorScript *bhvScript = segmented_to_virtual(gCurrentObject->behavior);
|
||||
if ((bhvScript[0] >> 24) == 0) {
|
||||
objListIndex = (bhvScript[0] >> 16) & 0xFFFF;
|
||||
}
|
||||
if (objListIndex == OBJ_LIST_SURFACE && !(objFlags & OBJ_FLAG_UCODE_SMALL))
|
||||
{
|
||||
gCurrentObject->header.gfx.node.flags &= ~GRAPH_RENDER_UCODE_REJ;
|
||||
gCurrentObject->header.gfx.node.flags |= GRAPH_RENDER_UCODE_ZEX;
|
||||
}
|
||||
|
||||
#ifdef OBJ_OPACITY_BY_CAM_DIST
|
||||
if (objFlags & OBJ_FLAG_OPACITY_FROM_CAMERA_DIST) {
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
#define GRAPH_RENDER_SILHOUETTE (1 << 6) // 0x0040
|
||||
#define GRAPH_RENDER_OCCLUDE_SILHOUETTE (1 << 7) // 0x0080
|
||||
#define GRAPH_RENDER_UCODE_REJ (1 << 8) // 0x0100
|
||||
#define GRAPH_RENDER_UCODE_ZEX (1 << 9) // 0x0200
|
||||
|
||||
// The amount of bits to use for the above flags out of a s16 variable.
|
||||
// The remaining bits to the left are used for the render layers.
|
||||
|
||||
Reference in New Issue
Block a user