You've already forked Microtransactions64
mirror of
https://github.com/Print-and-Panic/Microtransactions64.git
synced 2026-01-21 10:17:19 -08:00
Merge pull request #56 from Reonu/experimental
Objects rendering on F3DLX2.Rej
This commit is contained in:
@@ -242,6 +242,8 @@
|
||||
#define BEGIN_REPEAT_UNUSED(count) \
|
||||
BC_BB(0x26, count)
|
||||
|
||||
#define OR_LONG(field, value) LOAD_ANIMATIONS(field, value)
|
||||
|
||||
// Loads the animations for the object. <field> is always set to oAnimations.
|
||||
#define LOAD_ANIMATIONS(field, anims) \
|
||||
BC_BB(0x27, field), \
|
||||
@@ -2001,7 +2003,7 @@ const BehaviorScript bhvBowserFlameSpawn[] = {
|
||||
|
||||
const BehaviorScript bhvTiltingBowserLavaPlatform[] = {
|
||||
BEGIN(OBJ_LIST_SURFACE),
|
||||
OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
|
||||
OR_LONG(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE | OBJ_FLAG_UCODE_LARGE)),
|
||||
LOAD_COLLISION_DATA(bowser_2_seg7_collision_tilting_platform),
|
||||
SET_FLOAT(oDrawingDistance, 20000),
|
||||
SET_FLOAT(oCollisionDistance, 20000),
|
||||
@@ -2015,7 +2017,7 @@ const BehaviorScript bhvTiltingBowserLavaPlatform[] = {
|
||||
|
||||
const BehaviorScript bhvFallingBowserPlatform[] = {
|
||||
BEGIN(OBJ_LIST_SURFACE),
|
||||
OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),
|
||||
OR_LONG(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE | OBJ_FLAG_UCODE_LARGE),
|
||||
SET_FLOAT(oDrawingDistance, 20000),
|
||||
SET_FLOAT(oCollisionDistance, 20000),
|
||||
SET_HOME(),
|
||||
@@ -2188,7 +2190,7 @@ const BehaviorScript bhvWaterLevelPillar[] = {
|
||||
|
||||
const BehaviorScript bhvDddWarp[] = {
|
||||
BEGIN(OBJ_LIST_SURFACE),
|
||||
OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),
|
||||
OR_LONG(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE | OBJ_FLAG_UCODE_LARGE),
|
||||
SET_FLOAT(oCollisionDistance, 30000),
|
||||
BEGIN_LOOP(),
|
||||
CALL_NATIVE(bhv_ddd_warp_loop),
|
||||
@@ -2657,7 +2659,7 @@ const BehaviorScript bhvBowserSubDoor[] = {
|
||||
|
||||
const BehaviorScript bhvBowsersSub[] = {
|
||||
BEGIN(OBJ_LIST_SURFACE),
|
||||
OR_INT(oFlags, (OBJ_FLAG_ACTIVE_FROM_AFAR | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
|
||||
OR_LONG(oFlags, (OBJ_FLAG_ACTIVE_FROM_AFAR | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE | OBJ_FLAG_UCODE_LARGE)),
|
||||
SET_FLOAT(oDrawingDistance, 20000),
|
||||
SET_FLOAT(oCollisionDistance, 20000),
|
||||
LOAD_COLLISION_DATA(ddd_seg7_collision_submarine),
|
||||
@@ -2705,7 +2707,7 @@ const BehaviorScript bhvJrbSlidingBox[] = {
|
||||
|
||||
const BehaviorScript bhvShipPart3[] = {
|
||||
BEGIN(OBJ_LIST_DEFAULT),
|
||||
OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),
|
||||
OR_LONG(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE | OBJ_FLAG_UCODE_LARGE),
|
||||
SET_HOME(),
|
||||
BEGIN_LOOP(),
|
||||
CALL_NATIVE(bhv_ship_part_3_loop),
|
||||
@@ -2714,7 +2716,7 @@ const BehaviorScript bhvShipPart3[] = {
|
||||
|
||||
const BehaviorScript bhvInSunkenShip3[] = {
|
||||
BEGIN(OBJ_LIST_SURFACE),
|
||||
OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),
|
||||
OR_LONG(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE | OBJ_FLAG_UCODE_LARGE),
|
||||
LOAD_COLLISION_DATA(jrb_seg7_collision_in_sunken_ship_3),
|
||||
SET_HOME(),
|
||||
SET_FLOAT(oCollisionDistance, 4000),
|
||||
@@ -2726,7 +2728,7 @@ const BehaviorScript bhvInSunkenShip3[] = {
|
||||
|
||||
const BehaviorScript bhvSunkenShipPart[] = {
|
||||
BEGIN(OBJ_LIST_DEFAULT),
|
||||
OR_INT(oFlags, (OBJ_FLAG_ACTIVE_FROM_AFAR | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
|
||||
OR_LONG(oFlags, (OBJ_FLAG_ACTIVE_FROM_AFAR | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE | OBJ_FLAG_UCODE_LARGE)),
|
||||
SCALE(/*Unused*/ 0, /*Field*/ 50),
|
||||
SET_HOME(),
|
||||
BEGIN_LOOP(),
|
||||
@@ -2743,7 +2745,7 @@ const BehaviorScript bhvSunkenShipSetRotation[] = {
|
||||
|
||||
const BehaviorScript bhvSunkenShipPart2[] = {
|
||||
BEGIN(OBJ_LIST_DEFAULT),
|
||||
OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
|
||||
OR_LONG(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE | OBJ_FLAG_UCODE_LARGE)),
|
||||
SCALE(/*Unused*/ 0, /*Field*/ 100),
|
||||
SET_FLOAT(oDrawingDistance, 6000),
|
||||
SET_HOME(),
|
||||
@@ -2761,7 +2763,7 @@ const BehaviorScript bhvInSunkenShip2[] = {
|
||||
BEGIN(OBJ_LIST_SURFACE),
|
||||
LOAD_COLLISION_DATA(jrb_seg7_collision_in_sunken_ship_2),
|
||||
// Sunken ship - common:
|
||||
OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),
|
||||
OR_LONG(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE | OBJ_FLAG_UCODE_LARGE),
|
||||
SET_FLOAT(oCollisionDistance, 4000),
|
||||
CALL(bhvSunkenShipSetRotation),
|
||||
BEGIN_LOOP(),
|
||||
@@ -3152,7 +3154,7 @@ UNUSED static const BehaviorScript unused_1[] = {
|
||||
|
||||
const BehaviorScript bhvStaticObject[] = {
|
||||
BEGIN(OBJ_LIST_DEFAULT),
|
||||
OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),
|
||||
OR_LONG(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE | OBJ_FLAG_UCODE_LARGE),
|
||||
BREAK(),
|
||||
};
|
||||
|
||||
@@ -3611,7 +3613,7 @@ const BehaviorScript bhvRandomAnimatedTexture[] = {
|
||||
|
||||
const BehaviorScript bhvYellowBackgroundInMenu[] = {
|
||||
BEGIN(OBJ_LIST_LEVEL),
|
||||
OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),
|
||||
OR_LONG(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE | OBJ_FLAG_UCODE_LARGE),
|
||||
CALL_NATIVE(beh_yellow_background_menu_init),
|
||||
BEGIN_LOOP(),
|
||||
SET_INT(oIntangibleTimer, 0),
|
||||
@@ -3631,7 +3633,7 @@ const BehaviorScript bhvMenuButton[] = {
|
||||
|
||||
const BehaviorScript bhvMenuButtonManager[] = {
|
||||
BEGIN(OBJ_LIST_LEVEL),
|
||||
OR_INT(oFlags, (OBJ_FLAG_SET_THROW_MATRIX_FROM_TRANSFORM | OBJ_FLAG_UPDATE_TRANSFORM_FOR_THROW_MATRIX | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
|
||||
OR_LONG(oFlags, (OBJ_FLAG_SET_THROW_MATRIX_FROM_TRANSFORM | OBJ_FLAG_UPDATE_TRANSFORM_FOR_THROW_MATRIX | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE | OBJ_FLAG_UCODE_LARGE)),
|
||||
CALL_NATIVE(bhv_menu_button_manager_init),
|
||||
BEGIN_LOOP(),
|
||||
SET_INT(oIntangibleTimer, 0),
|
||||
@@ -4244,7 +4246,7 @@ const BehaviorScript bhvLllDrawbridge[] = {
|
||||
|
||||
const BehaviorScript bhvSmallBomp[] = {
|
||||
BEGIN(OBJ_LIST_SURFACE),
|
||||
OR_INT(oFlags, (OBJ_FLAG_MOVE_XZ_USING_FVEL | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
|
||||
OR_LONG(oFlags, (OBJ_FLAG_MOVE_XZ_USING_FVEL | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE | OBJ_FLAG_UCODE_LARGE)),
|
||||
LOAD_COLLISION_DATA(wf_seg7_collision_small_bomp),
|
||||
CALL_NATIVE(bhv_small_bomp_init),
|
||||
BEGIN_LOOP(),
|
||||
@@ -4255,7 +4257,7 @@ const BehaviorScript bhvSmallBomp[] = {
|
||||
|
||||
const BehaviorScript bhvLargeBomp[] = {
|
||||
BEGIN(OBJ_LIST_SURFACE),
|
||||
OR_INT(oFlags, (OBJ_FLAG_MOVE_XZ_USING_FVEL | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
|
||||
OR_LONG(oFlags, (OBJ_FLAG_MOVE_XZ_USING_FVEL | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE | OBJ_FLAG_UCODE_LARGE)),
|
||||
LOAD_COLLISION_DATA(wf_seg7_collision_large_bomp),
|
||||
CALL_NATIVE(bhv_large_bomp_init),
|
||||
BEGIN_LOOP(),
|
||||
@@ -4365,7 +4367,7 @@ const BehaviorScript bhvThiBowlingBallSpawner[] = {
|
||||
|
||||
const BehaviorScript bhvRrCruiserWing[] = {
|
||||
BEGIN(OBJ_LIST_DEFAULT),
|
||||
OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),
|
||||
OR_LONG(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE | OBJ_FLAG_UCODE_LARGE),
|
||||
CALL_NATIVE(bhv_rr_cruiser_wing_init),
|
||||
BEGIN_LOOP(),
|
||||
CALL_NATIVE(bhv_rr_cruiser_wing_loop),
|
||||
@@ -4396,7 +4398,7 @@ const BehaviorScript bhvSslMovingPyramidWall[] = {
|
||||
|
||||
const BehaviorScript bhvPyramidElevator[] = {
|
||||
BEGIN(OBJ_LIST_SURFACE),
|
||||
OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),
|
||||
OR_LONG(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE | OBJ_FLAG_UCODE_LARGE),
|
||||
LOAD_COLLISION_DATA(ssl_seg7_collision_pyramid_elevator),
|
||||
SET_HOME(),
|
||||
SET_FLOAT(oCollisionDistance, 20000),
|
||||
@@ -4418,7 +4420,7 @@ const BehaviorScript bhvPyramidElevatorTrajectoryMarkerBall[] = {
|
||||
|
||||
const BehaviorScript bhvPyramidTop[] = {
|
||||
BEGIN(OBJ_LIST_SURFACE),
|
||||
OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),
|
||||
OR_LONG(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE | OBJ_FLAG_UCODE_LARGE),
|
||||
LOAD_COLLISION_DATA(ssl_seg7_collision_pyramid_top),
|
||||
SET_HOME(),
|
||||
SET_FLOAT(oCollisionDistance, 20000),
|
||||
@@ -5390,7 +5392,7 @@ const BehaviorScript bhvTrackBall[] = {
|
||||
|
||||
const BehaviorScript bhvSeesawPlatform[] = {
|
||||
BEGIN(OBJ_LIST_SURFACE),
|
||||
OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
|
||||
OR_LONG(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE | OBJ_FLAG_UCODE_LARGE)),
|
||||
CALL_NATIVE(bhv_seesaw_platform_init),
|
||||
BEGIN_LOOP(),
|
||||
CALL_NATIVE(bhv_seesaw_platform_update),
|
||||
@@ -5429,7 +5431,7 @@ const BehaviorScript bhvWaterBombSpawner[] = {
|
||||
|
||||
const BehaviorScript bhvWaterBomb[] = {
|
||||
BEGIN(OBJ_LIST_GENACTOR),
|
||||
OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
|
||||
OR_LONG(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE | OBJ_FLAG_UCODE_LARGE)),
|
||||
SET_OBJ_PHYSICS(/*Wall hitbox radius*/ 120, /*Gravity*/ -400, /*Bounciness*/ 0, /*Drag strength*/ 1000, /*Friction*/ 1000, /*Buoyancy*/ 200, /*Unused*/ 0, 0),
|
||||
BEGIN_LOOP(),
|
||||
CALL_NATIVE(bhv_water_bomb_update),
|
||||
@@ -5461,7 +5463,7 @@ const BehaviorScript bhvTTCRotatingSolid[] = {
|
||||
const BehaviorScript bhvTTCPendulum[] = {
|
||||
BEGIN(OBJ_LIST_SURFACE),
|
||||
LOAD_COLLISION_DATA(ttc_seg7_collision_clock_pendulum),
|
||||
OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
|
||||
OR_LONG(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE | OBJ_FLAG_UCODE_LARGE)),
|
||||
SET_FLOAT(oCollisionDistance, 1500),
|
||||
CALL_NATIVE(bhv_ttc_pendulum_init),
|
||||
SET_FLOAT(oTTCPendulumAccelDir, 1),
|
||||
@@ -5474,9 +5476,9 @@ const BehaviorScript bhvTTCPendulum[] = {
|
||||
const BehaviorScript bhvTTCTreadmill[] = {
|
||||
BEGIN(OBJ_LIST_SURFACE),
|
||||
#ifdef PLATFORM_DISPLACEMENT_2
|
||||
OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE | OBJ_FLAG_VELOCITY_PLATFORM)),
|
||||
OR_LONG(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE | OBJ_FLAG_VELOCITY_PLATFORM | OBJ_FLAG_UCODE_LARGE)),
|
||||
#else
|
||||
OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
|
||||
OR_LONG(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE | OBJ_FLAG_UCODE_LARGE)),
|
||||
#endif
|
||||
SET_FLOAT(oCollisionDistance, 750),
|
||||
CALL_NATIVE(bhv_ttc_treadmill_init),
|
||||
@@ -5624,7 +5626,7 @@ const BehaviorScript bhvAnimatesOnFloorSwitchPress[] = {
|
||||
|
||||
const BehaviorScript bhvActivatedBackAndForthPlatform[] = {
|
||||
BEGIN(OBJ_LIST_SURFACE),
|
||||
OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
|
||||
OR_LONG(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE | OBJ_FLAG_UCODE_LARGE)),
|
||||
SET_HOME(),
|
||||
CALL_NATIVE(bhv_activated_back_and_forth_platform_init),
|
||||
BEGIN_LOOP(),
|
||||
|
||||
@@ -46,6 +46,7 @@
|
||||
#define OBJ_FLAG_VELOCITY_PLATFORM (1 << 15) // 0x00008000
|
||||
#define OBJ_FLAG_DONT_CALC_COLL_DIST (1 << 16) // 0x00010000
|
||||
#define OBJ_FLAG_EMIT_LIGHT (1 << 17) // 0x00020000
|
||||
#define OBJ_FLAG_UCODE_LARGE (1 << 18) // 0x00040000
|
||||
#define OBJ_FLAG_HITBOX_WAS_SET (1 << 30) // 0x40000000
|
||||
|
||||
/* oHeldState */
|
||||
|
||||
@@ -146,6 +146,7 @@ struct GraphNodeObject
|
||||
/*0x4C*/ struct SpawnInfo *unk4C;
|
||||
/*0x50*/ Mat4 *throwMatrix; // matrix ptr
|
||||
/*0x54*/ Vec3f cameraToObject;
|
||||
u8 uCode;
|
||||
};
|
||||
|
||||
struct ObjectNode
|
||||
|
||||
106
lib/rsp.s
106
lib/rsp.s
@@ -22,27 +22,42 @@ glabel gspFast3D_fifoTextEnd
|
||||
#endif
|
||||
|
||||
#else /* Use one of the Fast3DEX series grucodes. */
|
||||
#ifndef F3DZEX_GBI_2
|
||||
#if F3DEX2PL_GBI == 1
|
||||
glabel gspF3DEX2_PosLight_fifoTextStart
|
||||
.incbin "lib/PR/f3dex2pl/F3DEX2_PosLight.bin"
|
||||
glabel gspF3DEX2_PosLight_fifoTextEnd
|
||||
#elif F3DEX_GBI_2 == 1
|
||||
glabel gspF3DEX2_fifoTextStart
|
||||
.incbin "lib/PR/f3dex2/F3DEX2.bin"
|
||||
glabel gspF3DEX2_fifoTextEnd
|
||||
#elif F3DEX_GBI == 1
|
||||
glabel gspF3DEX_fifoTextStart
|
||||
.incbin "lib/PR/f3dex/F3DEX.bin"
|
||||
glabel gspF3DEX_fifoTextEnd
|
||||
#endif
|
||||
#else /* Fast3DZEX */
|
||||
glabel gspF3DZEX2_PosLight_fifoTextStart
|
||||
.incbin "lib/PR/f3dzex/F3DZEX.bin"
|
||||
glabel gspF3DZEX2_PosLight_fifoTextEnd
|
||||
#endif
|
||||
#endif
|
||||
|
||||
.balign 16
|
||||
glabel gspF3DEX2_fifoTextStart
|
||||
.incbin "lib/PR/f3dex2/F3DEX2.bin"
|
||||
glabel gspF3DEX2_fifoTextEnd
|
||||
|
||||
.balign 16
|
||||
glabel gspF3DZEX2_PosLight_fifoTextStart
|
||||
.incbin "lib/PR/f3dzex/F3DZEX.bin"
|
||||
glabel gspF3DZEX2_PosLight_fifoTextEnd
|
||||
|
||||
.balign 16
|
||||
glabel gspF3DLX2_Rej_fifoTextStart
|
||||
.incbin "lib/PR/f3dex2/F3DLX2_Rej.bin"
|
||||
glabel gspF3DLX2_Rej_fifoTextEnd
|
||||
|
||||
.balign 16
|
||||
glabel gspS2DEX2_fifoTextStart
|
||||
.incbin "lib/PR/s2dex2/S2DEX2.bin"
|
||||
glabel gspS2DEX2_fifoTextEnd
|
||||
|
||||
.balign 16
|
||||
glabel gspL3DZEX2_PosLight_fifoTextStart
|
||||
.incbin "lib/PR/f3dzex/L3DZEX.bin"
|
||||
glabel gspL3DZEX2_PosLight_fifoTextEnd
|
||||
|
||||
/* Audio Bins */
|
||||
|
||||
/*
|
||||
@@ -145,22 +160,6 @@ glabel gspL3DEX2_fifoTextStart
|
||||
glabel gspL3DEX2_fifoTextEnd
|
||||
#endif
|
||||
|
||||
/* Line3DZEX Text */
|
||||
#ifdef L3DZEX_GBI
|
||||
.balign 16
|
||||
glabel gspL3DZEX2_PosLight_fifoTextStart
|
||||
.incbin "lib/PR/f3dzex/L3DZEX.bin"
|
||||
glabel gspL3DZEX2_PosLight_fifoTextEnd
|
||||
#endif
|
||||
|
||||
/* S2DEX2 Text */
|
||||
#ifdef S2DEX_GBI_2
|
||||
.balign 16
|
||||
glabel gspS2DEX2_fifoTextStart
|
||||
.incbin "lib/PR/s2dex2/S2DEX2.bin"
|
||||
glabel gspS2DEX2_fifoTextEnd
|
||||
#endif
|
||||
|
||||
/* DATA SECTION START */
|
||||
|
||||
.section .rodata
|
||||
@@ -171,34 +170,49 @@ glabel gspS2DEX2_fifoTextEnd
|
||||
glabel gspSuper3D_fifoDataStart
|
||||
.incbin "lib/PR/super3d/Super3D_data.bin"
|
||||
glabel gspSuper3D_fifoDataEnd
|
||||
#else
|
||||
#else
|
||||
glabel gspFast3D_fifoDataStart
|
||||
.incbin "rsp/fast3d_data.bin"
|
||||
glabel gspFast3D_fifoDataEnd
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#else /* Using one of the Fast3DEX series grucodes */
|
||||
#ifndef F3DZEX_GBI_2
|
||||
#if F3DEX2PL_GBI == 1
|
||||
glabel gspF3DEX2_PosLight_fifoDataStart
|
||||
.incbin "lib/PR/f3dex2pl/F3DEX2_PosLight_data.bin"
|
||||
glabel gspF3DEX2_PosLight_fifoDataEnd
|
||||
#elif F3DEX_GBI_2 == 1
|
||||
glabel gspF3DEX2_fifoDataStart
|
||||
.incbin "lib/PR/f3dex2/F3DEX2_data.bin"
|
||||
glabel gspF3DEX2_fifoDataEnd
|
||||
#elif F3DEX_GBI == 1
|
||||
glabel gspF3DEX_fifoDataStart
|
||||
.incbin "lib/PR/f3dex/F3DEX_data.bin"
|
||||
glabel gspF3DEX_fifoDataEnd
|
||||
#endif
|
||||
#else /* Fast3DZEX */
|
||||
glabel gspF3DZEX2_PosLight_fifoDataStart
|
||||
.incbin "lib/PR/f3dzex/F3DZEX_data.bin"
|
||||
glabel gspF3DZEX2_PosLight_fifoDataEnd
|
||||
#endif
|
||||
#endif
|
||||
|
||||
.balign 16
|
||||
glabel gspF3DEX2_fifoDataStart
|
||||
.incbin "lib/PR/f3dex2/F3DEX2_data.bin"
|
||||
glabel gspF3DEX2_fifoDataEnd
|
||||
|
||||
.balign 16
|
||||
glabel gspF3DZEX2_PosLight_fifoDataStart
|
||||
.incbin "lib/PR/f3dzex/F3DZEX_data.bin"
|
||||
glabel gspF3DZEX2_PosLight_fifoDataEnd
|
||||
|
||||
.balign 16
|
||||
glabel gspF3DLX2_Rej_fifoDataStart
|
||||
.incbin "lib/PR/f3dex2/F3DLX2_Rej_data.bin"
|
||||
glabel gspF3DLX2_Rej_fifoDataEnd
|
||||
|
||||
.balign 16
|
||||
glabel gspS2DEX_fifoDataStart
|
||||
.incbin "lib/PR/s2dex/S2DEX_data.bin"
|
||||
glabel gspS2DEX_fifoDataEnd
|
||||
|
||||
.balign 16
|
||||
glabel gspS2DEX2_fifoDataStart
|
||||
.incbin "lib/PR/s2dex2/S2DEX2_data.bin"
|
||||
glabel gspS2DEX2_fifoDataEnd
|
||||
|
||||
/* Audio Data */
|
||||
|
||||
.balign 16
|
||||
@@ -254,14 +268,6 @@ glabel gspL3DEX_fifoDataStart
|
||||
glabel gspL3DEX_fifoDataEnd
|
||||
#endif
|
||||
|
||||
/* S2DEX Data */
|
||||
#ifdef S2DEX_GBI
|
||||
.balign 16
|
||||
glabel gspS2DEX_fifoDataStart
|
||||
.incbin "lib/PR/s2dex/S2DEX_data.bin"
|
||||
glabel gspS2DEX_fifoDataEnd
|
||||
#endif
|
||||
|
||||
/* Fast3DEX2 Series */
|
||||
|
||||
/* Fast3DEX2 NoN Data */
|
||||
@@ -303,11 +309,3 @@ glabel gspL3DZEX2_PosLight_fifoDataStart
|
||||
.incbin "lib/PR/f3dzex/L3DZEX_data.bin"
|
||||
glabel gspL3DZEX2_PosLight_fifoDataEnd
|
||||
#endif
|
||||
|
||||
/* S2DEX2 Data */
|
||||
#ifdef S2DEX_GBI_2
|
||||
.balign 16
|
||||
glabel gspS2DEX2_fifoDataStart
|
||||
.incbin "lib/PR/s2dex2/S2DEX2_data.bin"
|
||||
glabel gspS2DEX2_fifoDataEnd
|
||||
#endif
|
||||
|
||||
@@ -905,7 +905,7 @@ static BhvCommandProc BehaviorCmdTable[] = {
|
||||
|
||||
// Execute the behavior script of the current object, process the object flags, and other miscellaneous code for updating objects.
|
||||
void cur_obj_update(void) {
|
||||
s32 objFlags = gCurrentObject->oFlags;
|
||||
u32 objFlags = gCurrentObject->oFlags;
|
||||
f32 distanceFromMario;
|
||||
BhvCommandProc bhvCmdProc;
|
||||
s32 bhvProcResult;
|
||||
@@ -981,6 +981,12 @@ void cur_obj_update(void) {
|
||||
obj_update_gfx_pos_and_angle(gCurrentObject);
|
||||
}
|
||||
|
||||
|
||||
if (objFlags & OBJ_FLAG_UCODE_LARGE)
|
||||
gCurrentObject->header.gfx.uCode = UCODE_DEFAULT;
|
||||
else
|
||||
gCurrentObject->header.gfx.uCode = UCODE_REJ;
|
||||
|
||||
#ifdef PUPPYLIGHTS
|
||||
puppylights_object_emit(gCurrentObject);
|
||||
#endif
|
||||
|
||||
@@ -7,6 +7,9 @@
|
||||
#include "types.h"
|
||||
#include "game/memory.h"
|
||||
|
||||
#define UCODE_DEFAULT 0
|
||||
#define UCODE_REJ 1
|
||||
|
||||
#define GRAPH_RENDER_ACTIVE (1 << 0)
|
||||
#define GRAPH_RENDER_CHILDREN_FIRST (1 << 1)
|
||||
#define GRAPH_RENDER_BILLBOARD (1 << 2)
|
||||
@@ -126,8 +129,8 @@ struct DisplayListNode
|
||||
struct GraphNodeMasterList
|
||||
{
|
||||
/*0x00*/ struct GraphNode node;
|
||||
/*0x14*/ struct DisplayListNode *listHeads[GFX_NUM_MASTER_LISTS];
|
||||
/*0x34*/ struct DisplayListNode *listTails[GFX_NUM_MASTER_LISTS];
|
||||
/*0x14*/ struct DisplayListNode *listHeads[2][GFX_NUM_MASTER_LISTS];
|
||||
/*0x34*/ struct DisplayListNode *listTails[2][GFX_NUM_MASTER_LISTS];
|
||||
};
|
||||
|
||||
/** Simply used as a parent to group multiple children.
|
||||
|
||||
@@ -963,7 +963,7 @@ struct LevelCommand *level_script_execute(struct LevelCommand *cmd) {
|
||||
}
|
||||
|
||||
profiler_log_thread5_time(LEVEL_SCRIPT_EXECUTE);
|
||||
init_rcp();
|
||||
init_rcp(CLEAR_ZBUFFER);
|
||||
render_game();
|
||||
end_master_display_list();
|
||||
alloc_display_list(0);
|
||||
|
||||
@@ -111,9 +111,8 @@ void crash_screen_print(s32 x, s32 y, const char *fmt, ...) {
|
||||
u32 glyph;
|
||||
s32 size;
|
||||
char buf[0x108];
|
||||
UNUSED s32 i = 0;
|
||||
|
||||
memset(buf, 0, sizeof(buf));
|
||||
bzero(&buf ,sizeof(buf));
|
||||
|
||||
va_list args;
|
||||
va_start(args, fmt);
|
||||
|
||||
@@ -125,9 +125,7 @@ void init_rdp(void) {
|
||||
gDPSetColorDither(gDisplayListHead++, G_CD_MAGICSQ);
|
||||
gDPSetCycleType(gDisplayListHead++, G_CYC_FILL);
|
||||
|
||||
#ifdef VERSION_SH
|
||||
gDPSetAlphaDither(gDisplayListHead++, G_AD_PATTERN);
|
||||
#endif
|
||||
gDPPipeSync(gDisplayListHead++);
|
||||
}
|
||||
|
||||
@@ -135,6 +133,7 @@ void init_rdp(void) {
|
||||
* Sets the initial RSP (Reality Signal Processor) settings.
|
||||
*/
|
||||
void init_rsp(void) {
|
||||
|
||||
gSPClearGeometryMode(gDisplayListHead++, G_SHADE | G_SHADING_SMOOTH | G_CULL_BOTH | G_FOG
|
||||
| G_LIGHTING | G_TEXTURE_GEN | G_TEXTURE_GEN_LINEAR | G_LOD);
|
||||
|
||||
@@ -153,13 +152,15 @@ void init_rsp(void) {
|
||||
/**
|
||||
* Initialize the z buffer for the current frame.
|
||||
*/
|
||||
void init_z_buffer(void) {
|
||||
void init_z_buffer(s32 resetZB) {
|
||||
gDPPipeSync(gDisplayListHead++);
|
||||
|
||||
gDPSetDepthSource(gDisplayListHead++, G_ZS_PIXEL);
|
||||
gDPSetDepthImage(gDisplayListHead++, gPhysicalZBuffer);
|
||||
|
||||
gDPSetColorImage(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, SCREEN_WIDTH, gPhysicalZBuffer);
|
||||
if (!resetZB)
|
||||
return;
|
||||
gDPSetFillColor(gDisplayListHead++,
|
||||
GPACK_ZDZ(G_MAXFBZ, 0) << 16 | GPACK_ZDZ(G_MAXFBZ, 0));
|
||||
|
||||
@@ -273,7 +274,7 @@ void create_gfx_task_structure(void) {
|
||||
gGfxSPTask->task.t.type = M_GFXTASK;
|
||||
gGfxSPTask->task.t.ucode_boot = rspbootTextStart;
|
||||
gGfxSPTask->task.t.ucode_boot_size = ((u8 *) rspbootTextEnd - (u8 *) rspbootTextStart);
|
||||
gGfxSPTask->task.t.flags = 0;
|
||||
gGfxSPTask->task.t.flags = OS_TASK_LOADABLE | OS_TASK_DP_WAIT;
|
||||
#ifdef L3DEX2_ALONE
|
||||
gGfxSPTask->task.t.ucode = gspL3DEX2_fifoTextStart;
|
||||
gGfxSPTask->task.t.ucode_data = gspL3DEX2_fifoDataStart;
|
||||
@@ -312,11 +313,11 @@ void create_gfx_task_structure(void) {
|
||||
/**
|
||||
* Set default RCP (Reality Co-Processor) settings.
|
||||
*/
|
||||
void init_rcp(void) {
|
||||
void init_rcp(s32 resetZB) {
|
||||
move_segment_table_to_dmem();
|
||||
init_rdp();
|
||||
init_rsp();
|
||||
init_z_buffer();
|
||||
init_z_buffer(resetZB);
|
||||
select_frame_buffer();
|
||||
}
|
||||
|
||||
@@ -381,7 +382,7 @@ void render_init(void) {
|
||||
gGfxSPTask = &gGfxPool->spTask;
|
||||
gDisplayListHead = gGfxPool->buffer;
|
||||
gGfxPoolEnd = (u8 *)(gGfxPool->buffer + GFX_POOL_SIZE);
|
||||
init_rcp();
|
||||
init_rcp(CLEAR_ZBUFFER);
|
||||
clear_frame_buffer(0);
|
||||
end_master_display_list();
|
||||
exec_display_list(&gGfxPool->spTask);
|
||||
|
||||
@@ -24,6 +24,11 @@ struct DemoInput
|
||||
u8 buttonMask;
|
||||
};
|
||||
|
||||
enum ZBmodes {
|
||||
KEEP_ZBUFFER = 0,
|
||||
CLEAR_ZBUFFER = 1,
|
||||
};
|
||||
|
||||
extern struct Controller gControllers[3];
|
||||
extern OSContStatus gControllerStatuses[4];
|
||||
extern OSContPad gControllerPads[4];
|
||||
@@ -79,7 +84,7 @@ void thread5_game_loop(UNUSED void *arg);
|
||||
void clear_frame_buffer(s32 color);
|
||||
void clear_viewport(Vp *viewport, s32 color);
|
||||
void make_viewport_clip_rect(Vp *viewport);
|
||||
void init_rcp(void);
|
||||
void init_rcp(s32 resetZB);
|
||||
void end_master_display_list(void);
|
||||
void render_init(void);
|
||||
void select_gfx_pool(void);
|
||||
|
||||
@@ -137,16 +137,54 @@ u16 gAreaUpdateCounter = 0;
|
||||
LookAt lookAt;
|
||||
#endif
|
||||
|
||||
u8 ucodeTestSwitch = 1;
|
||||
|
||||
/**
|
||||
* Process a master list node.
|
||||
* Process a master list node. This has been modified, so now it runs twice, for each microcode.
|
||||
It iterates through the first 5 layers of if the first index using F3DLX2.Rej, then it switches
|
||||
to F3DZEX and iterates through all layers, then switches back to F3DLX2.Rej and finishes the last
|
||||
3. It does this, because layers 5-7 are non zbuffered, and just doing 0-7 of ZEX, then 0-7 of REJ
|
||||
would make the ZEX 0-4 render on top of Rej's 5-7.
|
||||
*/
|
||||
static void geo_process_master_list_sub(struct GraphNodeMasterList *node) {
|
||||
struct DisplayListNode *currList;
|
||||
s32 i;
|
||||
s32 i = 0;
|
||||
s32 j = 1;
|
||||
s32 renderPhase = 0;
|
||||
s32 enableZBuffer = (node->node.flags & GRAPH_RENDER_Z_BUFFER) != 0;
|
||||
struct RenderModeContainer *modeList = &renderModeTable_1Cycle[enableZBuffer];
|
||||
struct RenderModeContainer *mode2List = &renderModeTable_2Cycle[enableZBuffer];
|
||||
|
||||
if (enableZBuffer != 0)
|
||||
{
|
||||
gDPPipeSync(gDisplayListHead++);
|
||||
gSPSetGeometryMode(gDisplayListHead++, G_ZBUFFER);
|
||||
}
|
||||
//if (gPlayer1Controller->buttonPressed & L_TRIG)
|
||||
// ucodeTestSwitch ^= 1;
|
||||
//print_text_fmt_int(32,32,"%d",ucodeTestSwitch);
|
||||
#ifdef F3DZEX_GBI_2
|
||||
loopBegin:
|
||||
//Load rejection on pass 2. ZEX is loaded afterwards.
|
||||
if (renderPhase == 0 || renderPhase == 2)
|
||||
{
|
||||
gSPLoadUcodeL(gDisplayListHead++, gspF3DLX2_Rej_fifo);
|
||||
init_rcp(KEEP_ZBUFFER);
|
||||
gSPClipRatio(gDisplayListHead++, FRUSTRATIO_2);
|
||||
}
|
||||
else
|
||||
if (renderPhase == 1)
|
||||
{
|
||||
gSPLoadUcodeL(gDisplayListHead++, gspF3DZEX2_PosLight_fifo);
|
||||
init_rcp(KEEP_ZBUFFER);
|
||||
gSPClipRatio(gDisplayListHead++, FRUSTRATIO_1);
|
||||
}
|
||||
if (enableZBuffer != 0)
|
||||
{
|
||||
gDPPipeSync(gDisplayListHead++);
|
||||
gSPSetGeometryMode(gDisplayListHead++, G_ZBUFFER);
|
||||
}
|
||||
#endif
|
||||
// @bug This is where the LookAt values should be calculated but aren't.
|
||||
// As a result, environment mapping is broken on Fast3DEX2 without the
|
||||
// changes below.
|
||||
@@ -154,24 +192,35 @@ static void geo_process_master_list_sub(struct GraphNodeMasterList *node) {
|
||||
Mtx lMtx;
|
||||
guLookAtReflect(&lMtx, &lookAt, 0, 0, 0, /* eye */ 0, 0, 1, /* at */ 1, 0, 0 /* up */);
|
||||
#endif
|
||||
|
||||
if (enableZBuffer != 0) {
|
||||
gDPPipeSync(gDisplayListHead++);
|
||||
gSPSetGeometryMode(gDisplayListHead++, G_ZBUFFER);
|
||||
}
|
||||
|
||||
for (i = 0; i < GFX_NUM_MASTER_LISTS; i++) {
|
||||
if ((currList = node->listHeads[i]) != NULL) {
|
||||
for (; i < GFX_NUM_MASTER_LISTS; i++)
|
||||
{
|
||||
#ifdef F3DZEX_GBI_2
|
||||
if (i == 5 && renderPhase == 0)
|
||||
break;
|
||||
#endif
|
||||
if ((currList = node->listHeads[j][i]) != NULL)
|
||||
{
|
||||
gDPSetRenderMode(gDisplayListHead++, modeList->modes[i], mode2List->modes[i]);
|
||||
while (currList != NULL) {
|
||||
gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(currList->transform),
|
||||
G_MTX_MODELVIEW | G_MTX_LOAD | G_MTX_NOPUSH);
|
||||
while (currList != NULL)
|
||||
{
|
||||
gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(currList->transform), G_MTX_MODELVIEW | G_MTX_LOAD | G_MTX_NOPUSH);
|
||||
gSPDisplayList(gDisplayListHead++, currList->displayList);
|
||||
currList = currList->next;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (enableZBuffer != 0) {
|
||||
#ifdef F3DZEX_GBI_2
|
||||
switch (renderPhase)
|
||||
{
|
||||
case 0: renderPhase++; j = 0; i = 0; goto loopBegin;
|
||||
case 1: renderPhase++; j = 1; i = 5; goto loopBegin;
|
||||
}
|
||||
gSPLoadUcodeL(gDisplayListHead++, gspF3DZEX2_PosLight_fifo);
|
||||
init_rcp(KEEP_ZBUFFER);
|
||||
gSPClipRatio(gDisplayListHead++, FRUSTRATIO_1);
|
||||
#endif
|
||||
if (enableZBuffer != 0)
|
||||
{
|
||||
gDPPipeSync(gDisplayListHead++);
|
||||
gSPClearGeometryMode(gDisplayListHead++, G_ZBUFFER);
|
||||
}
|
||||
@@ -182,24 +231,35 @@ static void geo_process_master_list_sub(struct GraphNodeMasterList *node) {
|
||||
* parameter. Look at the RenderModeContainer struct to see the corresponding
|
||||
* render modes of layers.
|
||||
*/
|
||||
static void geo_append_display_list(void *displayList, s16 layer) {
|
||||
|
||||
static void geo_append_display_list(void *displayList, s32 layer)
|
||||
{
|
||||
s32 index = 0;
|
||||
#ifdef F3DEX_GBI_2
|
||||
gSPLookAt(gDisplayListHead++, &lookAt);
|
||||
#endif
|
||||
if (gCurGraphNodeMasterList != 0) {
|
||||
struct DisplayListNode *listNode =
|
||||
alloc_only_pool_alloc(gDisplayListHeap, sizeof(struct DisplayListNode));
|
||||
#ifdef F3DZEX_GBI_2
|
||||
if (gCurGraphNodeObject != NULL)
|
||||
{
|
||||
if (gCurGraphNodeObject->uCode == UCODE_REJ && ucodeTestSwitch)
|
||||
index = 1;
|
||||
}
|
||||
#endif
|
||||
if (gCurGraphNodeMasterList != 0)
|
||||
{
|
||||
struct DisplayListNode *listNode = alloc_only_pool_alloc(gDisplayListHeap, sizeof(struct DisplayListNode));
|
||||
|
||||
listNode->transform = gMatStackFixed[gMatStackIndex];
|
||||
listNode->displayList = displayList;
|
||||
listNode->next = 0;
|
||||
if (gCurGraphNodeMasterList->listHeads[layer] == 0) {
|
||||
gCurGraphNodeMasterList->listHeads[layer] = listNode;
|
||||
} else {
|
||||
gCurGraphNodeMasterList->listTails[layer]->next = listNode;
|
||||
if (gCurGraphNodeMasterList->listHeads[index][layer] == 0)
|
||||
{
|
||||
gCurGraphNodeMasterList->listHeads[index][layer] = listNode;
|
||||
}
|
||||
gCurGraphNodeMasterList->listTails[layer] = listNode;
|
||||
else
|
||||
{
|
||||
gCurGraphNodeMasterList->listTails[index][layer]->next = listNode;
|
||||
}
|
||||
gCurGraphNodeMasterList->listTails[index][layer] = listNode;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -209,13 +269,16 @@ static void geo_append_display_list(void *displayList, s16 layer) {
|
||||
static void geo_process_master_list(struct GraphNodeMasterList *node) {
|
||||
s32 i;
|
||||
|
||||
if (gCurGraphNodeMasterList == NULL && node->node.children != NULL) {
|
||||
if (gCurGraphNodeMasterList == NULL && node->node.children != NULL)
|
||||
{
|
||||
gCurGraphNodeMasterList = node;
|
||||
for (i = 0; i < GFX_NUM_MASTER_LISTS; i++) {
|
||||
node->listHeads[i] = NULL;
|
||||
for (i = 0; i < GFX_NUM_MASTER_LISTS; i++)
|
||||
{
|
||||
node->listHeads[0][i] = NULL;
|
||||
node->listHeads[1][i] = NULL;
|
||||
}
|
||||
geo_process_node_and_siblings(node->node.children);
|
||||
geo_process_master_list_sub(node);
|
||||
geo_process_master_list_sub(gCurGraphNodeMasterList);
|
||||
gCurGraphNodeMasterList = NULL;
|
||||
}
|
||||
}
|
||||
@@ -772,8 +835,8 @@ static void geo_process_shadow(struct GraphNodeShadow *node) {
|
||||
* Since (0,0,0) is unaffected by rotation, columns 0, 1 and 2 are ignored.
|
||||
*/
|
||||
static s32 obj_is_in_view(struct GraphNodeObject *node, Mat4 matrix) {
|
||||
s16 cullingRadius;
|
||||
s16 halfFov; // half of the fov in in-game angle units instead of degrees
|
||||
s32 cullingRadius;
|
||||
s32 halfFov; // half of the fov in in-game angle units instead of degrees
|
||||
struct GraphNode *geo;
|
||||
f32 hScreenEdge;
|
||||
|
||||
|
||||
@@ -286,6 +286,7 @@ struct Object *allocate_object(struct ObjectNode *objList) {
|
||||
obj->header.gfx.pos[1] = -10000.0f;
|
||||
obj->header.gfx.pos[2] = -10000.0f;
|
||||
obj->header.gfx.throwMatrix = NULL;
|
||||
obj->header.gfx.uCode = UCODE_REJ;
|
||||
#ifdef PUPPYLIGHTS
|
||||
obj->oLightID = 0xFFFF;
|
||||
#endif
|
||||
|
||||
@@ -510,11 +510,11 @@ static Gfx gd_dl_sparkle[] = {
|
||||
gsSPClearGeometryMode(G_TEXTURE_GEN | G_TEXTURE_GEN_LINEAR),
|
||||
gsDPSetRenderMode(G_RM_AA_ZB_TEX_EDGE, G_RM_NOOP2),
|
||||
gsSPTexture(0x8000, 0x8000, 0, G_TX_RENDERTILE, G_ON),
|
||||
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD,
|
||||
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD,
|
||||
G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),
|
||||
gsDPLoadSync(),
|
||||
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
|
||||
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD,
|
||||
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD,
|
||||
G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),
|
||||
gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),
|
||||
gsSPVertex(gd_vertex_sparkle, 4, 0),
|
||||
@@ -663,7 +663,7 @@ static Gfx gd_dl_mario_face_shine[] = {
|
||||
gsDPSetTexturePersp(G_TP_PERSP),
|
||||
gsDPSetTextureFilter(G_TF_BILERP),
|
||||
gsDPSetCombineMode(G_CC_HILITERGBA, G_CC_HILITERGBA),
|
||||
gsDPLoadTextureBlock(gd_texture_mario_face_shine, G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, 0,
|
||||
gsDPLoadTextureBlock(gd_texture_mario_face_shine, G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, 0,
|
||||
G_TX_WRAP | G_TX_NOMIRROR, G_TX_WRAP | G_TX_NOMIRROR, 5, 5, G_TX_NOLOD, G_TX_NOLOD),
|
||||
gsDPPipeSync(),
|
||||
gsSPEndDisplayList(),
|
||||
@@ -1192,7 +1192,7 @@ void print_gdm_stats(void) {
|
||||
|
||||
/* 24AC80 -> 24AD14; orig name: func_8019C4B0 */
|
||||
struct ObjView *make_view_withgrp(char *name, struct ObjGroup *grp) {
|
||||
struct ObjView *view = make_view(name, (VIEW_DRAW | VIEW_ALLOC_ZBUF | VIEW_MOVEMENT), 1, 0, 0, 320, 240, grp);
|
||||
struct ObjView *view = make_view(name, (VIEW_DRAW | VIEW_ALLOC_ZBUF | VIEW_MOVEMENT), 1, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT, grp);
|
||||
UNUSED struct ObjGroup *viewgrp = make_group(2, grp, view);
|
||||
|
||||
view->lights = gGdLightGroup;
|
||||
@@ -1270,7 +1270,7 @@ void gd_vblank(void) {
|
||||
}
|
||||
|
||||
/**
|
||||
* Copies the player1 controller data from p1cont to sGdContPads[0].
|
||||
* Copies the player1 controller data from p1cont to sGdContPads[0].
|
||||
*/
|
||||
void gd_copy_p1_contpad(OSContPad *p1cont) {
|
||||
u32 i; // 24
|
||||
@@ -1942,7 +1942,7 @@ Vtx *gd_dl_make_vertex(f32 x, f32 y, f32 z, f32 alpha) {
|
||||
/* 24E6C0 -> 24E724 */
|
||||
void func_8019FEF0(void) {
|
||||
sTriangleBufCount++;
|
||||
if (sVertexBufCount >= 12) {
|
||||
if (sVertexBufCount >= 30) {
|
||||
gd_dl_flush_vertices();
|
||||
func_801A0038();
|
||||
}
|
||||
@@ -2366,7 +2366,7 @@ void parse_p1_controller(void) {
|
||||
OSContPad *currInputs;
|
||||
OSContPad *prevInputs;
|
||||
|
||||
// Copy current inputs to previous
|
||||
// Copy current inputs to previous
|
||||
u8 *src = (u8 *) gdctrl;
|
||||
u8 *dest = (u8 *) gdctrl->prevFrame;
|
||||
for (i = 0; i < sizeof(struct GdControl); i++) {
|
||||
@@ -2891,7 +2891,7 @@ void Unknown801A4F58(void) {
|
||||
cbufOn = sScreenView->colourBufs[gGdFrameBufNum];
|
||||
zbuf = sScreenView->zbuf;
|
||||
|
||||
for (i = 0; i < (320 * 240); i++) { // L801A4FCC
|
||||
for (i = 0; i < (SCREEN_WIDTH * SCREEN_HEIGHT); i++) { // L801A4FCC
|
||||
colour = cbufOff[i];
|
||||
if (colour) {
|
||||
r = (s16)(colour >> 11 & 0x1F);
|
||||
@@ -3000,7 +3000,7 @@ void gd_init(void) {
|
||||
|
||||
sScreenView =
|
||||
make_view("screenview2", (VIEW_2_COL_BUF | VIEW_UNK_1000 | VIEW_COLOUR_BUF | VIEW_Z_BUF), 0, 0,
|
||||
0, 320, 240, NULL);
|
||||
0, SCREEN_WIDTH, SCREEN_HEIGHT, NULL);
|
||||
sScreenView->colour.r = 0.0f;
|
||||
sScreenView->colour.g = 0.0f;
|
||||
sScreenView->colour.b = 0.0f;
|
||||
@@ -3033,7 +3033,7 @@ void gd_init(void) {
|
||||
* functions from IRIS GL.
|
||||
* @param buf pointer to an array of 16-bit values
|
||||
* @param len maximum number of values to store
|
||||
*/
|
||||
*/
|
||||
void init_pick_buf(s16 *buf, s32 len) {
|
||||
buf[0] = 0;
|
||||
buf[1] = 0;
|
||||
@@ -3105,8 +3105,8 @@ void Unknown801A5C80(struct ObjGroup *parentGroup) {
|
||||
d_end_group("debugg");
|
||||
|
||||
debugGroup = (struct ObjGroup *) d_use_obj("debugg");
|
||||
make_view("debugview", (VIEW_2_COL_BUF | VIEW_ALLOC_ZBUF | VIEW_1_CYCLE | VIEW_DRAW), 2, 0, 0, 320,
|
||||
240, debugGroup);
|
||||
make_view("debugview", (VIEW_2_COL_BUF | VIEW_ALLOC_ZBUF | VIEW_1_CYCLE | VIEW_DRAW), 2, 0, 0, SCREEN_WIDTH,
|
||||
SCREEN_HEIGHT, debugGroup);
|
||||
|
||||
if (parentGroup != NULL) {
|
||||
addto_group(parentGroup, &debugGroup->header);
|
||||
@@ -3149,7 +3149,7 @@ void Unknown801A5D90(struct ObjGroup *arg0) {
|
||||
d_add_valproc(cvrt_val_to_kb);
|
||||
sp23C = TRUE;
|
||||
sp244 += 14;
|
||||
if (sp244 > 200) {
|
||||
if (sp244 > SCREEN_HEIGHT) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -3167,7 +3167,7 @@ void Unknown801A5D90(struct ObjGroup *arg0) {
|
||||
memview = make_view("memview",
|
||||
(VIEW_2_COL_BUF | VIEW_ALLOC_ZBUF | VIEW_UNK_2000 | VIEW_UNK_4000
|
||||
| VIEW_1_CYCLE | VIEW_DRAW),
|
||||
2, 0, 10, 320, 200, labelgrp);
|
||||
2, 0, 10, SCREEN_WIDTH, SCREEN_HEIGHT-40, labelgrp);
|
||||
memview->colour.r = 0.0f;
|
||||
memview->colour.g = 0.0f;
|
||||
memview->colour.b = 0.0f;
|
||||
@@ -3407,7 +3407,7 @@ void make_timer_gadgets(void) {
|
||||
timerg = (struct ObjGroup *) d_use_obj("timerg");
|
||||
timersview = make_view(
|
||||
"timersview", (VIEW_2_COL_BUF | VIEW_ALLOC_ZBUF | VIEW_1_CYCLE | VIEW_MOVEMENT | VIEW_DRAW), 2,
|
||||
0, 10, 320, 270, timerg);
|
||||
0, 10, SCREEN_WIDTH, SCREEN_HEIGHT+30, timerg);
|
||||
timersview->colour.r = 0.0f;
|
||||
timersview->colour.g = 0.0f;
|
||||
timersview->colour.b = 0.0f;
|
||||
@@ -3472,7 +3472,7 @@ struct GdObj *load_dynlist(struct DynList *dynlist) {
|
||||
fatal_printf("load_dynlist() unkown bank");
|
||||
}
|
||||
|
||||
#define PAGE_SIZE 65536 // size of a 64K TLB page
|
||||
#define PAGE_SIZE 65536 // size of a 64K TLB page
|
||||
|
||||
segSize = dynlistSegEnd - dynlistSegStart;
|
||||
allocSegSpace = gd_malloc_temp(segSize + PAGE_SIZE);
|
||||
|
||||
Reference in New Issue
Block a user