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 branch 'master' of https://github.com/CrashOveride95/ultrasm64
This commit is contained in:
@@ -11,6 +11,8 @@
|
||||
- It has been patched with someone2639's shiftable segments patch
|
||||
- Wiseguy's instant input patch has been added to allow for less input lag on emulation (Does not affect console)
|
||||
This does mean that any framebuffer effects will have to be done on buffer 0 if targeting emulators
|
||||
- Automatic console and emulator detection: Use the `gIsConsole` variable to wrap your code in an emulator check.
|
||||
- Separate defines for emulator and console black border height.
|
||||
- Getting HVQM FMV support to work with the game is WIP.
|
||||
|
||||
Requirements are the same as regular SM64, however a GCC MIPS cross compiler is also required. If you're on Debian-like Linux, you can use the ``gcc-mips-linux-gnu`` package. The toolchain that comes with my SDK is also supported.
|
||||
|
||||
@@ -2097,14 +2097,8 @@ const Gfx dl_hud_img_begin[] = {
|
||||
gsDPSetTexturePersp(G_TP_NONE),
|
||||
gsDPSetAlphaCompare(G_AC_THRESHOLD),
|
||||
gsDPSetBlendColor(255, 255, 255, 255),
|
||||
#if defined(VERSION_EU) || defined(VERSION_SH)
|
||||
gsDPSetRenderMode(G_RM_NOOP, G_RM_NOOP2),
|
||||
#endif
|
||||
#ifdef VERSION_EU
|
||||
gsDPSetTextureFilter(G_TF_POINT),
|
||||
#elif defined(VERSION_JP) || defined(VERSION_US)
|
||||
gsDPSetRenderMode(G_RM_AA_XLU_SURF, G_RM_AA_XLU_SURF2),
|
||||
#endif
|
||||
gsSPEndDisplayList(),
|
||||
};
|
||||
|
||||
@@ -2124,13 +2118,8 @@ const Gfx dl_hud_img_end[] = {
|
||||
gsDPSetTexturePersp(G_TP_PERSP),
|
||||
gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2),
|
||||
gsDPSetAlphaCompare(G_AC_NONE),
|
||||
#ifdef VERSION_EU
|
||||
gsDPSetTextureFilter(G_TF_BILERP),
|
||||
#endif
|
||||
gsDPSetCycleType(G_CYC_1CYCLE),
|
||||
#if defined(VERSION_JP) || defined(VERSION_US)
|
||||
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),
|
||||
#endif
|
||||
gsSPEndDisplayList(),
|
||||
};
|
||||
|
||||
|
||||
@@ -44,13 +44,15 @@
|
||||
// Border Height Define for NTSC Versions
|
||||
#ifdef TARGET_N64
|
||||
#ifndef VERSION_EU
|
||||
#define BORDER_HEIGHT 8
|
||||
#define BORDER_HEIGHT_CONSOLE 8
|
||||
#define BORDER_HEIGHT_EMULATOR 0
|
||||
#else
|
||||
#define BORDER_HEIGHT 1
|
||||
#define BORDER_HEIGHT_CONSOLE 1
|
||||
#define BORDER_HEIGHT_EMULATOR 0
|
||||
#endif
|
||||
#else
|
||||
// What's the point of having a border?
|
||||
#define BORDER_HEIGHT 0
|
||||
#define BORDER_HEIGHT_CONSOLE 0
|
||||
#define BORDER_HEIGHT_EMULATOR 0
|
||||
#endif
|
||||
|
||||
#endif // CONFIG_H
|
||||
|
||||
@@ -366,28 +366,27 @@ void render_game(void) {
|
||||
|
||||
gSPViewport(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&D_8032CF00));
|
||||
|
||||
gDPSetScissor(gDisplayListHead++, G_SC_NON_INTERLACE, 0, BORDER_HEIGHT, SCREEN_WIDTH,
|
||||
SCREEN_HEIGHT - BORDER_HEIGHT);
|
||||
gDPSetScissor(gDisplayListHead++, G_SC_NON_INTERLACE, 0, gBorderHeight, SCREEN_WIDTH,
|
||||
SCREEN_HEIGHT - gBorderHeight);
|
||||
render_hud();
|
||||
|
||||
gDPSetScissor(gDisplayListHead++, G_SC_NON_INTERLACE, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT);
|
||||
render_text_labels();
|
||||
do_cutscene_handler();
|
||||
print_displaying_credits_entry();
|
||||
|
||||
gDPSetScissor(gDisplayListHead++, G_SC_NON_INTERLACE, 0, BORDER_HEIGHT, SCREEN_WIDTH,
|
||||
SCREEN_HEIGHT - BORDER_HEIGHT);
|
||||
gDPSetScissor(gDisplayListHead++, G_SC_NON_INTERLACE, 0, gBorderHeight, SCREEN_WIDTH,
|
||||
SCREEN_HEIGHT - gBorderHeight);
|
||||
gMenuOptSelectIndex = render_menus_and_dialogs();
|
||||
if (gMenuOptSelectIndex != MENU_OPT_NONE) {
|
||||
|
||||
if (gMenuOptSelectIndex != 0) {
|
||||
gSaveOptSelectIndex = gMenuOptSelectIndex;
|
||||
}
|
||||
|
||||
if (D_8032CE78 != NULL) {
|
||||
make_viewport_clip_rect(D_8032CE78);
|
||||
} else {
|
||||
gDPSetScissor(gDisplayListHead++, G_SC_NON_INTERLACE, 0, BORDER_HEIGHT, SCREEN_WIDTH,
|
||||
SCREEN_HEIGHT - BORDER_HEIGHT);
|
||||
}
|
||||
} else
|
||||
gDPSetScissor(gDisplayListHead++, G_SC_NON_INTERLACE, 0, gBorderHeight, SCREEN_WIDTH,
|
||||
SCREEN_HEIGHT - gBorderHeight);
|
||||
|
||||
if (gWarpTransition.isActive) {
|
||||
if (gWarpTransDelay == 0) {
|
||||
|
||||
@@ -44,6 +44,8 @@ struct GfxPool *gGfxPool;
|
||||
OSContStatus gControllerStatuses[4];
|
||||
OSContPad gControllerPads[4];
|
||||
u8 gControllerBits;
|
||||
u8 gIsConsole;
|
||||
u8 gBorderHeight;
|
||||
#ifdef EEP
|
||||
s8 gEepromProbe;
|
||||
#endif
|
||||
@@ -156,8 +158,8 @@ void init_z_buffer(void) {
|
||||
gDPSetFillColor(gDisplayListHead++,
|
||||
GPACK_ZDZ(G_MAXFBZ, 0) << 16 | GPACK_ZDZ(G_MAXFBZ, 0));
|
||||
|
||||
gDPFillRectangle(gDisplayListHead++, 0, BORDER_HEIGHT, SCREEN_WIDTH - 1,
|
||||
SCREEN_HEIGHT - 1 - BORDER_HEIGHT);
|
||||
gDPFillRectangle(gDisplayListHead++, 0, gBorderHeight, SCREEN_WIDTH - 1,
|
||||
SCREEN_HEIGHT - 1 - gBorderHeight);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -169,8 +171,8 @@ void select_frame_buffer(void) {
|
||||
gDPSetCycleType(gDisplayListHead++, G_CYC_1CYCLE);
|
||||
gDPSetColorImage(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, SCREEN_WIDTH,
|
||||
gPhysicalFrameBuffers[sRenderingFrameBuffer]);
|
||||
gDPSetScissor(gDisplayListHead++, G_SC_NON_INTERLACE, 0, BORDER_HEIGHT, SCREEN_WIDTH,
|
||||
SCREEN_HEIGHT - BORDER_HEIGHT);
|
||||
gDPSetScissor(gDisplayListHead++, G_SC_NON_INTERLACE, 0, gBorderHeight, SCREEN_WIDTH,
|
||||
SCREEN_HEIGHT - gBorderHeight);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -185,8 +187,8 @@ void clear_frame_buffer(s32 color) {
|
||||
|
||||
gDPSetFillColor(gDisplayListHead++, color);
|
||||
gDPFillRectangle(gDisplayListHead++,
|
||||
GFX_DIMENSIONS_RECT_FROM_LEFT_EDGE(0), BORDER_HEIGHT,
|
||||
GFX_DIMENSIONS_RECT_FROM_RIGHT_EDGE(0) - 1, SCREEN_HEIGHT - BORDER_HEIGHT - 1);
|
||||
GFX_DIMENSIONS_RECT_FROM_LEFT_EDGE(0), gBorderHeight,
|
||||
GFX_DIMENSIONS_RECT_FROM_RIGHT_EDGE(0) - 1, SCREEN_HEIGHT - gBorderHeight - 1);
|
||||
|
||||
gDPPipeSync(gDisplayListHead++);
|
||||
|
||||
@@ -232,13 +234,13 @@ void draw_screen_borders(void) {
|
||||
|
||||
gDPSetFillColor(gDisplayListHead++, GPACK_RGBA5551(0, 0, 0, 0) << 16 | GPACK_RGBA5551(0, 0, 0, 0));
|
||||
|
||||
#if BORDER_HEIGHT != 0
|
||||
gDPFillRectangle(gDisplayListHead++, GFX_DIMENSIONS_RECT_FROM_LEFT_EDGE(0), 0,
|
||||
GFX_DIMENSIONS_RECT_FROM_RIGHT_EDGE(0) - 1, BORDER_HEIGHT - 1);
|
||||
gDPFillRectangle(gDisplayListHead++,
|
||||
GFX_DIMENSIONS_RECT_FROM_LEFT_EDGE(0), SCREEN_HEIGHT - BORDER_HEIGHT,
|
||||
GFX_DIMENSIONS_RECT_FROM_RIGHT_EDGE(0) - 1, SCREEN_HEIGHT - 1);
|
||||
#endif
|
||||
if (gBorderHeight) {
|
||||
gDPFillRectangle(gDisplayListHead++, GFX_DIMENSIONS_RECT_FROM_LEFT_EDGE(0), 0,
|
||||
GFX_DIMENSIONS_RECT_FROM_RIGHT_EDGE(0) - 1, gBorderHeight - 1);
|
||||
gDPFillRectangle(gDisplayListHead++,
|
||||
GFX_DIMENSIONS_RECT_FROM_LEFT_EDGE(0), SCREEN_HEIGHT - gBorderHeight,
|
||||
GFX_DIMENSIONS_RECT_FROM_RIGHT_EDGE(0) - 1, SCREEN_HEIGHT - 1);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -359,6 +361,13 @@ void draw_reset_bars(void) {
|
||||
* Initial settings for the first rendered frame.
|
||||
*/
|
||||
void render_init(void) {
|
||||
if (IO_READ(DPC_PIPEBUSY_REG) == 0) {
|
||||
gIsConsole = 0;
|
||||
gBorderHeight = BORDER_HEIGHT_EMULATOR;
|
||||
} else {
|
||||
gIsConsole = 1;
|
||||
gBorderHeight = BORDER_HEIGHT_CONSOLE;
|
||||
}
|
||||
gGfxPool = &gGfxPools[0];
|
||||
set_segment_base_addr(1, gGfxPool->buffer);
|
||||
gGfxSPTask = &gGfxPool->spTask;
|
||||
|
||||
@@ -41,6 +41,8 @@ extern Gfx *gDisplayListHead;
|
||||
extern u8 *gGfxPoolEnd;
|
||||
extern struct GfxPool *gGfxPool;
|
||||
extern u8 gControllerBits;
|
||||
extern u8 gIsConsole;
|
||||
extern u8 gBorderHeight;
|
||||
#ifdef EEP
|
||||
extern s8 gEepromProbe;
|
||||
#endif
|
||||
|
||||
@@ -1828,15 +1828,7 @@ void render_dialog_entries(void) {
|
||||
if (gLastDialogPageStrPos == -1 && gLastDialogResponse == 1) {
|
||||
render_dialog_triangle_choice();
|
||||
}
|
||||
#ifdef VERSION_EU
|
||||
#undef BORDER_HEIGHT
|
||||
#define BORDER_HEIGHT 8
|
||||
#endif
|
||||
gDPSetScissor(gDisplayListHead++, G_SC_NON_INTERLACE, 2, 2, SCREEN_WIDTH - BORDER_HEIGHT/2, SCREEN_HEIGHT - BORDER_HEIGHT/2);
|
||||
#ifdef VERSION_EU
|
||||
#undef BORDER_HEIGHT
|
||||
#define BORDER_HEIGHT 1
|
||||
#endif
|
||||
gDPSetScissor(gDisplayListHead++, G_SC_NON_INTERLACE, 2, 2, SCREEN_WIDTH - gBorderHeight/2, SCREEN_HEIGHT - gBorderHeight/2);
|
||||
if (gLastDialogPageStrPos != -1 && gDialogBoxState == DIALOG_STATE_VERTICAL) {
|
||||
render_dialog_string_color(dialog->linesPerBox);
|
||||
}
|
||||
|
||||
@@ -521,8 +521,8 @@ static void geo_process_background(struct GraphNodeBackground *node) {
|
||||
gDPPipeSync(gfx++);
|
||||
gDPSetCycleType(gfx++, G_CYC_FILL);
|
||||
gDPSetFillColor(gfx++, node->background);
|
||||
gDPFillRectangle(gfx++, GFX_DIMENSIONS_RECT_FROM_LEFT_EDGE(0), BORDER_HEIGHT,
|
||||
GFX_DIMENSIONS_RECT_FROM_RIGHT_EDGE(0) - 1, SCREEN_HEIGHT - BORDER_HEIGHT - 1);
|
||||
gDPFillRectangle(gfx++, GFX_DIMENSIONS_RECT_FROM_LEFT_EDGE(0), gBorderHeight,
|
||||
GFX_DIMENSIONS_RECT_FROM_RIGHT_EDGE(0) - 1, SCREEN_HEIGHT - gBorderHeight - 1);
|
||||
gDPPipeSync(gfx++);
|
||||
gDPSetCycleType(gfx++, G_CYC_1CYCLE);
|
||||
gSPEndDisplayList(gfx++);
|
||||
|
||||
Reference in New Issue
Block a user