some logging fixes

This commit is contained in:
starfrost013
2025-04-15 01:07:41 +01:00
parent afcb339224
commit f170901c55
5 changed files with 8 additions and 7 deletions

View File

@@ -35,19 +35,19 @@ void nv3_class_010_method(uint32_t param, uint32_t method_id, nv3_ramin_context_
case NV3_BLIT_POSITION_IN:
nv3->pgraph.blit.point_in.x = (param & 0xFFFF);
nv3->pgraph.blit.point_in.y = ((param >> 16) & 0xFFFF);
nv_log("Method Execution: S2SB POINT_IN %04x,%04x\n", nv3->pgraph.blit.point_in.x, nv3->pgraph.blit.point_in.y);
nv_log("Method Execution: S2SB POINT_IN %d,%d\n", nv3->pgraph.blit.point_in.x, nv3->pgraph.blit.point_in.y);
break;
case NV3_BLIT_POSITION_OUT:
nv3->pgraph.blit.point_out.x = (param & 0xFFFF);
nv3->pgraph.blit.point_out.y = ((param >> 16) & 0xFFFF);
nv_log("Method Execution: S2SB POINT_OUT %04x,%04x\n", nv3->pgraph.blit.point_out.x, nv3->pgraph.blit.point_out.y);
nv_log("Method Execution: S2SB POINT_OUT %d,%d\n", nv3->pgraph.blit.point_out.x, nv3->pgraph.blit.point_out.y);
break;
case NV3_BLIT_SIZE:
/* This is the last one*/
nv3->pgraph.blit.size.w = (param & 0xFFFF);
nv3->pgraph.blit.size.h = ((param >> 16) & 0xFFFF);
nv_log("Method Execution: S2SB Size %04x,%04x grobj_0=0x%08x\n", nv3->pgraph.blit.size.w, nv3->pgraph.blit.size.h, grobj.grobj_0);
nv_log("Method Execution: S2SB Size %d,%d grobj_0=0x%08x\n", nv3->pgraph.blit.size.w, nv3->pgraph.blit.size.h, grobj.grobj_0);
/* Some of these seem to have sizes of 0, so skip */
if (nv3->pgraph.blit.size.h == 0

View File

@@ -32,6 +32,7 @@ void nv3_class_01c_method(uint32_t param, uint32_t method_id, nv3_ramin_context_
{
/* We need this for a lot of methods, so may as well store it here. */
uint32_t src_buffer_id = (grobj.grobj_0 >> NV3_PGRAPH_CONTEXT_SWITCH_SRC_BUFFER) & 0x03;
switch (method_id)
{

View File

@@ -142,8 +142,8 @@ void nv3_render_blit_screen2screen(nv3_grobj_t grobj)
if ((grobj.grobj_0 >> NV3_PGRAPH_CONTEXT_SWITCH_DST_BUFFER2_ENABLED) & 0x01) dst_buffer = 2;
if ((grobj.grobj_0 >> NV3_PGRAPH_CONTEXT_SWITCH_DST_BUFFER3_ENABLED) & 0x01) dst_buffer = 3;
nv3_position_16_t old_position;
nv3_position_16_t new_position;
nv3_position_16_t old_position = {0};
nv3_position_16_t new_position = {0};
/* If src_buffer != dst_buffer, the positions and src/dst buffer seem to be swapped.
Some kind of hardware errata (?), otherwise, I have no explanation for this behaviour. */

View File

@@ -85,6 +85,7 @@ nv_register_t pgraph_registers[] = {
{ NV3_PGRAPH_STATUS, "PGRAPH Status", NULL, NULL },
{ NV3_PGRAPH_TRAPPED_ADDRESS, "PGRAPH Trapped Address", NULL, NULL },
{ NV3_PGRAPH_TRAPPED_DATA, "PGRAPH Trapped Data", NULL, NULL },
{ NV3_PGRAPH_INSTANCE, "PGRAPH Object Instance", NULL, NULL},
{ NV3_PGRAPH_TRAPPED_INSTANCE, "PGRAPH Trapped Object Instance", NULL, NULL },
{ NV3_PGRAPH_DMA_INTR_0, "PGRAPH DMA Interrupt Status (unimplemented)", NULL, NULL },
{ NV3_PGRAPH_DMA_INTR_EN_0, "PGRAPH DMA Interrupt Enable (unimplemented)", NULL, NULL },

View File

@@ -418,14 +418,13 @@ void nv3_pramdac_write(uint32_t address, uint32_t value)
nv3->pramdac.user_read_mode_address = value;
break;
case NV3_USER_DAC_WRITE_MODE_ADDRESS:
/*
This seems to get reset to 0 after 256 writes, but, the palette is 768 bytes in size.
Clearly there's some mechanism here, but I'm not sure what it is. So let's just reset if we reach 768.
*/
if (nv3->pramdac.user_write_mode_address >= NV3_USER_DAC_PALETTE_SIZE)
nv3->pramdac.user_write_mode_address = value;
break;
case NV3_USER_DAC_PALETTE_DATA:
/* I doubt NV actually read this in their drivers, but it's worth doing anyway */