From c3ebf327d90d1cf3d86ec8d35f9816b3f2113c76 Mon Sep 17 00:00:00 2001 From: starfrost013 Date: Mon, 24 Mar 2025 13:17:22 +0000 Subject: [PATCH] partially working text acceleration, looks inverted(??) --- doc/nvidia_notes/status.xlsx | Bin 15398 -> 15459 bytes src/include/86box/nv/render/vid_nv3_render.h | 5 +- src/include/86box/nv/vid_nv3.h | 1 + .../classes/nv3_class_00c_win95_gdi_text.c | 47 ++++++++++++- .../nv/nv3/render/nv3_render_primitives.c | 63 ++++++++++++++++++ src/video/nv/nv3/subsystems/nv3_pfifo.c | 3 +- src/video/nv/nv3/subsystems/nv3_pramin.c | 4 +- 7 files changed, 118 insertions(+), 5 deletions(-) diff --git a/doc/nvidia_notes/status.xlsx b/doc/nvidia_notes/status.xlsx index 7d58d5250c8be03718dd86b5bfe94561227001a6..f36ba573a387bc65b2c1cd642c0d77d58c5ef604 100644 GIT binary patch delta 4045 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 DM$~nn delta 3945 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.win95_gdi_text.color_a = param; break; + /* Type B and C not implemented YET, as they are not used by NT GDI driver */ + case NV3_W95TXT_D_CLIP_TOPLEFT: + nv3->pgraph.win95_gdi_text.clip_d.left = (param & 0xFFFF); + nv3->pgraph.win95_gdi_text.clip_d.top = ((param >> 16) & 0xFFFF); + break; + case NV3_W95TXT_D_CLIP_BOTTOMRIGHT: + nv3->pgraph.win95_gdi_text.clip_d.right = (param & 0xFFFF); + nv3->pgraph.win95_gdi_text.clip_d.bottom = ((param >> 16) & 0xFFFF); + /* is it "only if we are out of the top left or the bottom right or is it "all of them"*/ + break; + case NV3_W95TXT_D_CLIP_COLOR: + nv3->pgraph.win95_gdi_text.color1_d = param; + break; + case NV3_W95TXT_D_CLIP_SIZE_IN: + nv3->pgraph.win95_gdi_text.size_in_d.w = (param & 0xFFFF); + nv3->pgraph.win95_gdi_text.size_in_d.h = ((param >> 16) & 0xFFFF); + break; + case NV3_W95TXT_D_CLIP_SIZE_OUT: + nv3->pgraph.win95_gdi_text.size_out_d.w = (param & 0xFFFF); + nv3->pgraph.win95_gdi_text.size_out_d.h = ((param >> 16) & 0xFFFF); + break; + case NV3_W95TXT_D_CLIP_POSITION: + nv3->pgraph.win95_gdi_text.point_d.x = (param & 0xFFFF); + nv3->pgraph.win95_gdi_text.point_d.y = ((param >> 16) & 0xFFFF); + + nv3->pgraph.win95_gdi_text_current_position = nv3->pgraph.win95_gdi_text.point_d; + break; default: - /* These are the same things as rectangles */ + /* Type A submission: these are the same things as rectangles */ if (method_id >= NV3_W95TXT_A_RECT_START && method_id <= NV3_W95TXT_A_RECT_END) { uint32_t index = (method_id - NV3_RECTANGLE_START) >> 3; @@ -66,6 +93,24 @@ void nv3_class_00c_method(uint32_t param, uint32_t method_id, nv3_ramin_context_ } return; } + else if (method_id >= NV3_W95TXT_D_CLIP_CLIPRECT_START && method_id <= NV3_W95TXT_D_CLIP_CLIPRECT_END) + { + /* lol */ + uint32_t index = (method_id - NV3_W95TXT_D_CLIP_CLIPRECT_START) >> 3; + + nv3->pgraph.win95_gdi_text.mono_color1_d[index] = param; + + /* Mammoth logger! */ + nv_log("Rect GDI-D%d Data=%08x SizeIn%04x,%04x SizeOut%04x,%04x Point%04x,%04x Color=%08x Clip Left=0x%04x Right=0x%04x Top=0x%04x Bottom=0x%04x", + index, param, nv3->pgraph.win95_gdi_text.size_in_d.w, nv3->pgraph.win95_gdi_text.size_in_d.h, + nv3->pgraph.win95_gdi_text.size_out_d.w, nv3->pgraph.win95_gdi_text.size_out_d.h, + nv3->pgraph.win95_gdi_text.point_d.x, nv3->pgraph.win95_gdi_text.point_d.y, + nv3->pgraph.win95_gdi_text.color1_d, + nv3->pgraph.win95_gdi_text.clip_d.left, nv3->pgraph.win95_gdi_text.clip_d.right, nv3->pgraph.win95_gdi_text.clip_d.top, nv3->pgraph.win95_gdi_text.clip_d.bottom); + + nv3_render_gdi_type_d(grobj, nv3->pgraph.win95_gdi_text.mono_color1_d[index]); + + } nv_log("%s: Invalid or Unimplemented method 0x%04x", nv3_class_names[context.class_id & 0x1F], method_id); nv3_pgraph_interrupt_invalid(NV3_PGRAPH_INTR_1_SOFTWARE_METHOD_PENDING); diff --git a/src/video/nv/nv3/render/nv3_render_primitives.c b/src/video/nv/nv3/render/nv3_render_primitives.c index f4bfdebf4..d8dfe7ba9 100644 --- a/src/video/nv/nv3/render/nv3_render_primitives.c +++ b/src/video/nv/nv3/render/nv3_render_primitives.c @@ -36,6 +36,7 @@ void nv3_render_rect(nv3_position_16_t position, nv3_size_16_t size, uint32_t co for (int32_t y = position.y; y < (position.y + size.h); y++) { current_pos.y = y; + for (int32_t x = position.x; x < (position.x + size.w); x++) { current_pos.x = x; @@ -43,4 +44,66 @@ void nv3_render_rect(nv3_position_16_t position, nv3_size_16_t size, uint32_t co nv3_render_write_pixel(current_pos, color, grobj); } } +} + +void nv3_render_gdi_type_d(nv3_grobj_t grobj, uint32_t param) +{ + // reset when a position is submitted + nv3_position_16_t start_position = nv3->pgraph.win95_gdi_text_current_position; + + // is this clip or point? + + uint16_t end_x = nv3->pgraph.win95_gdi_text.point_d.x + nv3->pgraph.win95_gdi_text.size_in_d.w; + uint16_t end_y = nv3->pgraph.win95_gdi_text.point_d.y + nv3->pgraph.win95_gdi_text.size_in_d.h; + + /* set up our packed pixels */ + uint32_t pixel0 = 0, pixel1 = 0, pixel2 = 0, pixel3 = 0; + + /* Go through the bitmap that was sent, bit by bit. */ + for (int32_t bit_num = 0; bit_num <= 31; bit_num++) + { + bool bit = (param >> bit_num) & 0x01; + //bool bit = true; // debug test + + nv3->pgraph.win95_gdi_text_current_position.x++; + + /* let's hope NV never overflow the y */ + if (nv3->pgraph.win95_gdi_text_current_position.x >= end_x) + { + nv3->pgraph.win95_gdi_text_current_position.x = nv3->pgraph.win95_gdi_text.point_d.x; + nv3->pgraph.win95_gdi_text_current_position.y++; + } + + /* check if we are in the clipping rectangle */ + if (nv3->pgraph.win95_gdi_text_current_position.x < nv3->pgraph.win95_gdi_text.clip_d.left + || nv3->pgraph.win95_gdi_text_current_position.x > nv3->pgraph.win95_gdi_text.clip_d.right + || nv3->pgraph.win95_gdi_text_current_position.y < nv3->pgraph.win95_gdi_text.clip_d.top + || nv3->pgraph.win95_gdi_text_current_position.y > nv3->pgraph.win95_gdi_text.clip_d.bottom) + { + return; + } + + // if it's 0 we don't need to do anything + if (!bit) + continue; + else + { + switch (nv3->nvbase.svga.bpp) + { + case 8: + uint32_t final_color8 = (nv3->pgraph.win95_gdi_text.color1_d & 0xFF); /* do we need to add anything? mul blend perhaps? */ + nv3_render_write_pixel(nv3->pgraph.win95_gdi_text_current_position, final_color8, grobj); + break; + case 16: + uint32_t final_color16 = (nv3->pgraph.win95_gdi_text.color1_d & 0xFFFF); /* do we need to add anything? mul blend perhaps? */ + nv3_render_write_pixel(nv3->pgraph.win95_gdi_text_current_position, final_color16, grobj); + break; + case 32: + uint32_t final_color32 = (nv3->pgraph.win95_gdi_text.color1_d); /* do we need to add anything? mul blend perhaps? */ + nv3_render_write_pixel(nv3->pgraph.win95_gdi_text_current_position, final_color32, grobj); + break; + } + } + + } } \ No newline at end of file diff --git a/src/video/nv/nv3/subsystems/nv3_pfifo.c b/src/video/nv/nv3/subsystems/nv3_pfifo.c index 088ddf1ba..b782f2b56 100644 --- a/src/video/nv/nv3/subsystems/nv3_pfifo.c +++ b/src/video/nv/nv3/subsystems/nv3_pfifo.c @@ -939,9 +939,10 @@ void nv3_pfifo_cache1_pull() nv3_ramin_context_t context_structure = *(nv3_ramin_context_t*)¤t_context; nv3_debug_ramin_print_context_info(current_param, context_structure); + #endif nv3_pgraph_submit(current_param, current_method, current_channel, current_subchannel, class_id & 0x1F, context_structure); - #endif + //Todo: finish it } diff --git a/src/video/nv/nv3/subsystems/nv3_pramin.c b/src/video/nv/nv3/subsystems/nv3_pramin.c index 7a5ff749b..b4858acca 100644 --- a/src/video/nv/nv3/subsystems/nv3_pramin.c +++ b/src/video/nv/nv3/subsystems/nv3_pramin.c @@ -477,7 +477,7 @@ bool nv3_ramin_find_object(uint32_t name, uint32_t cache_num, uint8_t channel, u else { nv3->pfifo.cache1_settings.pull0 |= NV3_PFIFO_CACHE1_PULL0_SOFTWARE_METHOD; - nv3->pfifo.cache0_settings.pull0 &= ~NV3_PFIFO_CACHE1_PULL0_ENABLED; + nv3->pfifo.cache1_settings.pull0 &= ~NV3_PFIFO_CACHE1_PULL0_ENABLED; } // It's an error but it isn't lol @@ -504,7 +504,7 @@ void nv3_debug_ramin_print_context_info(uint32_t name, nv3_ramin_context_t conte { #ifndef RELEASE_BUILD nv_log("Found object:\n"); - nv_log("Name: 0x%04x\n", name); + nv_log("Param: 0x%04x\n", name); nv_log("Context:\n"); nv_log("DMA Channel %d (0-7 valid)\n", context.channel);