mirror of https://github.com/zeldaret/mm.git
z_syscfb.c, z_vimode.c, code_80140CE0 split and OK (#1159)
* z_vimode * Fixups * WIP * matching * sys_cfb OK * some documentation * vimode docs, name all syscfb vars * quick fixes * suggested changes, more things I missed * merge suggestions * code_80140CE0 -> z_viscvg * format * update symbols * more suggestions * fix include order * sNotebookViMode comment, bss fix --------- Co-authored-by: Kelebek1 <eeeedddccc@hotmail.co.uk> Co-authored-by: louist103 <louist103@gmail.com>
This commit is contained in:
parent
aa0a968791
commit
65d72a54cf
|
@ -1090,7 +1090,7 @@ void Font_LoadCharNES(PlayState* play, u8 codePointIndex, s32 offset);
|
|||
void Font_LoadMessageBoxEndIcon(Font* font, u16 icon);
|
||||
void Font_LoadOrderedFont(Font* font);
|
||||
// void func_800F5090(void);
|
||||
// void func_800F50D4(void);
|
||||
s32 Environment_ZBufValToFixedPoint(s32 zBufferVal);
|
||||
void Environment_Init(PlayState* play, EnvironmentContext* envCtx, s32 arg2);
|
||||
u32 func_800F5954(u8* param_1, u32 param_2, u32 param_3, u8 param_4, u8 param_5);
|
||||
f32 Environment_LerpWeight(u16 max, u16 min, u16 val);
|
||||
|
@ -1724,22 +1724,23 @@ void SkinMatrix_SetYRotation(MtxF* mf, s16 a);
|
|||
void SkinMatrix_MulYRotation(MtxF* mf, s16 a);
|
||||
void SkinMatrix_SetZRotation(MtxF* mf, s16 a);
|
||||
|
||||
void func_80140260(OSViMode* vimode);
|
||||
// void func_8014026C(OSViMode* param_1, UNK_TYPE1 param_2, s32 param_3, s32 param_4, s32 param_5, s32 param_6, s32 param_7, s32 param_8, UNK_TYPE4 param_9, s32 param_10, s16 param_11, u32 param_12, UNK_TYPE4 param_13);
|
||||
// void func_80140730(void);
|
||||
// void func_80140810(void);
|
||||
void func_80140898(void* arg0);
|
||||
void func_80140900(void* arg0);
|
||||
// void func_8014090C(void);
|
||||
// void func_80140970(void);
|
||||
void func_80140CE0(void* arg0);
|
||||
void func_80140D04(void* arg0);
|
||||
void func_80140D10(void* arg0, Gfx** gfx, u32 arg2);
|
||||
void ViMode_LogPrint(OSViMode* vimode);
|
||||
void ViMode_Configure(OSViMode* viMode, s32 type, s32 tvType, s32 loRes, s32 antialiasOff, s32 modeN, s32 fb16Bit,
|
||||
s32 width, s32 height, s32 leftAdjust, s32 rightAdjust, s32 upperAdjust, s32 lowerAdjust);
|
||||
void ViMode_Save(ViMode* viMode);
|
||||
void ViMode_Load(ViMode* viMode);
|
||||
void ViMode_Init(ViMode* viMode);
|
||||
void ViMode_Destroy(ViMode* viMode);
|
||||
void ViMode_ConfigureFeatures(ViMode* viMode, s32 viFeatures);
|
||||
void ViMode_Update(ViMode* viMode, Input* input);
|
||||
void VisCvg_Init(struct_801F8010* this);
|
||||
void VisCvg_Destroy(struct_801F8010* this);
|
||||
void VisCvg_Draw(struct_801F8010* this, Gfx** gfxp);
|
||||
void func_80140E80(Struct_80140E80* arg0);
|
||||
void func_80140EA0(Struct_80140E80* arg0);
|
||||
// void func_80140EAC(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6);
|
||||
// void func_80141008(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6, UNK_TYPE4 param_7, UNK_TYPE4 param_8, UNK_TYPE4 param_9, UNK_TYPE4 param_10);
|
||||
void func_8014116C(Gfx** gfxP, u16* arg1, u16* arg2, s32 width, s32 height, s32 arg5);
|
||||
void func_8014116C(Gfx** gfxP, u16* arg1, u16* workBuffer, s32 width, s32 height, s32 arg5);
|
||||
// void func_801411B4(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6, UNK_TYPE4 param_7, UNK_TYPE4 param_8, UNK_TYPE4 param_9, UNK_TYPE4 param_10);
|
||||
// void func_80141200(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6);
|
||||
// void func_8014151C(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6);
|
||||
|
@ -2048,15 +2049,14 @@ void Mtx_SetTranslateScaleMtx(Mtx* mtx, f32 scaleX, f32 scaleY, f32 scaleZ, f32
|
|||
void Mtx_SetRotationMtx(Mtx* mtx, s32 angle, f32 axisX, f32 axisY, f32 axisZ);
|
||||
void Mtx_SetTranslationRotationScaleMtx(Mtx* mtx, f32 scaleX, f32 scaleY, f32 scaleZ, s32 angle, f32 axisX, f32 axisY, f32 axisZ,f32 translateX, f32 translateY, f32 translateZ);
|
||||
|
||||
void func_80178750(void);
|
||||
void func_80178818(void);
|
||||
void func_80178978(void);
|
||||
// void func_801789D4(void);
|
||||
void* SysCfb_GetFbPtr(s32 index);
|
||||
void SysCfb_SetLoResMode(void);
|
||||
void SysCfb_SetHiResMode(void);
|
||||
void SysCfb_Init(void);
|
||||
void* SysCfb_GetFramebuffer(s32 index);
|
||||
void* SysCfb_GetZBuffer(void);
|
||||
// UNK_TYPE4 func_80178A24(void);
|
||||
// void func_80178A34(void);
|
||||
s32 func_80178A94(s32 param_1, s32 param_2);
|
||||
void* SysCfb_GetWorkBuffer(void);
|
||||
u16 SysCfb_GetZBufferPixel(s32 x, s32 y);
|
||||
s32 SysCfb_GetZBufferInt(s32 x, s32 y);
|
||||
void CmpDma_LoadFile(uintptr_t segmentVrom, s32 id, void* dst, size_t size);
|
||||
void CmpDma_LoadAllFiles(uintptr_t segmentVrom, void* dst, size_t size);
|
||||
// void Check_WriteRGBA16Pixel(u16* buffer, u32 x, u32 y, u32 value);
|
||||
|
|
|
@ -7,9 +7,11 @@
|
|||
|
||||
#define SCREEN_WIDTH 320
|
||||
#define SCREEN_HEIGHT 240
|
||||
#define SCREEN_WIDTH_HIRES 640
|
||||
#define SCREEN_HEIGHT_HIRES 480
|
||||
|
||||
#define SCREEN_WIDTH_HIGH_RES 576
|
||||
#define SCREEN_HEIGHT_HIGH_RES 454
|
||||
#define HIRES_BUFFER_WIDTH 576
|
||||
#define HIRES_BUFFER_HEIGHT 454
|
||||
|
||||
#define PROJECTED_TO_SCREEN_X(projectedPos, invW) ((projectedPos).x * (invW) * (SCREEN_WIDTH / 2) + (SCREEN_WIDTH / 2))
|
||||
#define PROJECTED_TO_SCREEN_Y(projectedPos, invW) ((projectedPos).y * (invW) * (-SCREEN_HEIGHT / 2) + (SCREEN_HEIGHT / 2))
|
||||
|
|
|
@ -65,6 +65,13 @@ extern RegEditor* gRegEditor;
|
|||
#define R_ENABLE_ARENA_DBG SREG(0) // Same as OoT
|
||||
#define R_ROOM_IMAGE_NODRAW_FLAGS SREG(25)
|
||||
#define R_UPDATE_RATE SREG(30)
|
||||
#define R_VI_MODE_EDIT_STATE SREG(48)
|
||||
#define R_VI_MODE_EDIT_WIDTH SREG(49)
|
||||
#define R_VI_MODE_EDIT_HEIGHT SREG(50)
|
||||
#define R_VI_MODE_EDIT_ULY_ADJ SREG(51)
|
||||
#define R_VI_MODE_EDIT_LRY_ADJ SREG(52)
|
||||
#define R_VI_MODE_EDIT_ULX_ADJ SREG(53)
|
||||
#define R_VI_MODE_EDIT_LRX_ADJ SREG(54)
|
||||
#define R_FB_FILTER_TYPE SREG(80)
|
||||
#define R_FB_FILTER_PRIM_COLOR(c) SREG(81 + c)
|
||||
#define R_FB_FILTER_A SREG(84)
|
||||
|
|
|
@ -0,0 +1,37 @@
|
|||
#ifndef ULTRA64_VIINT_H
|
||||
#define ULTRA64_VIINT_H
|
||||
|
||||
#define VI_STATE_MODE_SET (1 << 0)
|
||||
#define VI_STATE_XSCALE_SET (1 << 1)
|
||||
#define VI_STATE_YSCALE_FACTOR_SET (1 << 2)
|
||||
#define VI_STATE_CTRL_SET (1 << 3)
|
||||
#define VI_STATE_BUFFER_SET (1 << 4)
|
||||
#define VI_STATE_BLACK (1 << 5)
|
||||
#define VI_STATE_REPEATLINE (1 << 6)
|
||||
#define VI_STATE_FADE (1 << 7)
|
||||
|
||||
#define VI_SCALE_MASK 0xFFF
|
||||
#define VI_2_10_FPART_MASK 0x3FF
|
||||
#define VI_SUBPIXEL_SH 0x10
|
||||
|
||||
// For use in initializing OSViMode structures
|
||||
|
||||
#define BURST(hsync_width, color_width, vsync_width, color_start) \
|
||||
(hsync_width | (color_width << 8) | (vsync_width << 16) | (color_start << 20))
|
||||
#define WIDTH(v) v
|
||||
#define VSYNC(v) v
|
||||
#define HSYNC(duration, leap) (duration | (leap << 16))
|
||||
#define LEAP(upper, lower) ((upper << 16) | lower)
|
||||
#define START(start, end) ((start << 16) | end)
|
||||
|
||||
#define FTOFIX(val, i, f) ((u32)(val * (f32)(1 << f)) & ((1 << (i + f)) - 1))
|
||||
|
||||
#define F210(val) FTOFIX(val, 2, 10)
|
||||
#define SCALE(scaleup, off) (F210((1.0f / (f32)scaleup)) | (F210((f32)off) << 16))
|
||||
|
||||
#define VCURRENT(v) v
|
||||
#define ORIGIN(v) v
|
||||
#define VINTR(v) v
|
||||
#define HSTART START
|
||||
|
||||
#endif
|
|
@ -2393,7 +2393,7 @@ extern UNK_TYPE1 D_801F7FF0;
|
|||
extern struct_801F8010 D_801F8010;
|
||||
extern VisZbuf sVisZbuf;
|
||||
extern VisMono sMonoColors;
|
||||
extern UNK_TYPE1 D_801F8048;
|
||||
extern ViMode D_801F8048;
|
||||
extern FaultAddrConvClient sGraphFaultAddrConvClient;
|
||||
extern FaultClient sGraphFaultClient;
|
||||
extern GfxMasterList* gGfxMasterDL;
|
||||
|
@ -2422,30 +2422,30 @@ extern volatile OSTime sRSPOtherTotalTime;
|
|||
// extern UNK_TYPE1 D_801FBB18;
|
||||
extern volatile OSTime gRDPTotalTime;
|
||||
// extern UNK_TYPE1 D_801FBB28;
|
||||
extern OSViMode D_801FBB30;
|
||||
extern u32* gFramebuffers[2];
|
||||
extern OSViMode* D_801FBB88;
|
||||
extern OSViMode sNotebookViMode;
|
||||
extern void* gFramebuffers[2];
|
||||
extern OSViMode* gActiveViMode;
|
||||
extern u16* gZBufferPtr;
|
||||
extern void* D_801FBB90;
|
||||
extern void* gWorkBuffer;
|
||||
extern u64* gGfxSPTaskOutputBufferPtr;
|
||||
extern size_t gGfxSPTaskOutputBufferSize;
|
||||
// extern UNK_TYPE1 D_801FBB9C;
|
||||
// extern UNK_TYPE1 D_801FBBA0;
|
||||
extern u16 (*gZBuffer)[SCREEN_WIDTH * SCREEN_HEIGHT];
|
||||
extern u16 (*gWorkBuffer)[SCREEN_WIDTH * SCREEN_HEIGHT];
|
||||
extern u64 (*gGfxSPTaskOutputBuffer)[0x3000];
|
||||
extern void* gGfxSPTaskOutputBufferEnd;
|
||||
// extern UNK_TYPE1 D_801FBBB4;
|
||||
// extern UNK_TYPE1 D_801FBBB8;
|
||||
// extern UNK_TYPE1 D_801FBBBC;
|
||||
// extern UNK_TYPE1 D_801FBBC0;
|
||||
extern u64 (*gGfxSPTaskOutputBuffer2)[0x3000];
|
||||
extern void* gGfxSPTaskOutputBufferEnd2;
|
||||
extern UNK_TYPE2 D_801FBBCC;
|
||||
extern UNK_TYPE2 D_801FBBCE;
|
||||
// extern UNK_TYPE1 D_801FBBD0;
|
||||
// extern UNK_TYPE1 D_801FBBD2;
|
||||
extern u8 D_801FBBD4;
|
||||
extern void* sCfbLoRes1;
|
||||
extern void* sCfbLoRes0;
|
||||
extern u16 (*gZBufferLoRes)[SCREEN_WIDTH * SCREEN_HEIGHT];
|
||||
extern u16 (*gWorkBufferLoRes)[SCREEN_WIDTH * SCREEN_HEIGHT];
|
||||
extern u64 (*gGfxSPTaskOutputBufferLoRes)[0x3000];
|
||||
extern void* gGfxSPTaskOutputBufferEndLoRes;
|
||||
extern void* sCfbHiRes1;
|
||||
extern void* sCfbHiRes0;
|
||||
extern u16 (*gZBufferHiRes)[HIRES_BUFFER_WIDTH * HIRES_BUFFER_HEIGHT];
|
||||
extern u16 (*gWorkBufferHiRes)[HIRES_BUFFER_WIDTH * HIRES_BUFFER_HEIGHT];
|
||||
extern u64 (*gGfxSPTaskOutputBufferHiRes)[0x3000];
|
||||
extern void* gGfxSPTaskOutputBufferEndHiRes;
|
||||
extern s16 gCfbWidth;
|
||||
extern s16 gCfbHeight;
|
||||
extern s16 gCfbLeftAdjust;
|
||||
extern s16 gCfbUpperAdjust;
|
||||
extern u8 gSysCfbHiResEnabled;
|
||||
extern Vec3f D_801FBBF0;
|
||||
extern LineSegment Math3D_ColSphereTri_line;
|
||||
extern Vec3f Math3D_ColSphereTri_point;
|
||||
|
|
|
@ -612,7 +612,7 @@ typedef struct {
|
|||
typedef struct {
|
||||
/* 0x0 */ u32 type;
|
||||
/* 0x4 */ u32 setScissor;
|
||||
/* 0x8 */ Color_RGBA8 color;
|
||||
/* 0x8 */ Color_RGBA8_u32 color;
|
||||
/* 0xC */ Color_RGBA8 envColor;
|
||||
} struct_801F8010; // size = 0x10
|
||||
|
||||
|
@ -676,4 +676,29 @@ enum fram_mode {
|
|||
FRAM_MODE_STATUS
|
||||
};
|
||||
|
||||
typedef enum {
|
||||
/* 0 */ VI_MODE_EDIT_STATE_INACTIVE,
|
||||
/* 1 */ VI_MODE_EDIT_STATE_ACTIVE,
|
||||
/* 2 */ VI_MODE_EDIT_STATE_2, // active, more adjustments
|
||||
/* 3 */ VI_MODE_EDIT_STATE_3 // active, more adjustments, print comparison with NTSC LAN1 mode
|
||||
} ViModeEditState;
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ OSViMode customViMode;
|
||||
/* 0x50 */ s32 viHeight;
|
||||
/* 0x54 */ s32 viWidth;
|
||||
/* 0x58 */ s32 rightAdjust;
|
||||
/* 0x5C */ s32 leftAdjust;
|
||||
/* 0x60 */ s32 lowerAdjust;
|
||||
/* 0x64 */ s32 upperAdjust;
|
||||
/* 0x68 */ s32 editState;
|
||||
/* 0x6C */ s32 tvType;
|
||||
/* 0x70 */ u32 loRes;
|
||||
/* 0x74 */ u32 antialiasOff;
|
||||
/* 0x78 */ u32 modeN;
|
||||
/* 0x7C */ u32 fb16Bit;
|
||||
/* 0x80 */ u32 viFeatures;
|
||||
/* 0x84 */ u32 unk_84;
|
||||
} ViMode; // size = 0x88
|
||||
|
||||
#endif
|
||||
|
|
4
spec
4
spec
|
@ -523,8 +523,7 @@ beginseg
|
|||
include "build/src/code/z_rumble.o"
|
||||
include "build/src/code/z_view.o"
|
||||
include "build/src/code/z_vimode.o"
|
||||
include "build/src/code/code_80140CE0.o"
|
||||
include "build/data/code/code_80140CE0.data.o"
|
||||
include "build/src/code/z_viscvg.o"
|
||||
include "build/src/code/code_80140E80.o"
|
||||
include "build/src/code/z_vismono.o"
|
||||
include "build/src/code/z_viszbuf.o"
|
||||
|
@ -574,7 +573,6 @@ beginseg
|
|||
include "build/data/code/speed_meter.bss.o"
|
||||
include "build/src/code/su_mtx.o"
|
||||
include "build/src/code/sys_cfb.o"
|
||||
include "build/data/code/sys_cfb.bss.o"
|
||||
include "build/src/code/sys_cmpdma.o"
|
||||
include "build/src/code/sys_initial_check.o"
|
||||
include "build/src/code/sys_math.o"
|
||||
|
|
|
@ -1,7 +0,0 @@
|
|||
#include "global.h"
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/code_80140CE0/func_80140CE0.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/code_80140CE0/func_80140D04.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/code_80140CE0/func_80140D10.s")
|
|
@ -31,7 +31,7 @@ void GameState_SetFBFilter(Gfx** gfx, void* zbuffer) {
|
|||
D_801F8010.color.g = R_FB_FILTER_PRIM_COLOR(1);
|
||||
D_801F8010.color.b = R_FB_FILTER_PRIM_COLOR(2);
|
||||
D_801F8010.color.a = R_FB_FILTER_A;
|
||||
func_80140D10(&D_801F8010, &dlist, zbuffer);
|
||||
VisCvg_Draw(&D_801F8010, &dlist);
|
||||
} else if ((R_FB_FILTER_TYPE == 5) || (R_FB_FILTER_TYPE == 6)) {
|
||||
sVisZbuf.useRgba = (R_FB_FILTER_TYPE == 6);
|
||||
sVisZbuf.primColor.r = R_FB_FILTER_PRIM_COLOR(0);
|
||||
|
@ -194,7 +194,7 @@ void GameState_Init(GameState* gameState, GameStateFunc init, GraphicsContext* g
|
|||
gameState->main = NULL;
|
||||
gameState->destroy = NULL;
|
||||
gameState->running = 1;
|
||||
gfxCtx->viMode = D_801FBB88;
|
||||
gfxCtx->viMode = gActiveViMode;
|
||||
gfxCtx->viConfigFeatures = gViConfigFeatures;
|
||||
gfxCtx->xScale = gViConfigXScale;
|
||||
gfxCtx->yScale = gViConfigYScale;
|
||||
|
@ -210,10 +210,10 @@ void GameState_Init(GameState* gameState, GameStateFunc init, GraphicsContext* g
|
|||
|
||||
init(gameState);
|
||||
|
||||
func_80140CE0(&D_801F8010);
|
||||
VisCvg_Init(&D_801F8010);
|
||||
VisZbuf_Init(&sVisZbuf);
|
||||
VisMono_Init(&sMonoColors);
|
||||
func_80140898(&D_801F8048);
|
||||
ViMode_Init(&D_801F8048);
|
||||
func_801773A0(&D_801F7FF0);
|
||||
Rumble_Init();
|
||||
|
||||
|
@ -232,10 +232,10 @@ void GameState_Destroy(GameState* gameState) {
|
|||
|
||||
Rumble_Destroy();
|
||||
func_801773C4(&D_801F7FF0);
|
||||
func_80140D04(&D_801F8010);
|
||||
VisCvg_Destroy(&D_801F8010);
|
||||
VisZbuf_Destroy(&sVisZbuf);
|
||||
VisMono_Destroy(&sMonoColors);
|
||||
func_80140900(&D_801F8048);
|
||||
ViMode_Destroy(&D_801F8048);
|
||||
THA_Destroy(&gameState->heap);
|
||||
GameAlloc_Cleanup(&gameState->alloc);
|
||||
}
|
||||
|
|
|
@ -16,12 +16,12 @@ OSTime sGraphTaskStartTime;
|
|||
|
||||
void Graph_FaultClient(void) {
|
||||
FaultDrawer_DrawText(30, 100, "ShowFrameBuffer PAGE 0/1");
|
||||
osViSwapBuffer(SysCfb_GetFbPtr(0));
|
||||
osViSetMode(D_801FBB88);
|
||||
osViSwapBuffer(SysCfb_GetFramebuffer(0));
|
||||
osViSetMode(gActiveViMode);
|
||||
osViSetSpecialFeatures(OS_VI_DITHER_FILTER_ON | OS_VI_GAMMA_OFF);
|
||||
Fault_WaitForInput();
|
||||
osViSwapBuffer(SysCfb_GetFbPtr(1));
|
||||
osViSetMode(D_801FBB88);
|
||||
osViSwapBuffer(SysCfb_GetFramebuffer(1));
|
||||
osViSetMode(gActiveViMode);
|
||||
osViSetSpecialFeatures(OS_VI_DITHER_FILTER_ON | OS_VI_GAMMA_OFF);
|
||||
}
|
||||
|
||||
|
@ -50,7 +50,7 @@ void Graph_SetNextGfxPool(GraphicsContext* gfxCtx) {
|
|||
gfxCtx->workBuffer = pool->workBuffer;
|
||||
gfxCtx->debugBuffer = pool->debugBuffer;
|
||||
|
||||
gfxCtx->curFrameBuffer = SysCfb_GetFbPtr(gfxCtx->framebufferIndex % 2);
|
||||
gfxCtx->curFrameBuffer = SysCfb_GetFramebuffer(gfxCtx->framebufferIndex % 2);
|
||||
gSegments[0x0F] = gfxCtx->curFrameBuffer;
|
||||
|
||||
gfxCtx->zbuffer = SysCfb_GetZBuffer();
|
||||
|
@ -179,7 +179,7 @@ retry:
|
|||
task->dramStack = (u64*)gGfxSPTaskStack;
|
||||
task->dramStackSize = sizeof(gGfxSPTaskStack);
|
||||
task->outputBuff = gGfxSPTaskOutputBufferPtr;
|
||||
task->outputBuffSize = gGfxSPTaskOutputBufferSize;
|
||||
task->outputBuffSize = gGfxSPTaskOutputBufferEnd;
|
||||
task->dataPtr = (u64*)gGfxMasterDL;
|
||||
task->dataSize = 0;
|
||||
task->yieldDataPtr = (u64*)gGfxSPTaskYieldBuffer;
|
||||
|
@ -340,18 +340,19 @@ void Graph_ThreadEntry(void* arg) {
|
|||
u32 size;
|
||||
s32 pad[2];
|
||||
|
||||
gZBuffer = SystemArena_Malloc(sizeof(*gZBuffer) + sizeof(*gWorkBuffer) + 64 - 1);
|
||||
gZBuffer = (void*)ALIGN64((u32)gZBuffer);
|
||||
gZBufferLoRes = SystemArena_Malloc(sizeof(*gZBufferLoRes) + sizeof(*gWorkBufferLoRes) + 64 - 1);
|
||||
gZBufferLoRes = (void*)ALIGN64((u32)gZBufferLoRes);
|
||||
|
||||
gWorkBuffer = (void*)((u8*)gZBuffer + sizeof(*gZBuffer));
|
||||
gWorkBufferLoRes = (void*)((u8*)gZBufferLoRes + sizeof(*gZBufferLoRes));
|
||||
|
||||
gGfxSPTaskOutputBuffer2 = gGfxSPTaskOutputBuffer = SystemArena_Malloc(sizeof(*gGfxSPTaskOutputBuffer));
|
||||
gGfxSPTaskOutputBufferHiRes = gGfxSPTaskOutputBufferLoRes =
|
||||
SystemArena_Malloc(sizeof(*gGfxSPTaskOutputBufferLoRes));
|
||||
|
||||
gGfxSPTaskOutputBufferEnd = (u8*)gGfxSPTaskOutputBuffer + sizeof(*gGfxSPTaskOutputBuffer);
|
||||
gGfxSPTaskOutputBufferEnd2 = (u8*)gGfxSPTaskOutputBuffer2 + sizeof(*gGfxSPTaskOutputBuffer2);
|
||||
gGfxSPTaskOutputBufferEndLoRes = (u8*)gGfxSPTaskOutputBufferLoRes + sizeof(*gGfxSPTaskOutputBufferLoRes);
|
||||
gGfxSPTaskOutputBufferEndHiRes = (u8*)gGfxSPTaskOutputBufferHiRes + sizeof(*gGfxSPTaskOutputBufferHiRes);
|
||||
|
||||
func_80178978();
|
||||
Fault_SetFB(D_801FBB90, SCREEN_WIDTH, SCREEN_HEIGHT);
|
||||
SysCfb_Init();
|
||||
Fault_SetFB(gWorkBuffer, SCREEN_WIDTH, SCREEN_HEIGHT);
|
||||
Graph_Init(&gfxCtx);
|
||||
|
||||
while (nextOvl) {
|
||||
|
|
|
@ -2,20 +2,127 @@
|
|||
#include "buffers.h"
|
||||
#include "system_malloc.h"
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/sys_cfb/func_80178750.s")
|
||||
extern u16 gFramebufferHiRes0[HIRES_BUFFER_WIDTH][HIRES_BUFFER_HEIGHT];
|
||||
extern u16 gFramebufferHiRes1[HIRES_BUFFER_WIDTH][HIRES_BUFFER_HEIGHT];
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/sys_cfb/func_80178818.s")
|
||||
OSViMode sNotebookViMode; // placeholder name
|
||||
void* gFramebuffers[2];
|
||||
OSViMode* gActiveViMode;
|
||||
u16* gZBufferPtr;
|
||||
void* gWorkBuffer;
|
||||
u64* gGfxSPTaskOutputBufferPtr;
|
||||
void* gGfxSPTaskOutputBufferEnd;
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/sys_cfb/func_80178978.s")
|
||||
void* sCfbLoRes1;
|
||||
void* sCfbLoRes0;
|
||||
u16 (*gZBufferLoRes)[SCREEN_WIDTH * SCREEN_HEIGHT];
|
||||
u16 (*gWorkBufferLoRes)[SCREEN_WIDTH * SCREEN_HEIGHT];
|
||||
u64 (*gGfxSPTaskOutputBufferLoRes)[0x3000];
|
||||
void* gGfxSPTaskOutputBufferEndLoRes;
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/sys_cfb/func_801789D4.s")
|
||||
void* sCfbHiRes1;
|
||||
void* sCfbHiRes0;
|
||||
u16 (*gZBufferHiRes)[HIRES_BUFFER_WIDTH * HIRES_BUFFER_HEIGHT];
|
||||
u16 (*gWorkBufferHiRes)[HIRES_BUFFER_WIDTH * HIRES_BUFFER_HEIGHT];
|
||||
u64 (*gGfxSPTaskOutputBufferHiRes)[0x3000];
|
||||
void* gGfxSPTaskOutputBufferEndHiRes;
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/sys_cfb/SysCfb_GetFbPtr.s")
|
||||
s16 gCfbWidth;
|
||||
s16 gCfbHeight;
|
||||
s16 gCfbLeftAdjust;
|
||||
s16 gCfbUpperAdjust;
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/sys_cfb/SysCfb_GetZBuffer.s")
|
||||
u8 gSysCfbHiResEnabled;
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/sys_cfb/func_80178A24.s")
|
||||
void SysCfb_SetLoResMode(void) {
|
||||
gFramebuffers[1] = sCfbLoRes1;
|
||||
gFramebuffers[0] = sCfbLoRes0;
|
||||
gZBufferPtr = *gZBufferLoRes;
|
||||
gWorkBuffer = gWorkBufferLoRes;
|
||||
gGfxSPTaskOutputBufferPtr = *gGfxSPTaskOutputBufferLoRes;
|
||||
gGfxSPTaskOutputBufferEnd = gGfxSPTaskOutputBufferEndLoRes;
|
||||
gCfbWidth = SCREEN_WIDTH;
|
||||
gCfbHeight = SCREEN_HEIGHT;
|
||||
gCfbLeftAdjust = 0;
|
||||
gCfbUpperAdjust = 0;
|
||||
gSysCfbHiResEnabled = false;
|
||||
gScreenWidth = gCfbWidth;
|
||||
gScreenHeight = gCfbHeight;
|
||||
gActiveViMode = &osViModeNtscLan1;
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/sys_cfb/func_80178A34.s")
|
||||
void SysCfb_SetHiResMode(void) {
|
||||
gFramebuffers[1] = sCfbHiRes1;
|
||||
gFramebuffers[0] = sCfbHiRes0;
|
||||
gZBufferPtr = *gZBufferHiRes;
|
||||
gWorkBuffer = gWorkBufferHiRes;
|
||||
gGfxSPTaskOutputBufferPtr = *gGfxSPTaskOutputBufferHiRes;
|
||||
gGfxSPTaskOutputBufferEnd = gGfxSPTaskOutputBufferEndHiRes;
|
||||
if (1) {}
|
||||
gCfbWidth = HIRES_BUFFER_WIDTH;
|
||||
gCfbHeight = HIRES_BUFFER_HEIGHT;
|
||||
gCfbLeftAdjust = 30;
|
||||
gCfbUpperAdjust = 10;
|
||||
gScreenWidth = gCfbWidth;
|
||||
gScreenHeight = gCfbHeight;
|
||||
if ((gCfbWidth == SCREEN_WIDTH_HIRES) && (gCfbHeight == SCREEN_HEIGHT_HIRES)) {
|
||||
gActiveViMode = &osViModeNtscHpf1;
|
||||
} else {
|
||||
s32 rightAdjust;
|
||||
s32 lowerAdjust;
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/sys_cfb/func_80178A94.s")
|
||||
//! FAKE:
|
||||
l1:
|
||||
rightAdjust = gCfbWidth - 610;
|
||||
lowerAdjust = gCfbHeight - 470;
|
||||
ViMode_Configure(&sNotebookViMode, -1, osTvType, 0, 1, 0, 1, gCfbWidth, gCfbHeight, 30, rightAdjust, 10,
|
||||
lowerAdjust);
|
||||
gActiveViMode = &sNotebookViMode;
|
||||
}
|
||||
gSysCfbHiResEnabled = true;
|
||||
}
|
||||
|
||||
void SysCfb_Init(void) {
|
||||
sCfbLoRes1 = gFramebuffer1;
|
||||
sCfbLoRes0 = gFramebuffer0;
|
||||
sCfbHiRes1 = gFramebufferHiRes1;
|
||||
sCfbHiRes0 = gFramebufferHiRes0;
|
||||
SysCfb_SetLoResMode();
|
||||
}
|
||||
|
||||
// Unused
|
||||
void SysCfb_Reset(void) {
|
||||
gFramebuffers[0] = NULL;
|
||||
gFramebuffers[1] = NULL;
|
||||
}
|
||||
|
||||
void* SysCfb_GetFramebuffer(s32 index) {
|
||||
if (index < 2) {
|
||||
return gFramebuffers[index];
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void* SysCfb_GetZBuffer(void) {
|
||||
return gZBufferPtr;
|
||||
}
|
||||
|
||||
void* SysCfb_GetWorkBuffer(void) {
|
||||
return gWorkBuffer;
|
||||
}
|
||||
|
||||
u16 SysCfb_GetZBufferPixel(s32 x, s32 y) {
|
||||
u16* zBuff = SysCfb_GetZBuffer();
|
||||
u16 val;
|
||||
|
||||
if (zBuff != NULL) {
|
||||
val = (&zBuff[x])[y * gCfbWidth];
|
||||
} else {
|
||||
val = 0;
|
||||
}
|
||||
return val;
|
||||
}
|
||||
|
||||
s32 SysCfb_GetZBufferInt(s32 x, s32 y) {
|
||||
return Environment_ZBufValToFixedPoint(SysCfb_GetZBufferPixel(x, y) << 2) >> 3;
|
||||
}
|
||||
|
|
|
@ -2705,7 +2705,7 @@ void Actor_DrawLensActors(PlayState* play, s32 numLensActors, Actor** lensActors
|
|||
spA4 = play->unk_18E68;
|
||||
|
||||
if (dbgVar2) {
|
||||
PreRender_SetValues(&play->pauseBgPreRender, D_801FBBCC, D_801FBBCE, gfxCtx->curFrameBuffer, zbuffer);
|
||||
PreRender_SetValues(&play->pauseBgPreRender, gCfbWidth, gCfbHeight, gfxCtx->curFrameBuffer, zbuffer);
|
||||
|
||||
gfxTemp = gfx;
|
||||
func_80170200(&play->pauseBgPreRender, &gfxTemp, zbuffer, spA4);
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
#include "prevent_bss_reordering.h"
|
||||
#include "global.h"
|
||||
#include "z64quake.h"
|
||||
#include "z64rumble.h"
|
||||
|
|
|
@ -82,8 +82,8 @@ void TransitionCircle_SetType(void* thisx, s32 type) {
|
|||
void TransitionCircle_LoadAndSetTexture(Gfx** gfxp, TexturePtr texture, s32 fmt, s32 arg3, s32 masks, s32 maskt,
|
||||
f32 arg6) {
|
||||
Gfx* gfx = *gfxp;
|
||||
s32 xh = D_801FBBCC;
|
||||
s32 yh = D_801FBBCE;
|
||||
s32 xh = gCfbWidth;
|
||||
s32 yh = gCfbHeight;
|
||||
s32 width = 1 << masks;
|
||||
s32 height = 1 << maskt;
|
||||
f32 s;
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_kankyo/func_800F5090.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_kankyo/func_800F50D4.s")
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_kankyo/Environment_ZBufValToFixedPoint.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_kankyo/Environment_Init.s")
|
||||
|
||||
|
|
|
@ -360,12 +360,9 @@ Lights* Lights_New(GraphicsContext* gfxCtx, u8 ambientR, u8 ambientG, u8 ambient
|
|||
|
||||
lights = GRAPH_ALLOC(gfxCtx, sizeof(Lights));
|
||||
|
||||
lights->l.a.l.col[0] = ambientR;
|
||||
lights->l.a.l.colc[0] = ambientR;
|
||||
lights->l.a.l.col[1] = ambientG;
|
||||
lights->l.a.l.colc[1] = ambientG;
|
||||
lights->l.a.l.col[2] = ambientB;
|
||||
lights->l.a.l.colc[2] = ambientB;
|
||||
lights->l.a.l.col[0] = lights->l.a.l.colc[0] = ambientR;
|
||||
lights->l.a.l.col[1] = lights->l.a.l.colc[1] = ambientG;
|
||||
lights->l.a.l.col[2] = lights->l.a.l.colc[2] = ambientB;
|
||||
lights->enablePosLights = 0;
|
||||
lights->numLights = 0;
|
||||
|
||||
|
@ -394,7 +391,7 @@ void Lights_GlowCheck(PlayState* play) {
|
|||
s32 screenPosX = PROJECTED_TO_SCREEN_X(projectedPos, invW);
|
||||
s32 screenPosY = PROJECTED_TO_SCREEN_Y(projectedPos, invW);
|
||||
s32 wZ = (s32)((projectedPos.z * invW) * 16352.0f) + 16352;
|
||||
s32 zBuf = func_80178A94(screenPosX, screenPosY);
|
||||
s32 zBuf = SysCfb_GetZBufferInt(screenPosX, screenPosY);
|
||||
|
||||
if (wZ < zBuf) {
|
||||
params->drawGlow = 1;
|
||||
|
|
|
@ -2421,7 +2421,7 @@ void Interface_UpdateButtonsPart1(PlayState* play) {
|
|||
// Related to pictograph
|
||||
if (sPictoState == PICTO_BOX_STATE_LENS) {
|
||||
if (!(play->actorCtx.flags & ACTORCTX_FLAG_PICTO_BOX_ON)) {
|
||||
Play_CompressI8ToI5((play->pictoPhotoI8 != NULL) ? play->pictoPhotoI8 : D_801FBB90,
|
||||
Play_CompressI8ToI5((play->pictoPhotoI8 != NULL) ? play->pictoPhotoI8 : gWorkBuffer,
|
||||
(u8*)((void)0, gSaveContext.pictoPhotoI5),
|
||||
PICTO_PHOTO_WIDTH * PICTO_PHOTO_HEIGHT);
|
||||
interfaceCtx->unk_222 = interfaceCtx->unk_224 = 0;
|
||||
|
@ -2460,7 +2460,7 @@ void Interface_UpdateButtonsPart1(PlayState* play) {
|
|||
Interface_SetHudVisibility(HUD_VISIBILITY_ALL);
|
||||
sPictoState = PICTO_BOX_STATE_OFF;
|
||||
if (sPictoPhotoBeingTaken) {
|
||||
Play_CompressI8ToI5((play->pictoPhotoI8 != NULL) ? play->pictoPhotoI8 : D_801FBB90,
|
||||
Play_CompressI8ToI5((play->pictoPhotoI8 != NULL) ? play->pictoPhotoI8 : gWorkBuffer,
|
||||
(u8*)((void)0, gSaveContext.pictoPhotoI5),
|
||||
PICTO_PHOTO_WIDTH * PICTO_PHOTO_HEIGHT);
|
||||
Snap_RecordPictographedActors(play);
|
||||
|
@ -2493,7 +2493,7 @@ void Interface_UpdateButtonsPart1(PlayState* play) {
|
|||
sPictoState = PICTO_BOX_STATE_LENS;
|
||||
} else {
|
||||
Play_DecompressI5ToI8((u8*)((void)0, gSaveContext.pictoPhotoI5),
|
||||
(play->pictoPhotoI8 != NULL) ? play->pictoPhotoI8 : D_801FBB90,
|
||||
(play->pictoPhotoI8 != NULL) ? play->pictoPhotoI8 : gWorkBuffer,
|
||||
PICTO_PHOTO_WIDTH * PICTO_PHOTO_HEIGHT);
|
||||
play->haltAllActors = true;
|
||||
sPictoState = PICTO_BOX_STATE_SETUP_PHOTO;
|
||||
|
@ -6631,7 +6631,7 @@ void Interface_Draw(PlayState* play) {
|
|||
// Draw pictograph photo
|
||||
if (sPictoState >= PICTO_BOX_STATE_SETUP_PHOTO) {
|
||||
if (!(play->actorCtx.flags & ACTORCTX_FLAG_PICTO_BOX_ON)) {
|
||||
Play_CompressI8ToI5((play->pictoPhotoI8 != NULL) ? play->pictoPhotoI8 : D_801FBB90,
|
||||
Play_CompressI8ToI5((play->pictoPhotoI8 != NULL) ? play->pictoPhotoI8 : gWorkBuffer,
|
||||
(u8*)gSaveContext.pictoPhotoI5, PICTO_PHOTO_WIDTH * PICTO_PHOTO_HEIGHT);
|
||||
|
||||
interfaceCtx->unk_222 = interfaceCtx->unk_224 = 0;
|
||||
|
@ -6667,7 +6667,7 @@ void Interface_Draw(PlayState* play) {
|
|||
for (sp2CC = 0; sp2CC < (PICTO_PHOTO_HEIGHT / 8); sp2CC++, pictoRectTop += 8) {
|
||||
pictoRectLeft = PICTO_PHOTO_TOPLEFT_X;
|
||||
gDPLoadTextureBlock(OVERLAY_DISP++,
|
||||
(u8*)((play->pictoPhotoI8 != NULL) ? play->pictoPhotoI8 : D_801FBB90) +
|
||||
(u8*)((play->pictoPhotoI8 != NULL) ? play->pictoPhotoI8 : gWorkBuffer) +
|
||||
(0x500 * sp2CC),
|
||||
G_IM_FMT_I, G_IM_SIZ_8b, PICTO_PHOTO_WIDTH, 8, 0, G_TX_NOMIRROR | G_TX_WRAP,
|
||||
G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD);
|
||||
|
|
|
@ -358,10 +358,10 @@ void Play_Destroy(GameState* thisx) {
|
|||
|
||||
if (sBombersNotebookOpen) {
|
||||
MsgEvent_SendNullTask();
|
||||
func_80178750();
|
||||
gfxCtx->curFrameBuffer = SysCfb_GetFbPtr(gfxCtx->framebufferIndex % 2);
|
||||
SysCfb_SetLoResMode();
|
||||
gfxCtx->curFrameBuffer = SysCfb_GetFramebuffer(gfxCtx->framebufferIndex % 2);
|
||||
gfxCtx->zbuffer = SysCfb_GetZBuffer();
|
||||
gfxCtx->viMode = D_801FBB88;
|
||||
gfxCtx->viMode = gActiveViMode;
|
||||
gfxCtx->viConfigFeatures = gViConfigFeatures;
|
||||
gfxCtx->xScale = gViConfigXScale;
|
||||
gfxCtx->yScale = gViConfigYScale;
|
||||
|
@ -1242,7 +1242,7 @@ void Play_DrawMain(PlayState* this) {
|
|||
goto PostWorldDraw;
|
||||
}
|
||||
|
||||
PreRender_SetValues(&this->pauseBgPreRender, D_801FBBCC, D_801FBBCE, gfxCtx->curFrameBuffer, gfxCtx->zbuffer);
|
||||
PreRender_SetValues(&this->pauseBgPreRender, gCfbWidth, gCfbHeight, gfxCtx->curFrameBuffer, gfxCtx->zbuffer);
|
||||
|
||||
if (R_PAUSE_BG_PRERENDER_STATE == PAUSE_BG_PRERENDER_PROCESS) {
|
||||
MsgEvent_SendNullTask();
|
||||
|
@ -1442,24 +1442,24 @@ void Play_Draw(PlayState* this) {
|
|||
GraphicsContext* gfxCtx2 = this->state.gfxCtx;
|
||||
|
||||
if (sBombersNotebookOpen) {
|
||||
if (D_801FBBD4 != 1) {
|
||||
if (gSysCfbHiResEnabled != 1) {
|
||||
MsgEvent_SendNullTask();
|
||||
func_80178818();
|
||||
gfxCtx2->curFrameBuffer = SysCfb_GetFbPtr(gfxCtx2->framebufferIndex % 2);
|
||||
SysCfb_SetHiResMode();
|
||||
gfxCtx2->curFrameBuffer = SysCfb_GetFramebuffer(gfxCtx2->framebufferIndex % 2);
|
||||
gfxCtx2->zbuffer = SysCfb_GetZBuffer();
|
||||
gfxCtx2->viMode = D_801FBB88;
|
||||
gfxCtx2->viMode = gActiveViMode;
|
||||
gfxCtx2->viConfigFeatures = gViConfigFeatures;
|
||||
gfxCtx2->xScale = gViConfigXScale;
|
||||
gfxCtx2->yScale = gViConfigYScale;
|
||||
gfxCtx2->updateViMode = true;
|
||||
}
|
||||
} else {
|
||||
if (D_801FBBD4 != 0) {
|
||||
if (gSysCfbHiResEnabled != 0) {
|
||||
MsgEvent_SendNullTask();
|
||||
func_80178750();
|
||||
gfxCtx2->curFrameBuffer = SysCfb_GetFbPtr(gfxCtx2->framebufferIndex % 2);
|
||||
SysCfb_SetLoResMode();
|
||||
gfxCtx2->curFrameBuffer = SysCfb_GetFramebuffer(gfxCtx2->framebufferIndex % 2);
|
||||
gfxCtx2->zbuffer = SysCfb_GetZBuffer();
|
||||
gfxCtx2->viMode = D_801FBB88;
|
||||
gfxCtx2->viMode = gActiveViMode;
|
||||
gfxCtx2->viConfigFeatures = gViConfigFeatures;
|
||||
gfxCtx2->xScale = gViConfigXScale;
|
||||
gfxCtx2->yScale = gViConfigYScale;
|
||||
|
@ -2252,10 +2252,10 @@ void Play_Init(GameState* thisx) {
|
|||
R_PICTO_PHOTO_STATE = PICTO_PHOTO_STATE_OFF;
|
||||
|
||||
PreRender_Init(&this->pauseBgPreRender);
|
||||
PreRender_SetValuesSave(&this->pauseBgPreRender, D_801FBBCC, D_801FBBCE, NULL, NULL, NULL);
|
||||
PreRender_SetValues(&this->pauseBgPreRender, D_801FBBCC, D_801FBBCE, NULL, NULL);
|
||||
PreRender_SetValuesSave(&this->pauseBgPreRender, gCfbWidth, gCfbHeight, NULL, NULL, NULL);
|
||||
PreRender_SetValues(&this->pauseBgPreRender, gCfbWidth, gCfbHeight, NULL, NULL);
|
||||
|
||||
this->unk_18E64 = D_801FBB90;
|
||||
this->unk_18E64 = gWorkBuffer;
|
||||
this->pictoPhotoI8 = gPictoPhotoI8;
|
||||
this->unk_18E68 = D_80784600;
|
||||
this->unk_18E58 = D_80784600;
|
||||
|
|
|
@ -1459,7 +1459,7 @@ void func_8012CF0C(GraphicsContext* gfxCtx, s32 clearFb, s32 clearZb, u8 r, u8 g
|
|||
|
||||
gSPDisplayList(&masterGfx[0], D_0E000000.syncSegments);
|
||||
gSPDisplayList(&masterGfx[1], sFillSetupDL);
|
||||
gDPSetColorImage(&masterGfx[2], G_IM_FMT_RGBA, G_IM_SIZ_16b, D_801FBBCC, D_0F000000);
|
||||
gDPSetColorImage(&masterGfx[2], G_IM_FMT_RGBA, G_IM_SIZ_16b, gCfbWidth, D_0F000000);
|
||||
if (zbuffer != NULL) {
|
||||
gDPSetDepthImage(&masterGfx[3], zbuffer);
|
||||
} else {
|
||||
|
@ -1471,7 +1471,7 @@ void func_8012CF0C(GraphicsContext* gfxCtx, s32 clearFb, s32 clearZb, u8 r, u8 g
|
|||
|
||||
masterGfx = gGfxMasterDL->setScissor;
|
||||
|
||||
gDPSetScissor(&masterGfx[0], G_SC_NON_INTERLACE, 0, 0, D_801FBBCC, D_801FBBCE);
|
||||
gDPSetScissor(&masterGfx[0], G_SC_NON_INTERLACE, 0, 0, gCfbWidth, gCfbHeight);
|
||||
gSPEndDisplayList(&masterGfx[1]);
|
||||
|
||||
// Clear Z-Buffer
|
||||
|
@ -1481,13 +1481,13 @@ void func_8012CF0C(GraphicsContext* gfxCtx, s32 clearFb, s32 clearZb, u8 r, u8 g
|
|||
if (zbuffer == NULL) {
|
||||
gSPEndDisplayList(&masterGfx[0]);
|
||||
} else {
|
||||
gDPSetColorImage(&masterGfx[0], G_IM_FMT_RGBA, G_IM_SIZ_16b, D_801FBBCC, zbuffer);
|
||||
gDPSetColorImage(&masterGfx[0], G_IM_FMT_RGBA, G_IM_SIZ_16b, gCfbWidth, zbuffer);
|
||||
gDPPipeSync(&masterGfx[1]);
|
||||
gDPSetCycleType(&masterGfx[2], G_CYC_FILL);
|
||||
gDPSetRenderMode(&masterGfx[3], G_RM_NOOP, G_RM_NOOP2);
|
||||
gDPSetFillColor(&masterGfx[4], (GPACK_RGBA5551(255, 255, 240, 0) << 16) | GPACK_RGBA5551(255, 255, 240, 0));
|
||||
gSPDisplayList(&masterGfx[5], D_0E000000.clearFillRect);
|
||||
gDPSetColorImage(&masterGfx[6], G_IM_FMT_RGBA, G_IM_SIZ_16b, D_801FBBCC, D_0F000000);
|
||||
gDPSetColorImage(&masterGfx[6], G_IM_FMT_RGBA, G_IM_SIZ_16b, gCfbWidth, D_0F000000);
|
||||
gSPEndDisplayList(&masterGfx[7]);
|
||||
}
|
||||
|
||||
|
@ -1495,7 +1495,7 @@ void func_8012CF0C(GraphicsContext* gfxCtx, s32 clearFb, s32 clearZb, u8 r, u8 g
|
|||
|
||||
masterGfx = gGfxMasterDL->clearFrameBuffer;
|
||||
|
||||
gDPSetColorImage(&masterGfx[0], G_IM_FMT_RGBA, G_IM_SIZ_16b, D_801FBBCC, D_0F000000);
|
||||
gDPSetColorImage(&masterGfx[0], G_IM_FMT_RGBA, G_IM_SIZ_16b, gCfbWidth, D_0F000000);
|
||||
gDPSetCycleType(&masterGfx[1], G_CYC_FILL);
|
||||
gDPSetRenderMode(&masterGfx[2], G_RM_NOOP, G_RM_NOOP2);
|
||||
gDPSetFillColor(&masterGfx[3], (GPACK_RGBA5551(r, g, b, 1) << 16) | GPACK_RGBA5551(r, g, b, 1));
|
||||
|
@ -1505,7 +1505,7 @@ void func_8012CF0C(GraphicsContext* gfxCtx, s32 clearFb, s32 clearZb, u8 r, u8 g
|
|||
|
||||
masterGfx = gGfxMasterDL->clearFillRect;
|
||||
|
||||
gDPFillRectangle(&masterGfx[0], 0, 0, D_801FBBCC - 1, D_801FBBCE - 1);
|
||||
gDPFillRectangle(&masterGfx[0], 0, 0, gCfbWidth - 1, gCfbHeight - 1);
|
||||
gDPPipeSync(&masterGfx[1]);
|
||||
gSPEndDisplayList(&masterGfx[2]);
|
||||
|
||||
|
@ -1513,7 +1513,7 @@ void func_8012CF0C(GraphicsContext* gfxCtx, s32 clearFb, s32 clearZb, u8 r, u8 g
|
|||
|
||||
masterGfx = gGfxMasterDL->fillRect;
|
||||
|
||||
gDPFillRectangle(&masterGfx[0], 0, 0, D_801FBBCC, D_801FBBCE);
|
||||
gDPFillRectangle(&masterGfx[0], 0, 0, gCfbWidth, gCfbHeight);
|
||||
gDPPipeSync(&masterGfx[1]);
|
||||
gSPEndDisplayList(&masterGfx[2]);
|
||||
|
||||
|
|
|
@ -18,8 +18,8 @@ void View_ViewportToVp(Vp* dest, Viewport* src) {
|
|||
dest->vp.vtrans[2] = 0x01FF;
|
||||
dest->vp.vtrans[3] = 0;
|
||||
|
||||
if ((src->leftX == 0) && (src->rightX == SCREEN_WIDTH_HIGH_RES) && (src->topY == 0) &&
|
||||
(src->bottomY == SCREEN_HEIGHT_HIGH_RES)) {}
|
||||
if ((src->leftX == 0) && (src->rightX == HIRES_BUFFER_WIDTH) && (src->topY == 0) &&
|
||||
(src->bottomY == HIRES_BUFFER_HEIGHT)) {}
|
||||
}
|
||||
|
||||
void View_Init(View* view, GraphicsContext* gfxCtx) {
|
||||
|
|
|
@ -1,17 +1,377 @@
|
|||
#include "global.h"
|
||||
#include "ultra64/viint.h"
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_vimode/func_80140260.s")
|
||||
typedef struct {
|
||||
/* 0x00 */ u32 burst;
|
||||
/* 0x04 */ u32 vSync;
|
||||
/* 0x08 */ u32 hSync;
|
||||
/* 0x0C */ u32 leap;
|
||||
/* 0x10 */ u32 hStart;
|
||||
/* 0x14 */ u32 vStart;
|
||||
/* 0x18 */ u32 vBurst;
|
||||
} ViModeStruct; // size = 0x1C
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_vimode/func_8014026C.s")
|
||||
void ViMode_LogPrint(OSViMode* osViMode) {
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_vimode/func_80140730.s")
|
||||
/**
|
||||
* Configures the custom OSViMode for this ViMode
|
||||
*
|
||||
* @param viMode ViMode to configure the custom OSViMode for
|
||||
* @param type Identifying type for the OSViMode
|
||||
* @param tvType TV Type: NTSC, PAL, MPAL or FPAL
|
||||
* @param loRes Boolean: true = low resolution, false = high resolution.
|
||||
* Corresponds to "L" or "H" in libultra VI mode names
|
||||
* @param antialiasOff Boolean: true = point-sampling, false = anti-aliasing.
|
||||
* Corresponds to "P" or "A" in libultra VI mode names
|
||||
* @param modeN Boolean: controls interlacing mode, different based on resolution.
|
||||
* Corresponds to "N" or "F" in libultra VI mode names
|
||||
* @param fb16Bit Bolean: true = 16-bit framebuffer, false = 32-bit framebuffer.
|
||||
* Corresponds to "1" or "2" in libultra VI mode names
|
||||
* @param width Screen width
|
||||
* @param height Screen height
|
||||
* @param leftAdjust Left edge adjustment
|
||||
* @param rightAdjust Right edge adjustment
|
||||
* @param upperAdjust Upper edge adjustment
|
||||
* @param lowerAdjust Lower edge adjustment
|
||||
*/
|
||||
void ViMode_Configure(OSViMode* viMode, s32 type, s32 tvType, s32 loRes, s32 antialiasOff, s32 modeN, s32 fb16Bit,
|
||||
s32 width, s32 height, s32 leftAdjust, s32 rightAdjust, s32 upperAdjust, s32 lowerAdjust) {
|
||||
s32 hiRes;
|
||||
s32 antialiasOn;
|
||||
s32 modeF;
|
||||
s32 fb32Bit;
|
||||
s32 hiResDeflicker; // deflickered interlacing
|
||||
s32 hiResInterlaced;
|
||||
s32 loResDeinterlaced;
|
||||
s32 loResInterlaced;
|
||||
s32 modeLAN1; // L=(lo res) A=(antialias) N=(deinterlace) 1=(16-bit)
|
||||
s32 modeLPN2; // L=(lo res) P=(point-sampled) N=(deinterlace) 2=(32-bit)
|
||||
s32 modeHPN2; // H=(hi res) P=(point-sampled) N=(normal interlacing) 2=(32-bit)
|
||||
s32 yScaleLo;
|
||||
s32 yScaleHiEvenField;
|
||||
s32 yScaleHiOddField;
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_vimode/func_80140810.s")
|
||||
hiRes = !loRes;
|
||||
antialiasOn = !antialiasOff;
|
||||
modeF = !modeN;
|
||||
fb32Bit = !fb16Bit;
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_vimode/func_80140898.s")
|
||||
hiResDeflicker = hiRes && modeF;
|
||||
hiResInterlaced = hiRes && modeN;
|
||||
loResDeinterlaced = loRes && modeN;
|
||||
loResInterlaced = loRes && modeF;
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_vimode/func_80140900.s")
|
||||
modeLAN1 = loRes && antialiasOn && modeN && fb16Bit;
|
||||
modeLPN2 = loRes && antialiasOff && modeN && fb32Bit;
|
||||
modeHPN2 = hiRes && antialiasOff && modeN && fb32Bit;
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_vimode/func_8014090C.s")
|
||||
upperAdjust &= ~1;
|
||||
lowerAdjust &= ~1;
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_vimode/func_80140970.s")
|
||||
yScaleLo = (hiResDeflicker ? 2 : 1) * (((SCREEN_HEIGHT << 11) / SCREEN_HEIGHT) / (loRes ? 1 : 2));
|
||||
|
||||
yScaleHiEvenField = modeF ? (loResInterlaced ? 0x1000000 : 0x2000000) : 0;
|
||||
yScaleHiOddField = modeF ? (loResInterlaced ? 0x3000000 : 0x2000000) : 0;
|
||||
|
||||
viMode->type = type;
|
||||
viMode->comRegs.ctrl = OS_VI_UNK2000 | OS_VI_UNK1000 | OS_VI_GAMMA | OS_VI_GAMMA_DITHER |
|
||||
(!loResDeinterlaced ? OS_VI_UNK40 : 0) | (antialiasOn ? OS_VI_DIVOT : 0) |
|
||||
(fb32Bit ? OS_VI_UNK2 | OS_VI_UNK1 : OS_VI_UNK2);
|
||||
|
||||
if (modeLAN1) {
|
||||
// Anti-aliased, fetch extra lines as-needed
|
||||
viMode->comRegs.ctrl |= 0x100;
|
||||
} else if (modeLPN2 | modeHPN2) {
|
||||
// Point-sampled, resampling disabled
|
||||
viMode->comRegs.ctrl |= 0x300;
|
||||
} else {
|
||||
if (antialiasOff) {
|
||||
// Point-sampled, resampling enabled
|
||||
viMode->comRegs.ctrl |= 0x200;
|
||||
} else {
|
||||
// Anti-aliased, always fetch extra lines
|
||||
viMode->comRegs.ctrl |= 0;
|
||||
}
|
||||
}
|
||||
|
||||
viMode->comRegs.width = width * (hiResInterlaced ? 2 : 1);
|
||||
|
||||
if (tvType < 3) {
|
||||
static const ViModeStruct D_801DF0C0[] = {
|
||||
{
|
||||
// OS_TV_PAL
|
||||
BURST(58, 35, 4, 64),
|
||||
VSYNC(624),
|
||||
HSYNC(3177, 21),
|
||||
LEAP(3183, 3182),
|
||||
HSTART(128, 768),
|
||||
START(95, 569),
|
||||
BURST(107, 2, 9, 0),
|
||||
},
|
||||
{
|
||||
// OS_TV_NTSC
|
||||
BURST(57, 34, 5, 62),
|
||||
VSYNC(524),
|
||||
HSYNC(3093, 0),
|
||||
LEAP(3093, 3093),
|
||||
HSTART(108, 748),
|
||||
START(37, 511),
|
||||
BURST(4, 2, 14, 0),
|
||||
},
|
||||
{
|
||||
// OS_TV_MPAL
|
||||
BURST(57, 30, 5, 70),
|
||||
VSYNC(524),
|
||||
HSYNC(3088, 0),
|
||||
LEAP(3100, 3100),
|
||||
HSTART(108, 748),
|
||||
START(37, 511),
|
||||
BURST(4, 2, 14, 0),
|
||||
},
|
||||
};
|
||||
const ViModeStruct* ptr = &D_801DF0C0[tvType];
|
||||
|
||||
viMode->comRegs.burst = ptr->burst;
|
||||
viMode->comRegs.vSync = ptr->vSync;
|
||||
viMode->comRegs.hSync = ptr->hSync;
|
||||
viMode->comRegs.leap = ptr->leap;
|
||||
viMode->comRegs.hStart = ptr->hStart;
|
||||
viMode->fldRegs[0].vStart = ptr->vStart;
|
||||
viMode->fldRegs[1].vStart = ptr->vStart;
|
||||
viMode->fldRegs[0].vBurst = ptr->vBurst;
|
||||
viMode->fldRegs[1].vBurst = ptr->vBurst;
|
||||
} else {
|
||||
__assert("../z_vimode.c", 216);
|
||||
}
|
||||
|
||||
viMode->comRegs.hStart += (leftAdjust << 16) + (s16)rightAdjust;
|
||||
viMode->fldRegs[0].vStart += (upperAdjust << 16) + (s16)lowerAdjust;
|
||||
viMode->fldRegs[1].vStart += (upperAdjust << 16) + (s16)lowerAdjust;
|
||||
|
||||
if (loResDeinterlaced) {
|
||||
viMode->comRegs.vSync++;
|
||||
if (tvType == OS_TV_MPAL) {
|
||||
viMode->comRegs.hSync += HSYNC(1, 4);
|
||||
viMode->comRegs.leap += LEAP((u16)-4, (u16)-2);
|
||||
}
|
||||
} else {
|
||||
viMode->fldRegs[0].vStart += START((u16)-3, (u16)-2);
|
||||
if (tvType == OS_TV_MPAL) {
|
||||
viMode->fldRegs[0].vBurst += BURST((u8)-2, (u8)-1, 12, -1);
|
||||
} else if (tvType == OS_TV_PAL) {
|
||||
viMode->fldRegs[1].vBurst += BURST((u8)-2, (u8)-1, 2, 0);
|
||||
}
|
||||
}
|
||||
|
||||
viMode->comRegs.xScale = (SCREEN_WIDTH << 10) / SCREEN_WIDTH;
|
||||
viMode->comRegs.vCurrent = 0;
|
||||
|
||||
viMode->fldRegs[0].origin = ORIGIN(width * 2 * (fb16Bit ? 1 : 2));
|
||||
viMode->fldRegs[1].origin = ORIGIN(width * 2 * (fb16Bit ? 1 : 2) * (loRes ? 1 : 2));
|
||||
|
||||
viMode->fldRegs[0].yScale = yScaleLo | yScaleHiEvenField;
|
||||
viMode->fldRegs[1].yScale = yScaleLo | yScaleHiOddField;
|
||||
|
||||
viMode->fldRegs[0].vIntr = 2;
|
||||
viMode->fldRegs[1].vIntr = 2;
|
||||
}
|
||||
|
||||
void ViMode_Save(ViMode* viMode) {
|
||||
R_VI_MODE_EDIT_STATE = viMode->editState;
|
||||
R_VI_MODE_EDIT_WIDTH = viMode->viWidth;
|
||||
R_VI_MODE_EDIT_HEIGHT = viMode->viHeight;
|
||||
R_VI_MODE_EDIT_ULY_ADJ = viMode->upperAdjust;
|
||||
R_VI_MODE_EDIT_LRY_ADJ = viMode->lowerAdjust;
|
||||
R_VI_MODE_EDIT_ULX_ADJ = viMode->leftAdjust;
|
||||
R_VI_MODE_EDIT_LRX_ADJ = viMode->rightAdjust;
|
||||
|
||||
if (SREG(58) == 1) {
|
||||
SREG(58) = 0;
|
||||
switch (SREG(59)) {
|
||||
case 1:
|
||||
ViMode_LogPrint(&osViModePalLan1);
|
||||
break;
|
||||
|
||||
case 2:
|
||||
ViMode_LogPrint(&osViModeFpalLan1);
|
||||
break;
|
||||
|
||||
default:
|
||||
ViMode_LogPrint(&viMode->customViMode);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void ViMode_Load(ViMode* viMode) {
|
||||
//! @bug This condition always fails as the lowest bit is masked out to 0
|
||||
if ((R_VI_MODE_EDIT_WIDTH & ~3) == 1) {
|
||||
R_VI_MODE_EDIT_WIDTH += 4;
|
||||
}
|
||||
|
||||
viMode->editState = R_VI_MODE_EDIT_STATE;
|
||||
viMode->viWidth = R_VI_MODE_EDIT_WIDTH & ~3;
|
||||
viMode->viHeight = R_VI_MODE_EDIT_HEIGHT;
|
||||
viMode->upperAdjust = R_VI_MODE_EDIT_ULY_ADJ;
|
||||
viMode->lowerAdjust = R_VI_MODE_EDIT_LRY_ADJ;
|
||||
viMode->leftAdjust = R_VI_MODE_EDIT_ULX_ADJ;
|
||||
viMode->rightAdjust = R_VI_MODE_EDIT_LRX_ADJ;
|
||||
}
|
||||
|
||||
void ViMode_Init(ViMode* viMode) {
|
||||
viMode->editState = VI_MODE_EDIT_STATE_INACTIVE;
|
||||
viMode->viWidth = SCREEN_WIDTH;
|
||||
viMode->viHeight = SCREEN_HEIGHT;
|
||||
viMode->leftAdjust = 0;
|
||||
viMode->rightAdjust = 0;
|
||||
viMode->upperAdjust = 0;
|
||||
viMode->lowerAdjust = 0;
|
||||
viMode->viFeatures = OS_VI_DITHER_FILTER_ON | OS_VI_GAMMA_OFF;
|
||||
viMode->tvType = osTvType;
|
||||
viMode->fb16Bit = true;
|
||||
viMode->modeN = true;
|
||||
viMode->antialiasOff = false;
|
||||
viMode->loRes = true;
|
||||
|
||||
ViMode_Save(viMode);
|
||||
}
|
||||
|
||||
void ViMode_Destroy(ViMode* viMode) {
|
||||
}
|
||||
|
||||
void ViMode_ConfigureFeatures(ViMode* viMode, s32 viFeatures) {
|
||||
u32 ctrl = viMode->customViMode.comRegs.ctrl;
|
||||
|
||||
if (viFeatures & OS_VI_GAMMA_ON) {
|
||||
ctrl |= OS_VI_GAMMA;
|
||||
}
|
||||
if (viFeatures & OS_VI_GAMMA_OFF) {
|
||||
ctrl &= ~OS_VI_GAMMA;
|
||||
}
|
||||
if (viFeatures & OS_VI_GAMMA_DITHER_ON) {
|
||||
ctrl |= OS_VI_GAMMA_DITHER;
|
||||
}
|
||||
if (viFeatures & OS_VI_GAMMA_DITHER_OFF) {
|
||||
ctrl &= ~OS_VI_GAMMA_DITHER;
|
||||
}
|
||||
if (viFeatures & OS_VI_DIVOT_ON) {
|
||||
ctrl |= OS_VI_DIVOT;
|
||||
}
|
||||
if (viFeatures & OS_VI_DIVOT_OFF) {
|
||||
ctrl &= ~OS_VI_DIVOT;
|
||||
}
|
||||
viMode->customViMode.comRegs.ctrl = ctrl;
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates the custom VI mode with controller input and any edits made with the REG editor
|
||||
* (through R_VI_MODE_EDIT_* entries)
|
||||
*/
|
||||
void ViMode_Update(ViMode* viMode, Input* input) {
|
||||
ViMode_Load(viMode);
|
||||
|
||||
if ((viMode->editState == VI_MODE_EDIT_STATE_ACTIVE) || (viMode->editState == VI_MODE_EDIT_STATE_2) ||
|
||||
(viMode->editState == VI_MODE_EDIT_STATE_3)) {
|
||||
gScreenWidth = viMode->viWidth;
|
||||
gScreenHeight = viMode->viHeight;
|
||||
|
||||
// Controls to reset the ViMode to defaults
|
||||
if (CHECK_BTN_ALL(input->cur.button, BTN_START | BTN_CUP | BTN_CRIGHT)) {
|
||||
ViMode_Init(viMode);
|
||||
}
|
||||
|
||||
// Controls to adjust the screen dimensions (upper-left)
|
||||
if (CHECK_BTN_ALL(input->cur.button, BTN_CUP)) {
|
||||
if (CHECK_BTN_ALL(input->cur.button, BTN_DUP)) {
|
||||
viMode->upperAdjust--;
|
||||
}
|
||||
if (CHECK_BTN_ALL(input->cur.button, BTN_DDOWN)) {
|
||||
viMode->upperAdjust++;
|
||||
}
|
||||
if (CHECK_BTN_ALL(input->cur.button, BTN_DLEFT)) {
|
||||
viMode->leftAdjust--;
|
||||
}
|
||||
if (CHECK_BTN_ALL(input->cur.button, BTN_DRIGHT)) {
|
||||
viMode->leftAdjust++;
|
||||
}
|
||||
}
|
||||
|
||||
// Controls to adjust the screen dimensions (lower-right)
|
||||
if (CHECK_BTN_ALL(input->cur.button, BTN_CRIGHT)) {
|
||||
if (CHECK_BTN_ALL(input->cur.button, BTN_DUP)) {
|
||||
viMode->lowerAdjust--;
|
||||
}
|
||||
if (CHECK_BTN_ALL(input->cur.button, BTN_DDOWN)) {
|
||||
viMode->lowerAdjust++;
|
||||
}
|
||||
if (CHECK_BTN_ALL(input->cur.button, BTN_DLEFT)) {
|
||||
viMode->rightAdjust--;
|
||||
}
|
||||
if (CHECK_BTN_ALL(input->cur.button, BTN_DRIGHT)) {
|
||||
viMode->rightAdjust++;
|
||||
}
|
||||
}
|
||||
|
||||
// Controls to adjust key features
|
||||
if (CHECK_BTN_ALL(input->cur.button, BTN_CDOWN)) {
|
||||
if (CHECK_BTN_ALL(input->press.button, BTN_DUP)) {
|
||||
viMode->loRes = !viMode->loRes;
|
||||
}
|
||||
if (CHECK_BTN_ALL(input->press.button, BTN_DDOWN)) {
|
||||
viMode->antialiasOff = !viMode->antialiasOff;
|
||||
}
|
||||
if (CHECK_BTN_ALL(input->press.button, BTN_DLEFT)) {
|
||||
viMode->modeN = !viMode->modeN;
|
||||
}
|
||||
if (CHECK_BTN_ALL(input->press.button, BTN_DRIGHT)) {
|
||||
viMode->fb16Bit = !viMode->fb16Bit;
|
||||
}
|
||||
}
|
||||
|
||||
// Clamp adjustments
|
||||
if (viMode->editState >= VI_MODE_EDIT_STATE_2) {
|
||||
// Allow parts of the framebuffer to possibly be offscreen by a small margin
|
||||
if (viMode->leftAdjust < -16) {
|
||||
viMode->leftAdjust = -16;
|
||||
}
|
||||
if (viMode->upperAdjust < -50) {
|
||||
viMode->upperAdjust = -50;
|
||||
}
|
||||
if (viMode->rightAdjust > 16) {
|
||||
viMode->rightAdjust = 16;
|
||||
}
|
||||
if (viMode->lowerAdjust > 50) {
|
||||
viMode->lowerAdjust = 50;
|
||||
}
|
||||
} else {
|
||||
// Do not allow parts of the framebuffer to end up offscreen
|
||||
if (viMode->leftAdjust < 0) {
|
||||
viMode->leftAdjust = 0;
|
||||
}
|
||||
if (viMode->upperAdjust < 0) {
|
||||
viMode->upperAdjust = 0;
|
||||
}
|
||||
if (viMode->rightAdjust > 0) {
|
||||
viMode->rightAdjust = 0;
|
||||
}
|
||||
if (viMode->lowerAdjust > 0) {
|
||||
viMode->lowerAdjust = 0;
|
||||
}
|
||||
}
|
||||
|
||||
ViMode_Configure(&viMode->customViMode, OS_VI_UNK28, osTvType, viMode->loRes, viMode->antialiasOff,
|
||||
viMode->modeN, viMode->fb16Bit, viMode->viWidth, viMode->viHeight, viMode->leftAdjust,
|
||||
viMode->rightAdjust, viMode->upperAdjust, viMode->lowerAdjust);
|
||||
ViMode_ConfigureFeatures(viMode, viMode->viFeatures);
|
||||
|
||||
if (viMode->editState == VI_MODE_EDIT_STATE_3) {
|
||||
// Log comparison between the NTSC LAN1 mode and the custom mode
|
||||
ViMode_LogPrint(&osViModeNtscLan1);
|
||||
ViMode_LogPrint(&viMode->customViMode);
|
||||
viMode->editState = VI_MODE_EDIT_STATE_2;
|
||||
}
|
||||
}
|
||||
|
||||
ViMode_Save(viMode);
|
||||
}
|
||||
|
|
|
@ -0,0 +1,90 @@
|
|||
#include "global.h"
|
||||
|
||||
Gfx D_801C5DD0[] = {
|
||||
gsDPSetOtherMode(G_AD_PATTERN | G_CD_MAGICSQ | G_CK_NONE | G_TC_CONV | G_TF_POINT | G_TT_NONE | G_TL_TILE |
|
||||
G_TD_CLAMP | G_TP_NONE | G_CYC_1CYCLE | G_PM_NPRIMITIVE,
|
||||
G_AC_NONE | G_ZS_PRIM | G_RM_VISCVG | G_RM_VISCVG2),
|
||||
gsSPBranchList(D_0E000000.fillRect),
|
||||
};
|
||||
|
||||
Gfx D_801C5DE0[] = {
|
||||
gsDPSetOtherMode(G_AD_PATTERN | G_CD_MAGICSQ | G_CK_NONE | G_TC_CONV | G_TF_POINT | G_TT_NONE | G_TL_TILE |
|
||||
G_TD_CLAMP | G_TP_NONE | G_CYC_1CYCLE | G_PM_NPRIMITIVE,
|
||||
G_AC_NONE | G_ZS_PRIM | IM_RD | CVG_DST_CLAMP | ZMODE_OPA | FORCE_BL |
|
||||
GBL_c1(G_BL_CLR_FOG, G_BL_A_FOG, G_BL_CLR_MEM, G_BL_A_MEM) |
|
||||
GBL_c2(G_BL_CLR_FOG, G_BL_A_FOG, G_BL_CLR_MEM, G_BL_A_MEM)),
|
||||
gsSPBranchList(D_0E000000.fillRect),
|
||||
};
|
||||
|
||||
Gfx D_801C5DF0[] = {
|
||||
gsDPSetOtherMode(G_AD_PATTERN | G_CD_MAGICSQ | G_CK_NONE | G_TC_CONV | G_TF_POINT | G_TT_NONE | G_TL_TILE |
|
||||
G_TD_CLAMP | G_TP_NONE | G_CYC_1CYCLE | G_PM_NPRIMITIVE,
|
||||
G_AC_NONE | G_ZS_PRIM | IM_RD | CVG_DST_CLAMP | ZMODE_OPA | FORCE_BL |
|
||||
GBL_c1(G_BL_CLR_IN, G_BL_0, G_BL_CLR_MEM, G_BL_A_MEM) |
|
||||
GBL_c2(G_BL_CLR_IN, G_BL_0, G_BL_CLR_MEM, G_BL_A_MEM)),
|
||||
gsSPBranchList(D_0E000000.fillRect),
|
||||
};
|
||||
|
||||
Gfx D_801C5E00[] = {
|
||||
gsDPSetCombineMode(G_CC_PRIMITIVE, G_CC_PRIMITIVE),
|
||||
gsDPSetOtherMode(G_AD_NOTPATTERN | G_CD_DISABLE | G_CK_NONE | G_TC_CONV | G_TF_POINT | G_TT_NONE | G_TL_TILE |
|
||||
G_TD_CLAMP | G_TP_NONE | G_CYC_1CYCLE | G_PM_NPRIMITIVE,
|
||||
G_AC_NONE | G_ZS_PRIM | G_RM_CLD_SURF | G_RM_CLD_SURF2),
|
||||
gsSPDisplayList(D_0E000000.fillRect),
|
||||
gsDPSetOtherMode(G_AD_PATTERN | G_CD_MAGICSQ | G_CK_NONE | G_TC_CONV | G_TF_POINT | G_TT_NONE | G_TL_TILE |
|
||||
G_TD_CLAMP | G_TP_NONE | G_CYC_1CYCLE | G_PM_NPRIMITIVE,
|
||||
G_AC_NONE | G_ZS_PRIM | IM_RD | CVG_DST_CLAMP | ZMODE_OPA | FORCE_BL |
|
||||
GBL_c1(G_BL_CLR_IN, G_BL_0, G_BL_CLR_MEM, G_BL_A_MEM) |
|
||||
GBL_c2(G_BL_CLR_IN, G_BL_0, G_BL_CLR_MEM, G_BL_A_MEM)),
|
||||
gsSPBranchList(D_0E000000.fillRect),
|
||||
};
|
||||
|
||||
void VisCvg_Init(struct_801F8010* this) {
|
||||
this->type = 0;
|
||||
this->setScissor = false;
|
||||
this->color.r = 255;
|
||||
this->color.g = 255;
|
||||
this->color.b = 255;
|
||||
this->color.a = 255;
|
||||
}
|
||||
|
||||
void VisCvg_Destroy(struct_801F8010* this) {
|
||||
}
|
||||
|
||||
void VisCvg_Draw(struct_801F8010* this, Gfx** gfxp) {
|
||||
Gfx* gfx = *gfxp;
|
||||
|
||||
gDPPipeSync(gfx++);
|
||||
gDPSetPrimDepth(gfx++, -1, -1);
|
||||
|
||||
if (this->setScissor == true) {
|
||||
gSPDisplayList(gfx++, D_0E000000.setScissor);
|
||||
}
|
||||
|
||||
switch (this->type) {
|
||||
case 1:
|
||||
gSPDisplayList(gfx++, D_801C5DF0);
|
||||
break;
|
||||
|
||||
case 2:
|
||||
gDPSetColor(gfx++, G_SETPRIMCOLOR, this->color.rgba);
|
||||
gSPDisplayList(gfx++, D_801C5E00);
|
||||
break;
|
||||
|
||||
case 3:
|
||||
gDPSetColor(gfx++, G_SETBLENDCOLOR, this->color.rgba);
|
||||
gSPDisplayList(gfx++, D_801C5DD0);
|
||||
break;
|
||||
|
||||
case 4:
|
||||
gDPSetColor(gfx++, G_SETFOGCOLOR, this->color.rgba);
|
||||
gSPDisplayList(gfx++, D_801C5DE0);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
gDPPipeSync(gfx++);
|
||||
*gfxp = gfx;
|
||||
}
|
|
@ -1,6 +1,6 @@
|
|||
#include "global.h"
|
||||
|
||||
#define VISZBUF_ZBUFFRAG_HEIGHT (TMEM_SIZE / (D_801FBBCC * G_IM_SIZ_16b_BYTES))
|
||||
#define VISZBUF_ZBUFFRAG_HEIGHT (TMEM_SIZE / (gCfbWidth * G_IM_SIZ_16b_BYTES))
|
||||
|
||||
void VisZbuf_Init(VisZbuf* this) {
|
||||
this->useRgba = false;
|
||||
|
@ -42,12 +42,12 @@ void VisZbuf_Draw(VisZbuf* this, Gfx** gfxP, void* zbuffer) {
|
|||
gDPSetColor(gfx++, G_SETPRIMCOLOR, this->primColor.rgba);
|
||||
gDPSetColor(gfx++, G_SETENVCOLOR, this->envColor.rgba);
|
||||
|
||||
for (y = 0; y < (D_801FBBCE - height) + 1; y += height) {
|
||||
gDPLoadTextureTile(gfx++, zbuffer, fmt, G_IM_SIZ_16b, D_801FBBCC, 0, 0, y, D_801FBBCC - 1, (y + height) - 1, 0,
|
||||
for (y = 0; y < (gCfbHeight - height) + 1; y += height) {
|
||||
gDPLoadTextureTile(gfx++, zbuffer, fmt, G_IM_SIZ_16b, gCfbWidth, 0, 0, y, gCfbWidth - 1, (y + height) - 1, 0,
|
||||
G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD,
|
||||
G_TX_NOLOD);
|
||||
|
||||
gSPTextureRectangle(gfx++, 0, y << 2, D_801FBBCC << 2, (y + height) << 2, G_TX_RENDERTILE, 0, y << 5, 1 << 10,
|
||||
gSPTextureRectangle(gfx++, 0, y << 2, gCfbWidth << 2, (y + height) << 2, G_TX_RENDERTILE, 0, y << 5, 1 << 10,
|
||||
1 << 10);
|
||||
}
|
||||
|
||||
|
|
|
@ -1,34 +1,35 @@
|
|||
#include "global.h"
|
||||
#include "ultra64/viint.h"
|
||||
|
||||
OSViMode osViModeMpalLan1 = {
|
||||
OS_VI_MPAL_LAN1, // type
|
||||
{
|
||||
// comRegs
|
||||
0x311E, // ctrl
|
||||
SCREEN_WIDTH, // width
|
||||
0x4651E39, // burst
|
||||
0x20D, // vSync
|
||||
0x40C11, // hSync
|
||||
0xC190C1A, // leap
|
||||
0x6C02EC, // hStart
|
||||
0x200, // xScale
|
||||
0, // vCurrent
|
||||
0x311E, // ctrl
|
||||
WIDTH(320), // width
|
||||
BURST(57, 30, 5, 70), // burst
|
||||
VSYNC(525), // vSync
|
||||
HSYNC(3089, 4), // hSync
|
||||
LEAP(3097, 3098), // leap
|
||||
HSTART(108, 748), // hStart
|
||||
SCALE(2, 0), // xScale
|
||||
VCURRENT(0), // vCurrent
|
||||
},
|
||||
{ // fldRegs
|
||||
{
|
||||
// [0]
|
||||
0x280, // origin
|
||||
0x400, // yScale
|
||||
0x2501FF, // vStart
|
||||
0xE0204, // vBurst
|
||||
2, // vIntr
|
||||
ORIGIN(640), // origin
|
||||
SCALE(1, 0), // yScale
|
||||
START(37, 511), // vStart
|
||||
BURST(4, 2, 14, 0), // vBurst
|
||||
VINTR(2), // vIntr
|
||||
},
|
||||
{
|
||||
// [1]
|
||||
0x280, // origin
|
||||
0x400, // yScale
|
||||
0x2501FF, // vStart
|
||||
0xE0204, // vBurst
|
||||
2, // vIntr
|
||||
ORIGIN(640), // origin
|
||||
SCALE(1, 0), // yScale
|
||||
START(37, 511), // vStart
|
||||
BURST(4, 2, 14, 0), // vBurst
|
||||
VINTR(2), // vIntr
|
||||
} },
|
||||
};
|
||||
|
|
|
@ -1,34 +1,35 @@
|
|||
#include "global.h"
|
||||
#include "ultra64/viint.h"
|
||||
|
||||
OSViMode osViModeNtscHpf1 = {
|
||||
OS_VI_NTSC_HPF1, // type
|
||||
{
|
||||
// comRegs
|
||||
0x324E, // ctrl
|
||||
640, // width
|
||||
0x3E52239, // burst
|
||||
0x20C, // vSync
|
||||
0xC15, // hSync
|
||||
0xC150C15, // leap
|
||||
0x6C02EC, // hStart
|
||||
0x400, // xScale
|
||||
0, // vCurrent
|
||||
0x324E, // ctrl
|
||||
WIDTH(640), // width
|
||||
BURST(57, 34, 5, 62), // 0x3E52239, // burst
|
||||
VSYNC(524), // vSync
|
||||
HSYNC(3093, 0), // hSync
|
||||
LEAP(3093, 3093), // leap
|
||||
HSTART(108, 748), // 0x6C02EC, // hStart
|
||||
SCALE(1, 0), // xScale
|
||||
VCURRENT(0), // vCurrent
|
||||
},
|
||||
{ // fldRegs
|
||||
{
|
||||
// [0]
|
||||
0x500, // origin
|
||||
0x2000800, // yScale
|
||||
0x2301FD, // vStart
|
||||
0xE0204, // vBurst
|
||||
2, // vIntr
|
||||
ORIGIN(1280), // origin
|
||||
SCALE(0.5, 0.5), // 0x2000800, // yScale
|
||||
START(35, 509), // vStart
|
||||
BURST(4, 2, 14, 0), // vBurst
|
||||
VINTR(2), // vIntr
|
||||
},
|
||||
{
|
||||
// [1]
|
||||
0xA00, // origin
|
||||
0x2000800, // yScale
|
||||
0x2501FF, // vStart
|
||||
0xE0204, // vBurst
|
||||
2 // vIntr
|
||||
ORIGIN(2560), // origin
|
||||
SCALE(0.5, 0.5), // 0x2000800, // yScale
|
||||
START(37, 511), // vStart
|
||||
BURST(4, 2, 14, 0), // vBurst
|
||||
VINTR(2) // vIntr
|
||||
} },
|
||||
};
|
||||
|
|
|
@ -1,34 +1,35 @@
|
|||
#include "global.h"
|
||||
#include "ultra64/viint.h"
|
||||
|
||||
OSViMode osViModeNtscLan1 = {
|
||||
OS_VI_NTSC_LAN1, // type
|
||||
{
|
||||
// comRegs
|
||||
0x311E, // ctrl
|
||||
SCREEN_WIDTH, // width
|
||||
0x3E52239, // burst
|
||||
0x20D, // vSync
|
||||
0xC15, // hSync
|
||||
0xC150C15, // leap
|
||||
0x6C02EC, // hStart
|
||||
0x200, // xScale
|
||||
0, // vCurrent
|
||||
0x311E, // ctrl
|
||||
WIDTH(320), // width
|
||||
BURST(57, 34, 5, 62), // burst
|
||||
VSYNC(525), // vSync
|
||||
HSYNC(3093, 0), // hSync
|
||||
LEAP(3093, 3093), // leap
|
||||
HSTART(108, 748), // hStart
|
||||
SCALE(2, 0), // xScale
|
||||
VCURRENT(0), // vCurrent
|
||||
},
|
||||
{ // fldRegs
|
||||
{
|
||||
// [0]
|
||||
0x280, // origin
|
||||
0x400, // yScale
|
||||
0x2501FF, // vStart
|
||||
0xE0204, // vBurst
|
||||
2, // vIntr
|
||||
ORIGIN(640), // origin
|
||||
SCALE(1, 0), // yScale
|
||||
START(37, 511), // vStart
|
||||
BURST(4, 2, 14, 0), // vBurst
|
||||
VINTR(2), // vIntr
|
||||
},
|
||||
{
|
||||
// [1]
|
||||
0x280, // origin
|
||||
0x400, // yScale
|
||||
0x2501FF, // vStart
|
||||
0xE0204, // vBurst
|
||||
2, // vIntr
|
||||
ORIGIN(640), // origin
|
||||
SCALE(1, 0), // yScale
|
||||
START(37, 511), // vStart
|
||||
BURST(4, 2, 14, 0), // vBurst
|
||||
VINTR(2), // vIntr
|
||||
} },
|
||||
};
|
||||
|
|
|
@ -1,34 +1,35 @@
|
|||
#include "global.h"
|
||||
#include "ultra64/viint.h"
|
||||
|
||||
OSViMode osViModePalLan1 = {
|
||||
OS_VI_PAL_LAN1, // type
|
||||
{
|
||||
// comRegs
|
||||
0x311E, // ctrl
|
||||
SCREEN_WIDTH, // width
|
||||
0x4541E3A, // burst
|
||||
0x271, // vSync
|
||||
0x170C69, // hSync
|
||||
0xC6F0C6D, // leap
|
||||
0x800300, // hStart
|
||||
0x200, // xScale
|
||||
0, // vCurrent
|
||||
0x311E, // ctrl
|
||||
WIDTH(320), // width
|
||||
BURST(58, 30, 4, 69), // burst
|
||||
VSYNC(625), // vSync
|
||||
HSYNC(3177, 23), // hSync
|
||||
LEAP(3183, 3181), // leap
|
||||
HSTART(128, 768), // hStart
|
||||
SCALE(2, 0), // xScale
|
||||
VCURRENT(0), // vCurrent
|
||||
},
|
||||
{ // fldRegs
|
||||
{
|
||||
// [0]
|
||||
0x280, // origin
|
||||
0x400, // yScale
|
||||
0x5F0239, // vStart
|
||||
0x9026B, // vBurst
|
||||
2, // vIntr
|
||||
ORIGIN(640), // origin
|
||||
SCALE(1, 0), // yScale
|
||||
START(95, 569), // vStart
|
||||
BURST(107, 2, 9, 0), // vBurst
|
||||
VINTR(2), // vIntr
|
||||
},
|
||||
{
|
||||
// [1]
|
||||
0x280, // origin
|
||||
0x400, // yScale
|
||||
0x5F0239, // vStart
|
||||
0x9026B, // vBurst
|
||||
2 // vIntr
|
||||
ORIGIN(640), // origin
|
||||
SCALE(1, 0), // yScale
|
||||
START(95, 569), // vStart
|
||||
BURST(107, 2, 9, 0), // vBurst
|
||||
VINTR(2), // vIntr
|
||||
} },
|
||||
};
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
* Description: Kafei
|
||||
*/
|
||||
|
||||
#include "prevent_bss_reordering.h"
|
||||
#include "z_en_test3.h"
|
||||
#include "objects/object_test3/object_test3.h"
|
||||
#include "overlays/actors/ovl_En_Door/z_en_door.h"
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
* Description: Player
|
||||
*/
|
||||
|
||||
#include "prevent_bss_reordering.h"
|
||||
#include "global.h"
|
||||
#include "z64quake.h"
|
||||
#include "z64rumble.h"
|
||||
|
|
|
@ -81,7 +81,7 @@ void TransitionWipe5_Draw(void* thisx, Gfx** gfxP) {
|
|||
Gfx* gfx = *gfxP;
|
||||
s32 width = gScreenWidth;
|
||||
s32 height = gScreenHeight;
|
||||
void* sp50 = D_801FBB90;
|
||||
void* workBuffer = gWorkBuffer;
|
||||
TransitionWipe5* this = THIS;
|
||||
s32 alpha = (1.0f - this->unk_0C) * 255.0f;
|
||||
|
||||
|
@ -92,7 +92,7 @@ void TransitionWipe5_Draw(void* thisx, Gfx** gfxP) {
|
|||
G_AD_PATTERN | G_CD_MAGICSQ | G_CK_NONE | G_TC_CONV | G_TF_POINT | G_TT_NONE | G_TL_TILE |
|
||||
G_TD_CLAMP | G_TP_NONE | G_CYC_COPY | G_PM_NPRIMITIVE,
|
||||
G_AC_NONE | G_ZS_PIXEL | G_RM_NOOP | G_RM_NOOP2);
|
||||
func_8014116C(&gfx, D_0F000000, sp50, width, height, 1);
|
||||
func_8014116C(&gfx, D_0F000000, workBuffer, width, height, 1);
|
||||
} else {
|
||||
if (alpha == 255) {
|
||||
gDPSetOtherMode(gfx++,
|
||||
|
@ -108,7 +108,7 @@ void TransitionWipe5_Draw(void* thisx, Gfx** gfxP) {
|
|||
gDPSetEnvColor(gfx++, 255, 255, 255, alpha);
|
||||
gDPSetCombineLERP(gfx++, TEXEL0, 0, ENVIRONMENT, 0, 0, 0, 0, ENVIRONMENT, TEXEL0, 0, ENVIRONMENT, 0, 0, 0, 0,
|
||||
ENVIRONMENT);
|
||||
func_8014116C(&gfx, sp50, D_0F000000, width, height, 0);
|
||||
func_8014116C(&gfx, workBuffer, D_0F000000, width, height, 0);
|
||||
}
|
||||
gDPPipeSync(gfx++);
|
||||
gSPLoadUcode(gfx++, SysUcode_GetUCode(), SysUcode_GetUCodeData());
|
||||
|
|
|
@ -1707,7 +1707,7 @@
|
|||
0x800F4FC0:("Font_LoadMessageBoxEndIcon",),
|
||||
0x800F5004:("Font_LoadOrderedFont",),
|
||||
0x800F5090:("func_800F5090",),
|
||||
0x800F50D4:("func_800F50D4",),
|
||||
0x800F50D4:("Environment_ZBufValToFixedPoint",),
|
||||
0x800F510C:("Environment_Init",),
|
||||
0x800F5954:("func_800F5954",),
|
||||
0x800F5A8C:("Environment_LerpWeight",),
|
||||
|
@ -2748,17 +2748,17 @@
|
|||
0x8013FD74:("View_ApplyPerspectiveToOverlay",),
|
||||
0x80140024:("View_UpdateViewingMatrix",),
|
||||
0x801400CC:("View_ApplyTo",),
|
||||
0x80140260:("func_80140260",),
|
||||
0x8014026C:("func_8014026C",),
|
||||
0x80140730:("func_80140730",),
|
||||
0x80140810:("func_80140810",),
|
||||
0x80140898:("func_80140898",),
|
||||
0x80140900:("func_80140900",),
|
||||
0x8014090C:("func_8014090C",),
|
||||
0x80140970:("func_80140970",),
|
||||
0x80140CE0:("func_80140CE0",),
|
||||
0x80140D04:("func_80140D04",),
|
||||
0x80140D10:("func_80140D10",),
|
||||
0x80140260:("ViMode_LogPrint",),
|
||||
0x8014026C:("ViMode_Configure",),
|
||||
0x80140730:("ViMode_Save",),
|
||||
0x80140810:("ViMode_Load",),
|
||||
0x80140898:("ViMode_Init",),
|
||||
0x80140900:("ViMode_Destroy",),
|
||||
0x8014090C:("ViMode_ConfigureFeatures",),
|
||||
0x80140970:("ViMode_Update",),
|
||||
0x80140CE0:("VisCvg_Init",),
|
||||
0x80140D04:("VisCvg_Destroy",),
|
||||
0x80140D10:("VisCvg_Draw",),
|
||||
0x80140E80:("func_80140E80",),
|
||||
0x80140EA0:("func_80140EA0",),
|
||||
0x80140EAC:("func_80140EAC",),
|
||||
|
@ -3225,15 +3225,15 @@
|
|||
0x801780F0:("Mtx_SetTranslateScaleMtx",),
|
||||
0x801781EC:("Mtx_SetRotationMtx",),
|
||||
0x8017842C:("Mtx_SetTranslationRotationScaleMtx",),
|
||||
0x80178750:("func_80178750",),
|
||||
0x80178818:("func_80178818",),
|
||||
0x80178978:("func_80178978",),
|
||||
0x801789D4:("func_801789D4",),
|
||||
0x801789EC:("SysCfb_GetFbPtr",),
|
||||
0x80178750:("SysCfb_SetLoResMode",),
|
||||
0x80178818:("SysCfb_SetHiResMode",),
|
||||
0x80178978:("SysCfb_Init",),
|
||||
0x801789D4:("SysCfb_Reset",),
|
||||
0x801789EC:("SysCfb_GetFramebuffer",),
|
||||
0x80178A14:("SysCfb_GetZBuffer",),
|
||||
0x80178A24:("func_80178A24",),
|
||||
0x80178A34:("func_80178A34",),
|
||||
0x80178A94:("func_80178A94",),
|
||||
0x80178A24:("SysCfb_GetWorkBuffer",),
|
||||
0x80178A34:("SysCfb_GetZBufferPixel",),
|
||||
0x80178A94:("SysCfb_GetZBufferInt",),
|
||||
0x80178AC0:("func_80178AC0",),
|
||||
0x80178C80:("CmpDma_GetFileInfo",),
|
||||
0x80178D7C:("CmpDma_Decompress",),
|
||||
|
|
|
@ -4051,7 +4051,7 @@
|
|||
0x801F8010:("D_801F8010","struct_801F8010","",0x10),
|
||||
0x801F8020:("sVisZbuf","VisZbuf","",0x10),
|
||||
0x801F8030:("sMonoColors","VisMono","",0x18),
|
||||
0x801F8048:("D_801F8048","UNK_TYPE1","",0x1),
|
||||
0x801F8048:("D_801F8048","ViMode","",0x88),
|
||||
0x801F80D0:("sGraphFaultAddrConvClient","FaultAddrConvClient","",0xc),
|
||||
0x801F80E0:("sGraphFaultClient","FaultClient","",0x10),
|
||||
0x801F80F0:("gGfxMasterDL","Gfx*","",0x4),
|
||||
|
@ -4094,30 +4094,30 @@
|
|||
0x801FBB14:("D_801FBB14","UNK_TYPE1","",0x1),
|
||||
0x801FBB20:("gRDPTotalTime","UNK_TYPE1","",0x1),
|
||||
0x801FBB28:("D_801FBB28","UNK_TYPE1","",0x1),
|
||||
0x801FBB30:("D_801FBB30","OSViMode","",0x50),
|
||||
0x801FBB30:("sNotebookViMode","OSViMode","",0x50),
|
||||
0x801FBB80:("gFramebuffers","u32*","[2]",0x8),
|
||||
0x801FBB88:("D_801FBB88","OSViMode*","",0x4),
|
||||
0x801FBB88:("gActiveViMode","OSViMode*","",0x4),
|
||||
0x801FBB8C:("gZBufferPtr","u16*","",0x4),
|
||||
0x801FBB90:("D_801FBB90","UNK_TYPE4","",0x4),
|
||||
0x801FBB90:("gWorkBuffer","UNK_TYPE4","",0x4),
|
||||
0x801FBB94:("gGfxSPTaskOutputBufferPtr","UNK_TYPE1","",0x1),
|
||||
0x801FBB98:("gGfxSPTaskOutputBufferSize","UNK_TYPE1","",0x1),
|
||||
0x801FBB9C:("D_801FBB9C","UNK_TYPE1","",0x1),
|
||||
0x801FBBA0:("D_801FBBA0","UNK_TYPE1","",0x1),
|
||||
0x801FBBA4:("gZBuffer","u16*","",0x4),
|
||||
0x801FBBA8:("gWorkBuffer","u16**","",0x4),
|
||||
0x801FBBAC:("gGfxSPTaskOutputBuffer","u16**","",0x4),
|
||||
0x801FBBB0:("gGfxSPTaskOutputBufferEnd","UNK_TYPE1","",0x1),
|
||||
0x801FBBB4:("D_801FBBB4","UNK_TYPE1","",0x1),
|
||||
0x801FBBB8:("D_801FBBB8","UNK_TYPE1","",0x1),
|
||||
0x801FBBBC:("D_801FBBBC","UNK_TYPE1","",0x1),
|
||||
0x801FBBC0:("D_801FBBC0","UNK_TYPE1","",0x1),
|
||||
0x801FBBC4:("gGfxSPTaskOutputBuffer2","UNK_TYPE1","",0x1),
|
||||
0x801FBBC8:("gGfxSPTaskOutputBufferEnd2","UNK_TYPE1","",0x1),
|
||||
0x801FBBCC:("D_801FBBCC","UNK_TYPE2","",0x2),
|
||||
0x801FBBCE:("D_801FBBCE","UNK_TYPE2","",0x2),
|
||||
0x801FBBD0:("D_801FBBD0","UNK_TYPE1","",0x1),
|
||||
0x801FBBD2:("D_801FBBD2","UNK_TYPE1","",0x1),
|
||||
0x801FBBD4:("D_801FBBD4","UNK_TYPE1","",0x1),
|
||||
0x801FBB98:("gGfxSPTaskOutputBufferEnd","UNK_TYPE1","",0x1),
|
||||
0x801FBB9C:("sCfbLoRes1","UNK_TYPE1","",0x1),
|
||||
0x801FBBA0:("sCfbLoRes0","UNK_TYPE1","",0x1),
|
||||
0x801FBBA4:("gZBufferLoRes","u16*","",0x4),
|
||||
0x801FBBA8:("gWorkBufferLoRes","u16**","",0x4),
|
||||
0x801FBBAC:("gGfxSPTaskOutputBufferLoRes","u16**","",0x4),
|
||||
0x801FBBB0:("gGfxSPTaskOutputBufferEndLoRes","UNK_TYPE1","",0x1),
|
||||
0x801FBBB4:("sCfbHiRes1","UNK_TYPE1","",0x1),
|
||||
0x801FBBB8:("sCfbHiRes0","UNK_TYPE1","",0x1),
|
||||
0x801FBBBC:("gZBufferHiRes","UNK_TYPE1","",0x1),
|
||||
0x801FBBC0:("gWorkBufferHiRes","UNK_TYPE1","",0x1),
|
||||
0x801FBBC4:("gGfxSPTaskOutputBufferHiRes","UNK_TYPE1","",0x1),
|
||||
0x801FBBC8:("gGfxSPTaskOutputBufferEndHiRes","UNK_TYPE1","",0x1),
|
||||
0x801FBBCC:("gCfbWidth","UNK_TYPE2","",0x2),
|
||||
0x801FBBCE:("gCfbHeight","UNK_TYPE2","",0x2),
|
||||
0x801FBBD0:("gCfbLeftAdjust","UNK_TYPE1","",0x1),
|
||||
0x801FBBD2:("gCfbUpperAdjust","UNK_TYPE1","",0x1),
|
||||
0x801FBBD4:("gSysCfbHiResEnabled","UNK_TYPE1","",0x1),
|
||||
0x801FBBE0:("sDmaBuffer","u32","[2]",0x8),
|
||||
0x801FBBF0:("D_801FBBF0","Vec3f","",0xc),
|
||||
0x801FBC00:("Math3D_ColSphereTri_line","LineSegment","",0x18),
|
||||
|
|
|
@ -1221,7 +1221,7 @@ asm/non_matchings/code/z_kanfont/Font_LoadCharNES.s,Font_LoadCharNES,0x800F4F54,
|
|||
asm/non_matchings/code/z_kanfont/Font_LoadMessageBoxEndIcon.s,Font_LoadMessageBoxEndIcon,0x800F4FC0,0x11
|
||||
asm/non_matchings/code/z_kanfont/Font_LoadOrderedFont.s,Font_LoadOrderedFont,0x800F5004,0x23
|
||||
asm/non_matchings/code/z_kankyo/func_800F5090.s,func_800F5090,0x800F5090,0x11
|
||||
asm/non_matchings/code/z_kankyo/func_800F50D4.s,func_800F50D4,0x800F50D4,0xE
|
||||
asm/non_matchings/code/z_kankyo/Environment_ZBufValToFixedPoint.s,Environment_ZBufValToFixedPoint,0x800F50D4,0xE
|
||||
asm/non_matchings/code/z_kankyo/Environment_Init.s,Environment_Init,0x800F510C,0x212
|
||||
asm/non_matchings/code/z_kankyo/func_800F5954.s,func_800F5954,0x800F5954,0x4E
|
||||
asm/non_matchings/code/z_kankyo/Environment_LerpWeight.s,Environment_LerpWeight,0x800F5A8C,0x21
|
||||
|
@ -2270,9 +2270,9 @@ asm/non_matchings/code/z_vimode/func_80140898.s,func_80140898,0x80140898,0x1A
|
|||
asm/non_matchings/code/z_vimode/func_80140900.s,func_80140900,0x80140900,0x3
|
||||
asm/non_matchings/code/z_vimode/func_8014090C.s,func_8014090C,0x8014090C,0x19
|
||||
asm/non_matchings/code/z_vimode/func_80140970.s,func_80140970,0x80140970,0xDC
|
||||
asm/non_matchings/code/z_vimode/func_80140CE0.s,func_80140CE0,0x80140CE0,0x9
|
||||
asm/non_matchings/code/z_vimode/func_80140D04.s,func_80140D04,0x80140D04,0x3
|
||||
asm/non_matchings/code/z_vimode/func_80140D10.s,func_80140D10,0x80140D10,0x5C
|
||||
asm/non_matchings/code/z_vimode/VisCvg_Init.s,VisCvg_Init,0x80140CE0,0x9
|
||||
asm/non_matchings/code/z_vimode/VisCvg_Destroy.s,VisCvg_Destroy,0x80140D04,0x3
|
||||
asm/non_matchings/code/z_vimode/VisCvg_Draw.s,VisCvg_Draw,0x80140D10,0x5C
|
||||
asm/non_matchings/code/code_80140E80/func_80140E80.s,func_80140E80,0x80140E80,0x8
|
||||
asm/non_matchings/code/code_80140E80/func_80140EA0.s,func_80140EA0,0x80140EA0,0x3
|
||||
asm/non_matchings/code/code_80140E80/func_80140EAC.s,func_80140EAC,0x80140EAC,0x57
|
||||
|
@ -2739,15 +2739,15 @@ asm/non_matchings/code/speed_meter/SpeedMeter_DrawAllocEntries.s,SpeedMeter_Draw
|
|||
asm/non_matchings/code/speed_meter/func_801780F0.s,func_801780F0,0x801780F0,0x3F
|
||||
asm/non_matchings/code/speed_meter/func_801781EC.s,func_801781EC,0x801781EC,0x90
|
||||
asm/non_matchings/code/speed_meter/func_8017842C.s,func_8017842C,0x8017842C,0xC9
|
||||
asm/non_matchings/code/sys_cmpdma/func_80178750.s,func_80178750,0x80178750,0x32
|
||||
asm/non_matchings/code/sys_cmpdma/func_80178818.s,func_80178818,0x80178818,0x58
|
||||
asm/non_matchings/code/sys_cmpdma/func_80178978.s,func_80178978,0x80178978,0x17
|
||||
asm/non_matchings/code/sys_cmpdma/func_801789D4.s,func_801789D4,0x801789D4,0x6
|
||||
asm/non_matchings/code/sys_cmpdma/SysCfb_GetFbPtr.s,SysCfb_GetFbPtr,0x801789EC,0xA
|
||||
asm/non_matchings/code/sys_cmpdma/SysCfb_SetLoResMode.s,SysCfb_SetLoResMode,0x80178750,0x32
|
||||
asm/non_matchings/code/sys_cmpdma/SysCfb_SetHiResMode.s,SysCfb_SetHiResMode,0x80178818,0x58
|
||||
asm/non_matchings/code/sys_cmpdma/SysCfb_Init.s,SysCfb_Init,0x80178978,0x17
|
||||
asm/non_matchings/code/sys_cmpdma/SysCfb_Reset.s,SysCfb_Reset,0x801789D4,0x6
|
||||
asm/non_matchings/code/sys_cmpdma/SysCfb_GetFramebuffer.s,SysCfb_GetFramebuffer,0x801789EC,0xA
|
||||
asm/non_matchings/code/sys_cmpdma/SysCfb_GetZBuffer.s,SysCfb_GetZBuffer,0x80178A14,0x4
|
||||
asm/non_matchings/code/sys_cmpdma/func_80178A24.s,func_80178A24,0x80178A24,0x4
|
||||
asm/non_matchings/code/sys_cmpdma/func_80178A34.s,func_80178A34,0x80178A34,0x18
|
||||
asm/non_matchings/code/sys_cmpdma/func_80178A94.s,func_80178A94,0x80178A94,0xB
|
||||
asm/non_matchings/code/sys_cmpdma/SysCfb_GetWorkBuffer.s,SysCfb_GetWorkBuffer,0x80178A24,0x4
|
||||
asm/non_matchings/code/sys_cmpdma/SysCfb_GetZBufferPixel.s,SysCfb_GetZBufferPixel,0x80178A34,0x18
|
||||
asm/non_matchings/code/sys_cmpdma/SysCfb_GetZBufferInt.s,SysCfb_GetZBufferInt,0x80178A94,0xB
|
||||
asm/non_matchings/code/sys_cmpdma/func_80178AC0.s,func_80178AC0,0x80178AC0,0x70
|
||||
asm/non_matchings/code/sys_cmpdma/CmpDma_GetFileInfo.s,CmpDma_GetFileInfo,0x80178C80,0x3F
|
||||
asm/non_matchings/code/sys_cmpdma/CmpDma_Decompress.s,CmpDma_Decompress,0x80178D7C,0xC
|
||||
|
|
|
|
@ -122,9 +122,11 @@ D_A4800010 = 0xA4800010; // SI_PIF_ADDR_WR64B_REG
|
|||
D_A4800014 = 0xA4800014; // reserved
|
||||
D_A4800018 = 0xA4800018; // SI_STATUS_REG
|
||||
|
||||
// buffers
|
||||
// sys_cfb buffers
|
||||
|
||||
gFramebuffer1 = 0x80000500;
|
||||
gFramebufferHiRes0 = 0x80780000;
|
||||
gFramebufferHiRes1 = 0x80000500;
|
||||
D_80025D00 = 0x80025D00;
|
||||
|
||||
// Ucode symbols
|
||||
|
|
Loading…
Reference in New Issue