diff --git a/Source/Glide64/3dmath.cpp b/Source/Glide64/3dmath.cpp index e6657ad73..1c59092f3 100644 --- a/Source/Glide64/3dmath.cpp +++ b/Source/Glide64/3dmath.cpp @@ -114,14 +114,12 @@ void calc_linear(VERTEX *v) v->ov = (acosf(y) / 3.141592654f) * (rdp.tiles[rdp.cur_tile].org_t_scale >> 6); } v->uv_scaled = 1; -#ifdef EXTREME_LOGGING - FRDP ("calc linear u: %f, v: %f\n", v->ou, v->ov); -#endif + WriteTrace(TraceRDP, TraceVerbose, "calc linear u: %f, v: %f", v->ou, v->ov); } void calc_sphere(VERTEX *v) { - // LRDP("calc_sphere\n"); + WriteTrace(TraceRDP, TraceDebug, "calc_sphere"); DECLAREALIGN16VAR(vec[3]); int s_scale, t_scale; if (g_settings->hacks&hack_Chopper) @@ -151,9 +149,7 @@ void calc_sphere(VERTEX *v) v->ou = (x * 0.5f + 0.5f) * s_scale; v->ov = (y * 0.5f + 0.5f) * t_scale; v->uv_scaled = 1; -#ifdef EXTREME_LOGGING - FRDP ("calc sphere u: %f, v: %f\n", v->ou, v->ov); -#endif + WriteTrace(TraceRDP, TraceVerbose, "calc sphere u: %f, v: %f", v->ou, v->ov); } float DotProductC(register float *v1, register float *v2) @@ -195,8 +191,12 @@ void MulMatricesC(float m1[4][4], float m2[4][4], float r[4][4]) register unsigned int i, j; for (i = 0; i < 4; i++) + { for (j = 0; j < 4; j++) + { row[i][j] = m2[i][j]; + } + } for (i = 0; i < 4; i++) { // auto-vectorizable algorithm diff --git a/Source/Glide64/Combine.cpp b/Source/Glide64/Combine.cpp index a89779718..f0a81c61e 100644 --- a/Source/Glide64/Combine.cpp +++ b/Source/Glide64/Combine.cpp @@ -186,23 +186,24 @@ COMBINE cmb; cmb.tmu0_func = GR_COMBINE_FUNCTION_SCALE_OTHER, \ cmb.tmu0_fac = GR_COMBINE_FACTOR_LOCAL #define T0_INTER_T1_USING_FACTOR(factor) \ - if (factor == 0xFF) { USE_T1(); else if (factor == 0x00) { USE_T0(); } else {\\ if (factor <= 0x80) { rdp.best_tex = 0; } else { rdp.best_tex = 1; } \ + if (factor == 0xFF) { USE_T1(); } else if (factor == 0x00) { USE_T0(); } else { \ + if (factor <= 0x80) { rdp.best_tex = 0; } else { rdp.best_tex = 1; } \ cmb.tex |= 3, \ cmb.tmu1_func = GR_COMBINE_FUNCTION_LOCAL, \ cmb.tmu0_func = GR_COMBINE_FUNCTION_BLEND, \ cmb.tmu0_fac = GR_COMBINE_FACTOR_DETAIL_FACTOR, \ percent = (float)factor / 255.0f, \ - cmb.dc0_detailmax = cmb.dc1_detailmax = percent; } \ + cmb.dc0_detailmax = cmb.dc1_detailmax = percent; } #define T1_INTER_T0_USING_FACTOR(factor) /* inverse of above */\ if (factor == 0xFF) { \ USE_T0(); \ - } \ - else if (factor == 0x00) { \ + } \ + else if (factor == 0x00) { \ USE_T1(); \ }\ - else {\ + else {\ if (factor <= 0x80) rdp.best_tex = 0; \ - else rdp.best_tex = 1; \ + else rdp.best_tex = 1; \ cmb.tex |= 3, \ cmb.tmu1_func = GR_COMBINE_FUNCTION_LOCAL, \ cmb.tmu0_func = GR_COMBINE_FUNCTION_BLEND, \ @@ -225,8 +226,8 @@ COMBINE cmb; #define T0_INTER_T1_USING_T1() \ if (!cmb.combine_ext) { \ T0_INTER_T1_USING_FACTOR(0x7F); \ - }\ - else {\ + }\ + else {\ rdp.best_tex = 0; \ cmb.tex |= 3, \ cmb.t1c_ext_a = GR_CMBX_LOCAL_TEXTURE_RGB, \ @@ -256,8 +257,8 @@ COMBINE cmb; #define T0_INTER_T1_USING_PRIM() \ if (!cmb.combine_ext) { \ T0_INTER_T1_USING_FACTOR ((rdp.prim_color&0xFF)); \ - }\ - else {\ + }\ + else {\ rdp.best_tex = 0; \ cmb.tex |= 3, \ cmb.t1c_ext_a = GR_CMBX_LOCAL_TEXTURE_RGB, \ @@ -282,8 +283,8 @@ COMBINE cmb; #define T1_INTER_T0_USING_PRIM() /* inverse of above */\ if (!cmb.combine_ext) { \ T1_INTER_T0_USING_FACTOR ((rdp.prim_color&0xFF)); \ - }\ - else {\ + }\ + else {\ rdp.best_tex = 0; \ cmb.tex |= 3, \ cmb.t1c_ext_a = GR_CMBX_LOCAL_TEXTURE_RGB, \ @@ -308,8 +309,8 @@ COMBINE cmb; #define T0_INTER_T1_USING_ENV() \ if (!cmb.combine_ext) { \ T0_INTER_T1_USING_FACTOR ((rdp.env_color&0xFF)); \ - }\ - else {\ + }\ + else {\ rdp.best_tex = 0; \ cmb.tex |= 3, \ cmb.t1c_ext_a = GR_CMBX_LOCAL_TEXTURE_RGB, \ @@ -334,8 +335,8 @@ COMBINE cmb; #define T1_INTER_T0_USING_ENV() /* inverse of above */\ if (!cmb.combine_ext) { \ T1_INTER_T0_USING_FACTOR ((rdp.env_color&0xFF)); \ - }\ - else {\ + }\ + else {\ rdp.best_tex = 0; \ cmb.tex |= 3, \ cmb.t1c_ext_a = GR_CMBX_LOCAL_TEXTURE_RGB, \ @@ -360,8 +361,8 @@ COMBINE cmb; #define T0_INTER_T1_USING_SHADEA() \ if (!cmb.combine_ext) { \ T0_INTER_T1_USING_FACTOR (0x7F); \ - }\ - else {\ + }\ + else {\ rdp.best_tex = 0; \ cmb.tex |= 3, \ cmb.t1c_ext_a = GR_CMBX_LOCAL_TEXTURE_RGB, \ @@ -384,9 +385,7 @@ COMBINE cmb; } #define T1_INTER_T0_USING_SHADEA() \ if (!cmb.combine_ext) { \ - T0_INTER_T1_USING_FACTOR (0x7F); \ - }\ - else {\ + T0_INTER_T1_USING_FACTOR (0x7F); } else {\ rdp.best_tex = 0; \ cmb.tex |= 3, \ cmb.t1c_ext_a = GR_CMBX_LOCAL_TEXTURE_RGB, \ @@ -406,7 +405,7 @@ COMBINE cmb; cmb.t0c_ext_d= GR_CMBX_B, \ cmb.t0c_ext_d_invert = 0, \ cmb.tex_cmb_ext_use |= TEX_COMBINE_EXT_COLOR; \ -} + } #define T1_SUB_T0() \ rdp.best_tex = 0; \ cmb.tex |= 3, \ @@ -450,7 +449,7 @@ COMBINE cmb; MOD_0_FAC (lod_frac & 0xFF); #define T1_SUB_PRIM_MUL_PRIMLOD_ADD_T0() \ if (cmb.combine_ext) \ - { \ + { \ T1CCMBEXT(GR_CMBX_LOCAL_TEXTURE_RGB, GR_FUNC_MODE_X, \ GR_CMBX_TMU_CCOLOR, GR_FUNC_MODE_NEGATIVE_X, \ GR_CMBX_DETAIL_FACTOR, 0, \ @@ -463,8 +462,8 @@ COMBINE cmb; cmb.tex |= 3; \ percent = (float)(lod_frac) / 255.0f; \ cmb.dc0_detailmax = cmb.dc1_detailmax = percent; \ - } \ - else \ + } \ + else \ { \ T0_ADD_T1 (); \ MOD_1 (TMOD_TEX_SUB_COL_MUL_FAC); \ @@ -474,8 +473,8 @@ COMBINE cmb; #define PRIM_INTER_T0_USING_SHADEA() \ if (!cmb.combine_ext) { \ USE_T0 (); \ - }\ - else {\ + }\ + else {\ rdp.best_tex = 0; \ cmb.tex |= 1, \ cmb.t0c_ext_a = GR_CMBX_LOCAL_TEXTURE_RGB, \ @@ -499,8 +498,8 @@ COMBINE cmb; cmb.tmu1_a_func = GR_COMBINE_FUNCTION_LOCAL, \ cmb.tmu0_a_func = GR_COMBINE_FUNCTION_SCALE_OTHER, \ cmb.tmu0_a_fac = GR_COMBINE_FACTOR_ONE; \ - } \ - else { \ + } \ + else { \ A_USE_T0(); \ } #define A_T0_ADD_T1() \ @@ -544,11 +543,11 @@ COMBINE cmb; #define A_T0_INTER_T1_USING_FACTOR(factor) \ if (factor == 0xFF) { \ A_USE_T1(); \ - } \ - else if (factor == 0x00) { \ + } \ + else if (factor == 0x00) { \ A_USE_T0(); \ }\ - else { \ + else { \ cmb.tex |= 3, \ cmb.tmu1_a_func = GR_COMBINE_FUNCTION_LOCAL, \ cmb.tmu0_a_func = GR_COMBINE_FUNCTION_BLEND, \ @@ -559,11 +558,11 @@ COMBINE cmb; #define A_T1_INTER_T0_USING_FACTOR(factor) /* inverse of above */\ if (factor == 0xFF) { \ A_USE_T0(); \ - } \ - else if (factor == 0x00) { \ + } \ + else if (factor == 0x00) { \ A_USE_T1(); \ }\ - else { \ + else { \ cmb.tex |= 3, \ cmb.tmu1_a_func = GR_COMBINE_FUNCTION_LOCAL, \ cmb.tmu0_a_func = GR_COMBINE_FUNCTION_BLEND, \ @@ -574,8 +573,8 @@ COMBINE cmb; #define A_T0_INTER_T1_USING_SHADEA() \ if (!cmb.combine_ext) { \ A_T0_INTER_T1_USING_FACTOR (0x7F); \ - }\ - else {\ + }\ + else {\ rdp.best_tex = 0; \ cmb.tex |= 3, \ cmb.t1a_ext_a = GR_CMBX_LOCAL_TEXTURE_ALPHA, \ @@ -15513,11 +15512,11 @@ void CountCombine() void Combine() { - FRDP(" | |- color combine: %08lx, #1: (%s-%s)*%s+%s, #2: (%s-%s)*%s+%s\n", + WriteTrace(TraceRDP, TraceDebug, " | |- color combine: %08lx, #1: (%s-%s)*%s+%s, #2: (%s-%s)*%s+%s", ((rdp.cycle1 & 0xFFFF) << 16) | (rdp.cycle2 & 0xFFFF), Mode0[rdp.cycle1 & 0xF], Mode1[(rdp.cycle1 >> 4) & 0xF], Mode2[(rdp.cycle1 >> 8) & 0x1F], Mode3[(rdp.cycle1 >> 13) & 7], Mode0[rdp.cycle2 & 0xF], Mode1[(rdp.cycle2 >> 4) & 0xF], Mode2[(rdp.cycle2 >> 8) & 0x1F], Mode3[(rdp.cycle2 >> 13) & 7]); - FRDP(" | |- alpha combine: %08lx, #1: (%s-%s)*%s+%s, #2: (%s-%s)*%s+%s\n", + WriteTrace(TraceRDP, TraceDebug, " | |- alpha combine: %08lx, #1: (%s-%s)*%s+%s, #2: (%s-%s)*%s+%s", (rdp.cycle1 & 0x0FFF0000) | ((rdp.cycle2 & 0x0FFF0000) >> 16), Alpha0[(rdp.cycle1 >> 16) & 7], Alpha1[(rdp.cycle1 >> 19) & 7], Alpha2[(rdp.cycle1 >> 22) & 7], Alpha3[(rdp.cycle1 >> 25) & 7], Alpha0[(rdp.cycle2 >> 16) & 7], Alpha1[(rdp.cycle2 >> 19) & 7], Alpha2[(rdp.cycle2 >> 22) & 7], Alpha3[(rdp.cycle2 >> 25) & 7]); @@ -15585,7 +15584,7 @@ void Combine() current = left + ((right - left) >> 1); if (current == last) { - FRDP_E("Could not initialize current_combiner to valid index.\n"); + WriteTrace(TraceRDP, TraceWarning, "Could not initialize current_combiner to valid index."); current_combine = ~0u; /* Debug uncertain case, and fix warning (cxd4). */ break; // can't be found! } @@ -15618,7 +15617,7 @@ void Combine() else color_cmb_list[current].func(); - LRDP(" | |- Color done\n"); + WriteTrace(TraceRDP, TraceDebug, " | |- Color done"); // Now again for alpha current = 0x7FFFFFFF; @@ -15691,7 +15690,7 @@ void Combine() ac_t0(); } - LRDP(" | |- Alpha done\n"); + WriteTrace(TraceRDP, TraceDebug, " | |- Alpha done"); #endif // FASTSEARCH CombineBlender(); @@ -15761,7 +15760,7 @@ void Combine() grChromakeyMode(GR_CHROMAKEY_DISABLE); cmb.shade_mod_hash = (rdp.cmb_flags + rdp.cmb_flags_2) * (rdp.prim_color + rdp.env_color + rdp.K5); - LRDP(" | + Combine end\n"); + WriteTrace(TraceRDP, TraceDebug, " | + Combine end"); } void CombineBlender() @@ -15988,7 +15987,7 @@ void ColorCombinerToExtension() ext_local_a = GR_CMBX_CONSTANT_ALPHA; break; default: - FRDP_E("Invalid combiner locality %u.\n", cmb.c_loc); + WriteTrace(TraceRDP, TraceWarning, "Invalid combiner locality %u.", cmb.c_loc); ext_local = GR_CMBX_ZERO; ext_local_a = GR_CMBX_ZERO; }; @@ -16007,7 +16006,7 @@ void ColorCombinerToExtension() ext_other_a = GR_CMBX_CONSTANT_ALPHA; break; default: - FRDP_E("Invalid combiner flag %u.\n", cmb.c_oth); + WriteTrace(TraceRDP, TraceWarning, "Invalid combiner flag %u.", cmb.c_oth); ext_other = GR_CMBX_ZERO; ext_other_a = GR_CMBX_ZERO; }; @@ -16360,7 +16359,7 @@ void TexColorCombinerToExtension(GrChipID_t tmu) tc_ext_c_invert = 1; break; default: - FRDP_E("Invalid combiner TMU factor %u.\n", tmu_fac); + WriteTrace(TraceRDP, TraceWarning, "Invalid combiner TMU factor %u.", tmu_fac); tc_ext_c = GR_CMBX_ZERO; tc_ext_c_invert = 0; break; @@ -16463,7 +16462,7 @@ void TexColorCombinerToExtension(GrChipID_t tmu) tc_ext_d_invert = 0; break; default: - FRDP_E("Invalid combiner TMU function %u.\n", tmu_func); + WriteTrace(TraceRDP, TraceWarning, "Invalid combiner TMU function %u.", tmu_func); tc_ext_a = GR_CMBX_LOCAL_TEXTURE_RGB; tc_ext_a_mode = GR_FUNC_MODE_ZERO; tc_ext_b = GR_CMBX_LOCAL_TEXTURE_RGB; @@ -16553,7 +16552,7 @@ void TexAlphaCombinerToExtension(GrChipID_t tmu) ta_ext_c_invert = 1; break; default: - FRDP_E("Invalid combiner alpha factor %u.\n", tmu_a_fac); + WriteTrace(TraceRDP, TraceWarning, "Invalid combiner alpha factor %u.", tmu_a_fac); ta_ext_c = GR_CMBX_ZERO; ta_ext_c_invert = 0; break; @@ -16626,7 +16625,7 @@ void TexAlphaCombinerToExtension(GrChipID_t tmu) ta_ext_d_invert = 0; break; default: - FRDP_E("Invalid combiner alpha coverage function %u.\n", tmu_a_func); + WriteTrace(TraceRDP, TraceWarning, "Invalid combiner alpha coverage function %u.", tmu_a_func); ta_ext_a = GR_CMBX_LOCAL_TEXTURE_ALPHA; ta_ext_a_mode = GR_FUNC_MODE_ZERO; ta_ext_b = GR_CMBX_LOCAL_TEXTURE_ALPHA; diff --git a/Source/Glide64/Config.cpp b/Source/Glide64/Config.cpp index 350fc7e86..840c0cddd 100644 --- a/Source/Glide64/Config.cpp +++ b/Source/Glide64/Config.cpp @@ -424,7 +424,7 @@ void ConfigNotebook::set_properties() lblResolution->SetToolTip(tooltip); cmbResolution->SetToolTip(tooltip); cmbResolution->SetSelection(g_settings->res_data); - cbxVSync->SetToolTip("Vertical sync\nThis option will enable the vertical sync, which will prevent tearing.\nNote: this option will ONLY have effect if vsync is set to \"Software Controlled\".\n"); + cbxVSync->SetToolTip("Vertical sync\nThis option will enable the vertical sync, which will prevent tearing.\nNote: this option will ONLY have effect if vsync is set to \"Software Controlled\"."); cbxVSync->SetValue(g_settings->vsync > 0); tooltip = "Select a format, in which screen shots will be saved"; lblScreenShotFormat->SetToolTip(tooltip); @@ -1174,7 +1174,7 @@ void AboutDialog::do_layout() wxStaticText* label_1 = new wxStaticText(this, wxID_ANY, "authors:"); sizer_1->Add(label_1, 0, wxALL | wxALIGN_CENTER_HORIZONTAL, 5); - wxStaticText* label_2 = new wxStaticText(this, wxID_ANY, "Dave2001. Original author and former main developer.\nHe founded Glide64 project on Dec. 29th, 2001.\nLeft the project at fall of 2002.\n"); + wxStaticText* label_2 = new wxStaticText(this, wxID_ANY, "Dave2001. Original author and former main developer.\nHe founded Glide64 project on Dec. 29th, 2001.\nLeft the project at fall of 2002."); label_2->Enable(false); sizer_2->Add(label_2, 0, 0, 0); sizer_1->Add(sizer_2, 1, wxEXPAND, 0); @@ -1214,7 +1214,7 @@ void AboutDialog::do_layout() wxStaticText* label_13 = new wxStaticText(this, wxID_ANY, "olivieryuyu"); sizer_12->Add(label_13, 0, wxALIGN_CENTER_VERTICAL, 0); sizer_1->Add(sizer_12, 1, wxEXPAND, 0); - wxStaticText* label_14 = new wxStaticText(this, wxID_ANY, "special thanks to:\n Orkin, Rice, Daniel Borca, Legend.\nThanks to EmuXHaven for hosting my site:\nhttp://glide64.emuxhaven.net\n", wxDefaultPosition, wxDefaultSize, wxALIGN_CENTRE); + wxStaticText* label_14 = new wxStaticText(this, wxID_ANY, "special thanks to:\n Orkin, Rice, Daniel Borca, Legend.\nThanks to EmuXHaven for hosting my site:\nhttp://glide64.emuxhaven.net", wxDefaultPosition, wxDefaultSize, wxALIGN_CENTRE); sizer_1->Add(label_14, 0, wxALIGN_CENTER_HORIZONTAL, 0); sizer_1->Add(button_ok, 0, wxLEFT | wxRIGHT | wxBOTTOM | wxEXPAND | wxALIGN_CENTER_HORIZONTAL, 10); SetSizer(sizer_1); diff --git a/Source/Glide64/FBtoScreen.cpp b/Source/Glide64/FBtoScreen.cpp index 2ea9d5198..265420316 100644 --- a/Source/Glide64/FBtoScreen.cpp +++ b/Source/Glide64/FBtoScreen.cpp @@ -45,6 +45,7 @@ #include "Gfx_1.3.h" #include "FBtoScreen.h" #include "TexCache.h" +#include static int SetupFBtoScreenCombiner(uint32_t texture_size, uint32_t opaque) { @@ -148,7 +149,7 @@ static void DrawRE2Video(FB_TO_SCREEN_INFO & fb_info, float scale) static void DrawRE2Video256(FB_TO_SCREEN_INFO & fb_info) { - FRDP("DrawRE2Video256. ul_x=%d, ul_y=%d, lr_x=%d, lr_y=%d, size=%d, addr=%08lx\n", fb_info.ul_x, fb_info.ul_y, fb_info.lr_x, fb_info.lr_y, fb_info.size, fb_info.addr); + WriteTrace(TraceRDP, TraceDebug, "DrawRE2Video256. ul_x=%d, ul_y=%d, lr_x=%d, lr_y=%d, size=%d, addr=%08lx", fb_info.ul_x, fb_info.ul_y, fb_info.lr_x, fb_info.lr_y, fb_info.size, fb_info.addr); uint32_t * src = (uint32_t*)(gfx.RDRAM + fb_info.addr); GrTexInfo t_info; t_info.smallLodLog2 = GR_LOD_LOG2_256; @@ -195,7 +196,7 @@ static void DrawFrameBufferToScreen256(FB_TO_SCREEN_INFO & fb_info) DrawRE2Video256(fb_info); return; } - FRDP("DrawFrameBufferToScreen256. ul_x=%d, ul_y=%d, lr_x=%d, lr_y=%d, size=%d, addr=%08lx\n", fb_info.ul_x, fb_info.ul_y, fb_info.lr_x, fb_info.lr_y, fb_info.size, fb_info.addr); + WriteTrace(TraceRDP, TraceDebug, "DrawFrameBufferToScreen256. ul_x=%d, ul_y=%d, lr_x=%d, lr_y=%d, size=%d, addr=%08lx", fb_info.ul_x, fb_info.ul_y, fb_info.lr_x, fb_info.lr_y, fb_info.size, fb_info.addr); uint32_t width = fb_info.lr_x - fb_info.ul_x + 1; uint32_t height = fb_info.lr_y - fb_info.ul_y + 1; GrTexInfo t_info; @@ -313,7 +314,7 @@ bool DrawFrameBufferToScreen(FB_TO_SCREEN_INFO & fb_info) DrawFrameBufferToScreen256(fb_info); return true; } - FRDP("DrawFrameBufferToScreen. ul_x=%d, ul_y=%d, lr_x=%d, lr_y=%d, size=%d, addr=%08lx\n", fb_info.ul_x, fb_info.ul_y, fb_info.lr_x, fb_info.lr_y, fb_info.size, fb_info.addr); + WriteTrace(TraceRDP, TraceDebug, "DrawFrameBufferToScreen. ul_x=%d, ul_y=%d, lr_x=%d, lr_y=%d, size=%d, addr=%08lx", fb_info.ul_x, fb_info.ul_y, fb_info.lr_x, fb_info.lr_y, fb_info.size, fb_info.addr); GrTexInfo t_info; uint8_t * image = gfx.RDRAM + fb_info.addr; uint32_t texwidth; @@ -429,7 +430,7 @@ bool DrawFrameBufferToScreen(FB_TO_SCREEN_INFO & fb_info) static void DrawDepthBufferToScreen256(FB_TO_SCREEN_INFO & fb_info) { - FRDP("DrawDepthBufferToScreen256. ul_x=%d, ul_y=%d, lr_x=%d, lr_y=%d, size=%d, addr=%08lx\n", fb_info.ul_x, fb_info.ul_y, fb_info.lr_x, fb_info.lr_y, fb_info.size, fb_info.addr); + WriteTrace(TraceRDP, TraceDebug, "DrawDepthBufferToScreen256. ul_x=%d, ul_y=%d, lr_x=%d, lr_y=%d, size=%d, addr=%08lx", fb_info.ul_x, fb_info.ul_y, fb_info.lr_x, fb_info.lr_y, fb_info.size, fb_info.addr); uint32_t width = fb_info.lr_x - fb_info.ul_x + 1; uint32_t height = fb_info.lr_y - fb_info.ul_y + 1; GrTexInfo t_info; @@ -501,7 +502,7 @@ static void DrawDepthBufferToScreen256(FB_TO_SCREEN_INFO & fb_info) static void DrawHiresDepthBufferToScreen(FB_TO_SCREEN_INFO & fb_info) { - FRDP("DrawHiresDepthBufferToScreen. ul_x=%d, ul_y=%d, lr_x=%d, lr_y=%d, size=%d, addr=%08lx\n", fb_info.ul_x, fb_info.ul_y, fb_info.lr_x, fb_info.lr_y, fb_info.size, fb_info.addr); + WriteTrace(TraceRDP, TraceDebug, "DrawHiresDepthBufferToScreen. ul_x=%d, ul_y=%d, lr_x=%d, lr_y=%d, size=%d, addr=%08lx", fb_info.ul_x, fb_info.ul_y, fb_info.lr_x, fb_info.lr_y, fb_info.size, fb_info.addr); GrTexInfo t_info; float scale = 0.25f; GrLOD_t LOD = GR_LOD_LOG2_1024; @@ -582,7 +583,7 @@ void DrawDepthBufferToScreen(FB_TO_SCREEN_INFO & fb_info) DrawHiresDepthBufferToScreen(fb_info); return; } - FRDP("DrawDepthBufferToScreen. ul_x=%d, ul_y=%d, lr_x=%d, lr_y=%d, size=%d, addr=%08lx\n", fb_info.ul_x, fb_info.ul_y, fb_info.lr_x, fb_info.lr_y, fb_info.size, fb_info.addr); + WriteTrace(TraceRDP, TraceDebug, "DrawDepthBufferToScreen. ul_x=%d, ul_y=%d, lr_x=%d, lr_y=%d, size=%d, addr=%08lx", fb_info.ul_x, fb_info.ul_y, fb_info.lr_x, fb_info.lr_y, fb_info.size, fb_info.addr); GrTexInfo t_info; uint8_t * image = gfx.RDRAM + fb_info.addr; uint32_t texwidth; diff --git a/Source/Glide64/Gfx_1.3.h b/Source/Glide64/Gfx_1.3.h index b4eec2cfc..f51dc51b0 100644 --- a/Source/Glide64/Gfx_1.3.h +++ b/Source/Glide64/Gfx_1.3.h @@ -106,11 +106,9 @@ extern "C" { //#define ALTTAB_FIX - //#define EXTREME_LOGGING // lots of logging // note that some of these things are inserted/removed // from within the code & may not be changed by this define. - //#define TLUT_LOGGING // log every entry of the TLUT? // ******************************** #define FPS // fps counter able? (not enabled necessarily) @@ -127,9 +125,7 @@ extern "C" { // the command is logged before continuing (in case of // crash or exception, the log will not be cut short) #ifndef _ENDUSER_RELEASE_ -#define RDP_LOGGING // Allow logging (will not log unless checked, but allows the option) - // Logging functions will not be compiled if this is not present. - //#define RDP_ERROR_LOG + #endif #define FPS_FRAMES 10 // Number of frames in which to make an FPS count @@ -151,15 +147,7 @@ extern "C" { //#define SIMULATE_BANSHEE //******** -#ifdef EXT_LOGGING - extern std::ofstream extlog; -#define EXT(x) extlog.open("ext.txt",std::ios::app); extlog << x; extlog.close(); -#else -#define EXT(x) -#endif - #ifndef _ENDUSER_RELEASE_ -#define UNIMP_LOG // Keep enabled, option in dialog #define BRIGHT_RED // Keep enabled, option in dialog #endif @@ -189,78 +177,6 @@ extern "C" { extern int64 perf_next; #endif -#ifdef RDP_LOGGING - extern int log_open; - extern std::ofstream rdp_log; -#define OPEN_RDP_LOG() EXT("OPEN_RDP_LOG ()\n"); if (g_settings->logging && !log_open) { rdp_log.open ("rdp.txt"); log_open=TRUE; } -#define CLOSE_RDP_LOG() EXT("CLOSE_RDP_LOG ()\n"); if (g_settings->logging && log_open) { rdp_log.close (); log_open=FALSE; } - -#ifdef LOGNOTKEY -#define LRDP(x) EXT("RDP (...)\n"); if (g_settings->logging && log_open) { if (!CheckKeyPressed(LOGKEY,0x8000)) { rdp_log << x; rdp_log.flush(); } } -#else -#define LRDP(x) EXT("RDP (...)\n"); if (g_settings->logging && log_open) { rdp_log << x; rdp_log.flush(); } -#endif - -#else -#define OPEN_RDP_LOG() -#define CLOSE_RDP_LOG() -#define LRDP(x) -#endif - -#ifdef RDP_ERROR_LOG - extern int elog_open; - extern std::ofstream rdp_err; -#define OPEN_RDP_E_LOG() EXT("OPEN_RDP_E_LOG ()\n"); if (g_settings->elogging && !elog_open) { rdp_err.open ("rdp_e.txt"); elog_open=TRUE; } -#define CLOSE_RDP_E_LOG() EXT("CLOSE_RDP_LOG ()\n"); if (g_settings->elogging && elog_open) { rdp_err.close (); elog_open=FALSE; } -#define RDP_E(x) if (g_settings->elogging) { FRDP_E (x); } -#else -#define OPEN_RDP_E_LOG() -#define CLOSE_RDP_E_LOG() -#define RDP_E(x) -#endif - -#ifdef RDP_LOGGING - __inline void FRDP(const char *fmt, ...) - { - if (!g_settings->logging || !log_open) return; - -#ifdef LOGNOTKEY - if (CheckKeyPressed(LOGKEY, 0x8000)) return; -#endif - - va_list ap; - va_start(ap, fmt); - vsprintf(out_buf, fmt, ap); - LRDP(out_buf); - va_end(ap); - } -#else - __inline void FRDP(const char * /*fmt*/, ...) {} -#endif - -#ifdef RDP_ERROR_LOG - __inline void FRDP_E(const char *fmt, ...) - { - if (!g_settings->elogging || !elog_open) return; - -#ifdef LOGNOTKEY - if (CheckKeyPressed(LOGKEY, 0x8000)) return; -#endif - - sprintf(out_buf, "%08lx: (%08lx, %08lx) ", rdp.pc[rdp.pc_i] - 8, rdp.cmd0, rdp.cmd1); - rdp_err << out_buf; - - va_list ap2; - va_start(ap2, fmt); - vsprintf(out_buf, fmt, ap2); - rdp_err << out_buf; - rdp_err.flush(); - va_end(ap2); - } -#else - __inline void FRDP_E(const char * /*fmt*/, ...) {} -#endif - extern int GfxInitDone; extern int romopen; extern int to_fullscreen; diff --git a/Source/Glide64/Main.cpp b/Source/Glide64/Main.cpp index a285c2cb5..6e352e21e 100644 --- a/Source/Glide64/Main.cpp +++ b/Source/Glide64/Main.cpp @@ -61,20 +61,6 @@ int ghq_dmptex_toggle_key = 0; #endif -#ifdef EXT_LOGGING -std::ofstream extlog; -#endif - -#ifdef RDP_LOGGING -int log_open = FALSE; -std::ofstream rdp_log; -#endif - -#ifdef RDP_ERROR_LOG -int elog_open = FALSE; -std::ofstream rdp_err; -#endif - GFX_INFO gfx; int to_fullscreen = FALSE; @@ -213,8 +199,8 @@ void _ChangeSize() rdp.vi_height = (vend - vstart) * fscale_y * 1.0126582f; float aspect = (g_settings->adjust_aspect && (fscale_y > fscale_x) && (rdp.vi_width > rdp.vi_height)) ? fscale_x / fscale_y : 1.0f; - WriteTrace(TraceResolution, TraceDebug, "hstart: %d, hend: %d, vstart: %d, vend: %d\n", hstart, hend, vstart, vend); - WriteTrace(TraceResolution, TraceDebug, "size: %d x %d\n", (int)rdp.vi_width, (int)rdp.vi_height); + WriteTrace(TraceResolution, TraceDebug, "hstart: %d, hend: %d, vstart: %d, vend: %d", hstart, hend, vstart, vend); + WriteTrace(TraceResolution, TraceDebug, "size: %d x %d", (int)rdp.vi_width, (int)rdp.vi_height); rdp.scale_x = (float)g_settings->res_x / rdp.vi_width; if (region > 0 && g_settings->pal230) @@ -383,7 +369,7 @@ void ReadSettings() void ReadSpecialSettings(const char * name) { // char buf [256]; - // sprintf(buf, "ReadSpecialSettings. Name: %s\n", name); + // sprintf(buf, "ReadSpecialSettings. Name: %s", name); // LOG(buf); g_settings->hacks = 0; @@ -718,8 +704,8 @@ void guLoadTextures() if (cur&b) *tex8 = 0xFF; else *tex8 = 0x00; tex8++; - } } +} grTexDownloadMipMap(GR_TMU0, voodoo.tex_min_addr[GR_TMU0] + offset_font, @@ -794,8 +780,6 @@ int InitGfx() ReleaseGfx(); } - OPEN_RDP_LOG(); // doesn't matter if opens again; it will check for it - OPEN_RDP_E_LOG(); WriteTrace(TraceGlide64, TraceDebug, "-"); debugging = FALSE; @@ -1002,7 +986,7 @@ int InitGfx() fog_t[0] = 0; // for (int f = 0; f < 64; f++) // { - // FRDP("fog[%d]=%d->%f\n", f, fog_t[f], guFogTableIndexToW(f)); + // WriteTrace(TraceRDP, TraceDebug, "fog[%d]=%d->%f", f, fog_t[f], guFogTableIndexToW(f)); // } grFogTable(fog_t); grVertexLayout(GR_PARAM_FOG_EXT, offsetof(VERTEX, f), GR_PARAM_ENABLE); @@ -1387,7 +1371,7 @@ void CALL CloseDLL(void) voodoo.gamma_table_g = 0; delete[] voodoo.gamma_table_b; voodoo.gamma_table_b = 0; -} + } /****************************************************************** Function: DllTest @@ -1643,12 +1627,12 @@ void CALL RomClosed(void) { WriteTrace(TraceGlide64, TraceDebug, "-"); - CLOSE_RDP_LOG(); - CLOSE_RDP_E_LOG(); rdp.window_changed = TRUE; romopen = FALSE; if (evoodoo) + { ReleaseGfx(); + } } static void CheckDRAMSize() @@ -1667,7 +1651,7 @@ static void CheckDRAMSize() else BMASK = WMASK; #ifdef LOGGING - sprintf(out_buf, "Detected RDRAM size: %08lx\n", BMASK); + sprintf(out_buf, "Detected RDRAM size: %08lx", BMASK); LOG(out_buf); #endif } @@ -1733,9 +1717,6 @@ void CALL RomOpen(void) CheckDRAMSize(); - OPEN_RDP_LOG(); - OPEN_RDP_E_LOG(); - // ** EVOODOO EXTENSIONS ** if (!GfxInitDone) { @@ -1787,7 +1768,7 @@ void drawViRegBG() fb_info.height = (uint32_t)rdp.vi_height; if (fb_info.height == 0) { - LRDP("Image height = 0 - skipping\n"); + WriteTrace(TraceRDP, TraceDebug, "Image height = 0 - skipping"); return; } fb_info.ul_x = 0; @@ -1832,7 +1813,7 @@ output: none uint32_t update_screen_count = 0; void CALL UpdateScreen(void) { - WriteTrace(TraceGlide64, TraceDebug, "Origin: %08x, Old origin: %08x, width: %d\n", *gfx.VI_ORIGIN_REG, rdp.vi_org_reg, *gfx.VI_WIDTH_REG); + WriteTrace(TraceGlide64, TraceDebug, "Origin: %08x, Old origin: %08x, width: %d", *gfx.VI_ORIGIN_REG, rdp.vi_org_reg, *gfx.VI_WIDTH_REG); uint32_t width = (*gfx.VI_WIDTH_REG) << 1; if (*gfx.VI_ORIGIN_REG > width) @@ -1862,7 +1843,7 @@ void CALL UpdateScreen(void) uint32_t limit = (g_settings->hacks&hack_Lego) ? 15 : 30; if ((g_settings->frame_buffer&fb_cpu_write_hack) && (update_screen_count > limit) && (rdp.last_bg == 0)) { - LRDP("DirectCPUWrite hack!\n"); + WriteTrace(TraceRDP, TraceDebug, "DirectCPUWrite hack!"); update_screen_count = 0; no_dlist = true; ClearCache(); @@ -1876,9 +1857,9 @@ void CALL UpdateScreen(void) if (*gfx.VI_ORIGIN_REG > width) { ChangeSize(); - LRDP("ChangeSize done\n"); + WriteTrace(TraceRDP, TraceDebug, "ChangeSize done"); DrawFrameBuffer(); - LRDP("DrawFrameBuffer done\n"); + WriteTrace(TraceRDP, TraceDebug, "DrawFrameBuffer done"); rdp.updatescreen = 1; newSwapBuffers(); } @@ -1936,7 +1917,7 @@ void newSwapBuffers() rdp.updatescreen = 0; - LRDP("swapped\n"); + WriteTrace(TraceRDP, TraceDebug, "swapped"); rdp.update |= UPDATE_SCISSOR | UPDATE_COMBINE | UPDATE_ZBUF_ENABLED | UPDATE_CULL_MODE; grClipWindow(0, 0, g_settings->scr_res_x, g_settings->scr_res_y); diff --git a/Source/Glide64/TexBuffer.cpp b/Source/Glide64/TexBuffer.cpp index 93b6f6225..2759d9640 100644 --- a/Source/Glide64/TexBuffer.cpp +++ b/Source/Glide64/TexBuffer.cpp @@ -46,6 +46,7 @@ #include "Gfx_1.3.h" #include "TexBuffer.h" #include "CRC.h" +#include static TBUFF_COLOR_IMAGE * AllocateTextureBuffer(COLOR_IMAGE & cimage) { @@ -153,7 +154,7 @@ static TBUFF_COLOR_IMAGE * AllocateTextureBuffer(COLOR_IMAGE & cimage) texbuf.crc = 0; texbuf.t_mem = 0; - FRDP("\nAllocateTextureBuffer. width: %d, height: %d, scr_width: %f, scr_height: %f, vi_width: %f, vi_height:%f, scale_x: %f, scale_y: %f, lr_u: %f, lr_v: %f, u_scale: %f, v_scale: %f\n", texbuf.width, texbuf.height, texbuf.scr_width, texbuf.scr_height, rdp.vi_width, rdp.vi_height, rdp.scale_x, rdp.scale_y, texbuf.lr_u, texbuf.lr_v, texbuf.u_scale, texbuf.v_scale); + WriteTrace(TraceRDP, TraceDebug, "\nAllocateTextureBuffer. width: %d, height: %d, scr_width: %f, scr_height: %f, vi_width: %f, vi_height:%f, scale_x: %f, scale_y: %f, lr_u: %f, lr_v: %f, u_scale: %f, v_scale: %f", texbuf.width, texbuf.height, texbuf.scr_width, texbuf.scr_height, rdp.vi_width, rdp.vi_height, rdp.scale_x, rdp.scale_y, texbuf.lr_u, texbuf.lr_v, texbuf.u_scale, texbuf.v_scale); uint32_t required = grTexCalcMemRequired(texbuf.info.smallLodLog2, texbuf.info.largeLodLog2, texbuf.info.aspectRatioLog2, texbuf.info.format); @@ -210,7 +211,7 @@ static TBUFF_COLOR_IMAGE * AllocateTextureBuffer(COLOR_IMAGE & cimage) int OpenTextureBuffer(COLOR_IMAGE & cimage) { - FRDP("OpenTextureBuffer. cur_tex_buf: %d, addr: %08lx, width: %d, height: %d", rdp.cur_tex_buf, cimage.addr, cimage.width, cimage.height); + WriteTrace(TraceRDP, TraceDebug, "OpenTextureBuffer. cur_tex_buf: %d, addr: %08lx, width: %d, height: %d", rdp.cur_tex_buf, cimage.addr, cimage.width, cimage.height); int found = FALSE, search = TRUE; TBUFF_COLOR_IMAGE *texbuf = 0; @@ -229,7 +230,7 @@ int OpenTextureBuffer(COLOR_IMAGE & cimage) if (g_settings->hacks&hack_PMario) //motion blur effects in Paper Mario { rdp.cur_tex_buf = rdp.acc_tex_buf; - FRDP("\nread_whole_frame. last allocated bank: %d\n", rdp.acc_tex_buf); + WriteTrace(TraceRDP, TraceDebug, "\nread_whole_frame. last allocated bank: %d", rdp.acc_tex_buf); } else { @@ -301,22 +302,22 @@ int OpenTextureBuffer(COLOR_IMAGE & cimage) } else { - LRDP(" not searched"); + WriteTrace(TraceRDP, TraceDebug, " not searched"); } if (!found) { - LRDP(" not found"); + WriteTrace(TraceRDP, TraceDebug, " not found"); texbuf = AllocateTextureBuffer(cimage); } else { - LRDP(" found"); + WriteTrace(TraceRDP, TraceDebug, " found"); } if (!texbuf) { - LRDP(" KO\n"); + WriteTrace(TraceRDP, TraceDebug, " KO"); return FALSE; } @@ -335,7 +336,7 @@ int OpenTextureBuffer(COLOR_IMAGE & cimage) } //*/ // memset(gfx.RDRAM+cimage.addr, 0, cimage.width*cimage.height*cimage.size); - FRDP(" texaddr: %08lx, tex_width: %d, tex_height: %d, cur_tex_buf: %d, texformat: %d, motionblur: %d\n", rdp.cur_image->tex_addr, rdp.cur_image->tex_width, rdp.cur_image->tex_height, rdp.cur_tex_buf, rdp.cur_image->info.format, rdp.motionblur); + WriteTrace(TraceRDP, TraceDebug, " texaddr: %08lx, tex_width: %d, tex_height: %d, cur_tex_buf: %d, texformat: %d, motionblur: %d", rdp.cur_image->tex_addr, rdp.cur_image->tex_width, rdp.cur_image->tex_height, rdp.cur_tex_buf, rdp.cur_image->info.format, rdp.motionblur); if (!rdp.offset_x_bak) { rdp.offset_x_bak = rdp.offset_x; @@ -421,7 +422,7 @@ int CloseTextureBuffer(int draw) { if (!rdp.cur_image) { - LRDP("CloseTextureBuffer KO\n"); + WriteTrace(TraceRDP, TraceDebug, "CloseTextureBuffer KO"); return FALSE; } grRenderBuffer(GR_BUFFER_BACKBUFFER); @@ -431,7 +432,7 @@ int CloseTextureBuffer(int draw) rdp.update |= UPDATE_VIEWPORT | UPDATE_SCISSOR; if (!draw) { - LRDP("CloseTextureBuffer no draw, OK\n"); + WriteTrace(TraceRDP, TraceDebug, "CloseTextureBuffer no draw, OK"); rdp.cur_image = 0; return TRUE; } @@ -445,7 +446,7 @@ int CloseTextureBuffer(int draw) float lr_y = rdp.tbuff_tex->scr_height + rdp.offset_y; float lr_u = rdp.tbuff_tex->lr_u; float lr_v = rdp.tbuff_tex->lr_v; - FRDP("lr_x: %f, lr_y: %f, lr_u: %f, lr_v: %f\n", lr_x, lr_y, lr_u, lr_v); + WriteTrace(TraceRDP, TraceDebug, "lr_x: %f, lr_y: %f, lr_u: %f, lr_v: %f", lr_x, lr_y, lr_u, lr_v); // Make the vertices VERTEX v[4] = { @@ -464,14 +465,14 @@ int CloseTextureBuffer(int draw) { grFogMode(GR_FOG_WITH_TABLE_ON_FOGCOORD_EXT); } - LRDP("CloseTextureBuffer draw, OK\n"); + WriteTrace(TraceRDP, TraceDebug, "CloseTextureBuffer draw, OK"); rdp.tbuff_tex = 0; return TRUE; } int CopyTextureBuffer(COLOR_IMAGE & fb_from, COLOR_IMAGE & fb_to) { - FRDP("CopyTextureBuffer from %08x to %08x\n", fb_from.addr, fb_to.addr); + WriteTrace(TraceRDP, TraceDebug, "CopyTextureBuffer from %08x to %08x", fb_from.addr, fb_to.addr); if (rdp.cur_image) { rdp.cur_image->crc = 0; @@ -481,12 +482,12 @@ int CopyTextureBuffer(COLOR_IMAGE & fb_from, COLOR_IMAGE & fb_to) } else if (!FindTextureBuffer(fb_from.addr, (uint16_t)fb_from.width)) { - LRDP("Can't find 'from' buffer.\n"); + WriteTrace(TraceRDP, TraceDebug, "Can't find 'from' buffer."); return FALSE; } if (!OpenTextureBuffer(fb_to)) { - LRDP("Can't open new buffer.\n"); + WriteTrace(TraceRDP, TraceDebug, "Can't open new buffer."); return CloseTextureBuffer(TRUE); } rdp.tbuff_tex->crc = 0; @@ -500,7 +501,7 @@ int CopyTextureBuffer(COLOR_IMAGE & fb_from, COLOR_IMAGE & fb_to) float zero = 0.0f; float lr_u = rdp.tbuff_tex->lr_u; float lr_v = rdp.tbuff_tex->lr_v; - FRDP("lr_x: %f, lr_y: %f\n", lr_x, lr_y); + WriteTrace(TraceRDP, TraceDebug, "lr_x: %f, lr_y: %f", lr_x, lr_y); // Make the vertices VERTEX v[4] = { @@ -527,7 +528,7 @@ int CopyTextureBuffer(COLOR_IMAGE & fb_from, COLOR_IMAGE & fb_to) rdp.update |= UPDATE_VIEWPORT | UPDATE_SCISSOR; if (g_settings->fog && (rdp.flags & FOG_ENABLED)) grFogMode(GR_FOG_WITH_TABLE_ON_FOGCOORD_EXT); - LRDP("CopyTextureBuffer draw, OK\n"); + WriteTrace(TraceRDP, TraceDebug, "CopyTextureBuffer draw, OK"); rdp.tbuff_tex = 0; rdp.cur_image = 0; return TRUE; @@ -535,7 +536,7 @@ int CopyTextureBuffer(COLOR_IMAGE & fb_from, COLOR_IMAGE & fb_to) int CopyDepthBuffer() { - LRDP("CopyDepthBuffer. "); + WriteTrace(TraceRDP, TraceDebug, "CopyDepthBuffer. "); float bound = 1024.0f; GrLOD_t LOD = GR_LOD_LOG2_1024; if (g_settings->scr_res_x > 1024) @@ -556,7 +557,7 @@ int CopyDepthBuffer() float zero = 0.0f; float lr_u = 255.5f; float lr_v = 255.5f; - FRDP("lr_x: %f, lr_y: %f\n", lr_x, lr_y); + WriteTrace(TraceRDP, TraceDebug, "lr_x: %f, lr_y: %f", lr_x, lr_y); // Make the vertices VERTEX v[4] = { @@ -581,7 +582,7 @@ int CopyDepthBuffer() rdp.update |= UPDATE_ZBUF_ENABLED | UPDATE_COMBINE | UPDATE_TEXTURE | UPDATE_ALPHA_COMPARE; if (g_settings->fog && (rdp.flags & FOG_ENABLED)) grFogMode(GR_FOG_WITH_TABLE_ON_FOGCOORD_EXT); - LRDP("CopyDepthBuffer draw, OK\n"); + WriteTrace(TraceRDP, TraceDebug, "CopyDepthBuffer draw, OK"); rdp.tbuff_tex = 0; return TRUE; } @@ -590,7 +591,7 @@ int SwapTextureBuffer() { if (!rdp.tbuff_tex) return FALSE; - LRDP("SwapTextureBuffer."); + WriteTrace(TraceRDP, TraceDebug, "SwapTextureBuffer."); COLOR_IMAGE ci; ci.addr = rdp.tbuff_tex->addr; ci.format = rdp.tbuff_tex->format; @@ -602,7 +603,7 @@ int SwapTextureBuffer() TBUFF_COLOR_IMAGE * texbuf = AllocateTextureBuffer(ci); if (!texbuf) { - LRDP("Failed!\n"); + WriteTrace(TraceRDP, TraceDebug, "Failed!"); return FALSE; } TexBufSetupCombiner(); @@ -657,7 +658,7 @@ int SwapTextureBuffer() { grFogMode(GR_FOG_WITH_TABLE_ON_FOGCOORD_EXT); } - LRDP("SwapTextureBuffer draw, OK\n"); + WriteTrace(TraceRDP, TraceDebug, "SwapTextureBuffer draw, OK"); return TRUE; } @@ -683,7 +684,7 @@ int FindTextureBuffer(uint32_t addr, uint16_t width) { if (rdp.skip_drawing) return FALSE; - FRDP("FindTextureBuffer. addr: %08lx, width: %d, scale_x: %f\n", addr, width, rdp.scale_x); + WriteTrace(TraceRDP, TraceDebug, "FindTextureBuffer. addr: %08lx, width: %d, scale_x: %f", addr, width, rdp.scale_x); int found = FALSE; uint32_t shift = 0; for (int i = 0; i < voodoo.num_tmu && !found; i++) @@ -709,7 +710,7 @@ int FindTextureBuffer(uint32_t addr, uint16_t width) if (!rdp.cur_image) rdp.cur_tex_buf = index; found = TRUE; - // FRDP("FindTextureBuffer, found in TMU%d buffer: %d\n", rdp.tbuff_tex->tmu, j); + // WriteTrace(TraceRDP, TraceDebug, "FindTextureBuffer, found in TMU%d buffer: %d", rdp.tbuff_tex->tmu, j); } else //new texture is loaded into this place, texture buffer is not valid anymore { @@ -735,11 +736,11 @@ int FindTextureBuffer(uint32_t addr, uint16_t width) rdp.tbuff_tex->v_shift = 0; rdp.tbuff_tex->u_shift = 0; } - FRDP("FindTextureBuffer, found, u_shift: %d, v_shift: %d, format: %s\n", rdp.tbuff_tex->u_shift, rdp.tbuff_tex->v_shift, str_format[rdp.tbuff_tex->format]); - //FRDP("Buffer, addr=%08lx, end_addr=%08lx, width: %d, height: %d\n", rdp.tbuff_tex->addr, rdp.tbuff_tex->end_addr, rdp.tbuff_tex->width, rdp.tbuff_tex->height); + WriteTrace(TraceRDP, TraceDebug, "FindTextureBuffer, found, u_shift: %d, v_shift: %d, format: %s", rdp.tbuff_tex->u_shift, rdp.tbuff_tex->v_shift, str_format[rdp.tbuff_tex->format]); + //WriteTrace(TraceRDP, TraceDebug, "Buffer, addr=%08lx, end_addr=%08lx, width: %d, height: %d", rdp.tbuff_tex->addr, rdp.tbuff_tex->end_addr, rdp.tbuff_tex->width, rdp.tbuff_tex->height); return TRUE; } rdp.tbuff_tex = 0; - LRDP("FindTextureBuffer, not found\n"); + WriteTrace(TraceRDP, TraceDebug, "FindTextureBuffer, not found"); return FALSE; } \ No newline at end of file diff --git a/Source/Glide64/TexCache.cpp b/Source/Glide64/TexCache.cpp index 6d4533794..f0ccc5eb5 100644 --- a/Source/Glide64/TexCache.cpp +++ b/Source/Glide64/TexCache.cpp @@ -42,6 +42,7 @@ #include "Combine.h" #include "Util.h" #include +#include void LoadTex(int id, int tmu); @@ -173,7 +174,7 @@ uint32_t textureCRC(uint8_t *addr, int width, int height, int line) void GetTexInfo(int id, int tile) { - FRDP(" | |-+ GetTexInfo (id: %d, tile: %d)\n", id, tile); + WriteTrace(TraceRDP, TraceDebug, " | |-+ GetTexInfo (id: %d, tile: %d)", id, tile); // this is the NEW cache searching, searches only textures with similar crc's int t; @@ -305,15 +306,15 @@ void GetTexInfo(int id, int tile) info->splits = 1; } - LRDP(" | | |-+ Texture approved:\n"); - FRDP(" | | | |- tmem: %08lx\n", rdp.tiles[tile].t_mem); - FRDP(" | | | |- load width: %d\n", width); - FRDP(" | | | |- load height: %d\n", height); - FRDP(" | | | |- actual width: %d\n", rdp.tiles[tile].width); - FRDP(" | | | |- actual height: %d\n", rdp.tiles[tile].height); - FRDP(" | | | |- size: %d\n", rdp.tiles[tile].size); - FRDP(" | | | +- format: %d\n", rdp.tiles[tile].format); - LRDP(" | | |- Calculating CRC... "); + WriteTrace(TraceRDP, TraceDebug, " | | |-+ Texture approved:"); + WriteTrace(TraceRDP, TraceDebug, " | | | |- tmem: %08lx", rdp.tiles[tile].t_mem); + WriteTrace(TraceRDP, TraceDebug, " | | | |- load width: %d", width); + WriteTrace(TraceRDP, TraceDebug, " | | | |- load height: %d", height); + WriteTrace(TraceRDP, TraceDebug, " | | | |- actual width: %d", rdp.tiles[tile].width); + WriteTrace(TraceRDP, TraceDebug, " | | | |- actual height: %d", rdp.tiles[tile].height); + WriteTrace(TraceRDP, TraceDebug, " | | | |- size: %d", rdp.tiles[tile].size); + WriteTrace(TraceRDP, TraceDebug, " | | | +- format: %d", rdp.tiles[tile].format); + WriteTrace(TraceRDP, TraceDebug, " | | |- Calculating CRC... "); // ** CRC CHECK @@ -332,7 +333,7 @@ void GetTexInfo(int id, int tile) // Texture too big for tmem & needs to wrap? (trees in mm) if (rdp.tiles[tile].t_mem + minval(height, tile_height) * (rdp.tiles[tile].line << 3) > 4096) { - LRDP("TEXTURE WRAPS TMEM!!! "); + WriteTrace(TraceRDP, TraceDebug, "TEXTURE WRAPS TMEM!!! "); // calculate the y value that intersects at 4096 bytes int y = (4096 - rdp.tiles[tile].t_mem) / (rdp.tiles[tile].line << 3); @@ -346,7 +347,7 @@ void GetTexInfo(int id, int tile) rdp.tiles[tile].mask_t = shift; // restart the function - LRDP("restarting...\n"); + WriteTrace(TraceRDP, TraceDebug, "restarting..."); GetTexInfo(id, tile); return; } @@ -411,7 +412,7 @@ void GetTexInfo(int id, int tile) crc += rdp.pal_256_crc; } - FRDP("Done. CRC is: %08lx.\n", crc); + WriteTrace(TraceRDP, TraceDebug, "Done. CRC is: %08lx.", crc); uint32_t flags = (rdp.tiles[tile].clamp_s << 23) | (rdp.tiles[tile].mirror_s << 22) | (rdp.tiles[tile].mask_s << 18) | (rdp.tiles[tile].clamp_t << 17) | @@ -431,7 +432,7 @@ void GetTexInfo(int id, int tile) info->flags = flags; // Search the texture cache for this texture - LRDP(" | | |-+ Checking cache...\n"); + WriteTrace(TraceRDP, TraceDebug, " | | |-+ Checking cache..."); CACHE_LUT *cache; @@ -477,7 +478,7 @@ void GetTexInfo(int id, int tile) (cache->mod_color2&mod_mask) == (modcolor2&mod_mask) && abs((int)(cache->mod_factor - modfactor)) < 8)) { - FRDP(" | | | |- Texture found in cache (tmu=%d).\n", node->tmu); + WriteTrace(TraceRDP, TraceDebug, " | | | |- Texture found in cache (tmu=%d).", node->tmu); tex_found[id][node->tmu] = node->number; if (voodoo.tex_UMA) { @@ -490,7 +491,7 @@ void GetTexInfo(int id, int tile) node = node->pNext; } - LRDP(" | | | +- Done.\n | | +- GetTexInfo end\n"); + WriteTrace(TraceRDP, TraceDebug, " | | | +- Done.\n | | +- GetTexInfo end"); } //**************************************************************** @@ -515,7 +516,7 @@ int ChooseBestTmu(int tmu1, int tmu2) // SelectTBuffTex - select texture from texture buffer static void SelectTBuffTex(TBUFF_COLOR_IMAGE * pTBuffTex) { - FRDP("SelectTBuffTex: tex: %d, tmu: %d, tile: %d\n", rdp.tex, pTBuffTex->tmu, pTBuffTex->tile); + WriteTrace(TraceRDP, TraceDebug, "SelectTBuffTex: tex: %d, tmu: %d, tile: %d", rdp.tex, pTBuffTex->tmu, pTBuffTex->tile); grTexSource(pTBuffTex->tile, pTBuffTex->tex_addr, GR_MIPMAPLEVELMASK_BOTH, &(pTBuffTex->info)); } @@ -524,7 +525,7 @@ static void SelectTBuffTex(TBUFF_COLOR_IMAGE * pTBuffTex) int SwapTextureBuffer(); void TexCache() { - LRDP(" |-+ TexCache called\n"); + WriteTrace(TraceRDP, TraceDebug, " |-+ TexCache called"); #ifdef TEXTURE_FILTER /* Hiroshi Morii */ // POSTNAPALM if (g_settings->ghq_use && g_settings->ghq_hirs_dump) { @@ -537,11 +538,11 @@ void TexCache() extern void DisplayLoadProgress(const wchar_t *format, ...); ghq_dmptex_toggle_key = !ghq_dmptex_toggle_key; if (ghq_dmptex_toggle_key) { - DisplayLoadProgress(L"Texture dump - ON\n"); + DisplayLoadProgress(L"Texture dump - ON"); ClearCache(); } else { - DisplayLoadProgress(L"Texture dump - OFF\n"); + DisplayLoadProgress(L"Texture dump - OFF"); } pjutil::Sleep(1000); } @@ -604,9 +605,9 @@ void TexCache() tmu_1_mode = TMUMODE_NONE; } - FRDP(" | |-+ Modes set:\n | | |- tmu_0 = %d\n | | |- tmu_1 = %d\n", + WriteTrace(TraceRDP, TraceDebug, " | |-+ Modes set:\n | | |- tmu_0 = %d\n | | |- tmu_1 = %d", tmu_0, tmu_1); - FRDP(" | | |- tmu_0_mode = %d\n | | |- tmu_1_mode = %d\n", + WriteTrace(TraceRDP, TraceDebug, " | | |- tmu_0_mode = %d\n | | |- tmu_1_mode = %d", tmu_0_mode, tmu_1_mode); if (tmu_0_mode == TMUMODE_PASSTHRU) { @@ -733,7 +734,7 @@ void TexCache() // Now actually combine if (cmb.cmb_ext_use) { - LRDP(" | | | |- combiner extension\n"); + WriteTrace(TraceRDP, TraceDebug, " | | | |- combiner extension"); if (!(cmb.cmb_ext_use & COMBINE_EXT_COLOR)) ColorCombinerToExtension(); if (!(cmb.cmb_ext_use & COMBINE_EXT_ALPHA)) @@ -762,7 +763,7 @@ void TexCache() { if (cmb.tex_cmb_ext_use) { - LRDP(" | | | |- combiner extension tmu1\n"); + WriteTrace(TraceRDP, TraceDebug, " | | | |- combiner extension tmu1"); if (!(cmb.tex_cmb_ext_use & TEX_COMBINE_EXT_COLOR)) TexColorCombinerToExtension(GR_TMU1); if (!(cmb.tex_cmb_ext_use & TEX_COMBINE_EXT_ALPHA)) @@ -790,7 +791,7 @@ void TexCache() { if (cmb.tex_cmb_ext_use) { - LRDP(" | | | |- combiner extension tmu0\n"); + WriteTrace(TraceRDP, TraceDebug, " | | | |- combiner extension tmu0"); if (!(cmb.tex_cmb_ext_use & TEX_COMBINE_EXT_COLOR)) TexColorCombinerToExtension(GR_TMU0); if (!(cmb.tex_cmb_ext_use & TEX_COMBINE_EXT_ALPHA)) @@ -820,7 +821,7 @@ void TexCache() { if (aTBuff[0] && aTBuff[0]->cache) { - LRDP(" | |- Hires tex T0 found in cache.\n"); + WriteTrace(TraceRDP, TraceDebug, " | |- Hires tex T0 found in cache."); if (GfxInitDone) { rdp.cur_cache[0] = aTBuff[0]->cache; @@ -830,7 +831,7 @@ void TexCache() } else if (tex_found[0][tmu_0] != -1) { - LRDP(" | |- T0 found in cache.\n"); + WriteTrace(TraceRDP, TraceDebug, " | |- T0 found in cache."); if (GfxInitDone) { CACHE_LUT *cache = voodoo.tex_UMA ? &rdp.cache[0][tex_found[0][0]] : &rdp.cache[tmu_0][tex_found[0][tmu_0]]; @@ -851,7 +852,7 @@ void TexCache() { if (aTBuff[1] && aTBuff[1]->cache) { - LRDP(" | |- Hires tex T1 found in cache.\n"); + WriteTrace(TraceRDP, TraceDebug, " | |- Hires tex T1 found in cache."); if (GfxInitDone) { rdp.cur_cache[1] = aTBuff[1]->cache; @@ -861,7 +862,7 @@ void TexCache() } else if (tex_found[1][tmu_1] != -1) { - LRDP(" | |- T1 found in cache.\n"); + WriteTrace(TraceRDP, TraceDebug, " | |- T1 found in cache."); if (GfxInitDone) { CACHE_LUT *cache = voodoo.tex_UMA ? &rdp.cache[0][tex_found[1][0]] : &rdp.cache[tmu_1][tex_found[1][tmu_1]]; @@ -958,7 +959,7 @@ void TexCache() } } - LRDP(" | +- TexCache End\n"); + WriteTrace(TraceRDP, TraceDebug, " | +- TexCache End"); } #ifdef TEXTURE_FILTER @@ -1002,7 +1003,7 @@ inline uint32_t ReverseDXT(uint32_t val, uint32_t /*lrs*/, uint32_t width, uint3 void LoadTex(int id, int tmu) { - FRDP(" | |-+ LoadTex (id: %d, tmu: %d)\n", id, tmu); + WriteTrace(TraceRDP, TraceDebug, " | |-+ LoadTex (id: %d, tmu: %d)", id, tmu); int td = rdp.cur_tile + id; int lod, aspect; @@ -1014,7 +1015,7 @@ void LoadTex(int id, int tmu) // Clear the cache if it's full if (rdp.n_cached[tmu] >= MAX_CACHE) { - LRDP("Cache count reached, clearing...\n"); + WriteTrace(TraceRDP, TraceDebug, "Cache count reached, clearing..."); ClearCache(); if (id == 1 && rdp.tex == 3) LoadTex(0, rdp.t0); @@ -1263,7 +1264,7 @@ void LoadTex(int id, int tmu) if (rdp.aTBuffTex[t] && rdp.aTBuffTex[t]->tile == id) //texture buffer will be used instead of frame buffer texture { rdp.aTBuffTex[t]->cache = cache; - FRDP("tbuff_tex selected: %d, tile=%d\n", t, id); + WriteTrace(TraceRDP, TraceDebug, "tbuff_tex selected: %d, tile=%d", t, id); return; } } @@ -1345,7 +1346,7 @@ void LoadTex(int id, int tmu) g64_crc = CRC32(g64_crc, &cache->mod_factor, 4); cache->ricecrc = ext_ghq_checksum(addr, tile_width, tile_height, (unsigned short)(rdp.tiles[td].format << 8 | rdp.tiles[td].size), bpl, paladdr); - FRDP("CI RICE CRC. format: %d, size: %d, CRC: %08lx, PalCRC: %08lx\n", rdp.tiles[td].format, rdp.tiles[td].size, (uint32_t)(cache->ricecrc & 0xFFFFFFFF), (uint32_t)(cache->ricecrc >> 32)); + WriteTrace(TraceRDP, TraceDebug, "CI RICE CRC. format: %d, size: %d, CRC: %08lx, PalCRC: %08lx", rdp.tiles[td].format, rdp.tiles[td].size, (uint32_t)(cache->ricecrc & 0xFFFFFFFF), (uint32_t)(cache->ricecrc >> 32)); if (ext_ghq_hirestex((uint64)g64_crc, cache->ricecrc, palette, &ghqTexInfo)) { cache->is_hires_tex = ghqTexInfo.is_hires_tex; @@ -1797,7 +1798,7 @@ void LoadTex(int id, int tmu) // Check for end of memory (too many textures to fit, clear cache) if (voodoo.tmem_ptr[tmu] + texture_size >= voodoo.tex_max_addr[tmu]) { - LRDP("Cache size reached, clearing...\n"); + WriteTrace(TraceRDP, TraceDebug, "Cache size reached, clearing..."); ClearCache(); if (id == 1 && rdp.tex == 3) @@ -1820,5 +1821,5 @@ void LoadTex(int id, int tmu) t_info); } - LRDP(" | | +- LoadTex end\n"); + WriteTrace(TraceRDP, TraceDebug, " | | +- LoadTex end"); } \ No newline at end of file diff --git a/Source/Glide64/Util.cpp b/Source/Glide64/Util.cpp index c76e6c643..2e467c3c6 100644 --- a/Source/Glide64/Util.cpp +++ b/Source/Glide64/Util.cpp @@ -47,6 +47,7 @@ #include "Debugger.h" #include "TexCache.h" #include "DepthBufferRender.h" +#include #define Vj rdp.vtxbuf2[j] #define Vi rdp.vtxbuf2[i] @@ -77,7 +78,7 @@ int cull_tri(VERTEX **v) // type changed to VERTEX** [Dave2001] if (v[0]->scr_off & v[1]->scr_off & v[2]->scr_off) { - LRDP(" clipped\n"); + WriteTrace(TraceRDP, TraceDebug, " clipped"); return TRUE; } @@ -120,13 +121,13 @@ int cull_tri(VERTEX **v) // type changed to VERTEX** [Dave2001] if ((iarea & 0x7FFFFFFF) == 0) { - LRDP(" zero area triangles\n"); + WriteTrace(TraceRDP, TraceDebug, " zero area triangles"); return TRUE; } if ((rdp.flags & CULLMASK) && ((int)(iarea ^ mode)) >= 0) { - LRDP(" culled\n"); + WriteTrace(TraceRDP, TraceDebug, " culled"); return TRUE; } #else @@ -143,7 +144,7 @@ int cull_tri(VERTEX **v) // type changed to VERTEX** [Dave2001] // if ((x1*y2 - y1*x2) < 0.0f) //counter-clockwise, positive if ((y1*x2-x1*y2) < 0.0f) //counter-clockwise, positive { - LRDP (" culled!\n"); + WriteTrace(TraceRDP, TraceDebug, " culled!"); return TRUE; } return FALSE; @@ -151,7 +152,7 @@ int cull_tri(VERTEX **v) // type changed to VERTEX** [Dave2001] // if ((x1*y2 - y1*x2) >= 0.0f) //clockwise, negative if ((y1*x2-x1*y2) >= 0.0f) //clockwise, negative { - LRDP (" culled!\n"); + WriteTrace(TraceRDP, TraceDebug, " culled!"); return TRUE; } return FALSE; @@ -327,9 +328,7 @@ void draw_tri(VERTEX **vtx, uint16_t linew) if (v->uv_calculated != rdp.tex_ctr) { -#ifdef EXTREME_LOGGING - FRDP(" * CALCULATING VERTEX U/V: %d\n", v->number); -#endif + WriteTrace(TraceRDP, TraceVerbose, " * CALCULATING VERTEX U/V: %d", v->number); v->uv_calculated = rdp.tex_ctr; if (!(rdp.geom_mode & 0x00020000)) @@ -343,15 +342,11 @@ void draw_tri(VERTEX **vtx, uint16_t linew) v->b = vtx[flag]->b; v->g = vtx[flag]->g; v->r = vtx[flag]->r; -#ifdef EXTREME_LOGGING - FRDP(" * Flat shaded, flag%d - r: %d, g: %d, b: %d, a: %d\n", flag, v->r, v->g, v->b, v->a); -#endif + WriteTrace(TraceRDP, TraceVerbose, " * Flat shaded, flag%d - r: %d, g: %d, b: %d, a: %d", flag, v->r, v->g, v->b, v->a); } else // prim color { -#ifdef EXTREME_LOGGING - FRDP(" * Prim shaded %08lx\n", rdp.prim_color); -#endif + WriteTrace(TraceRDP, TraceVerbose, " * Prim shaded %08lx", rdp.prim_color); v->a = (uint8_t)(rdp.prim_color & 0xFF); v->b = (uint8_t)((rdp.prim_color >> 8) & 0xFF); v->g = (uint8_t)((rdp.prim_color >> 16) & 0xFF); @@ -407,9 +402,7 @@ void draw_tri(VERTEX **vtx, uint16_t linew) v->v0 -= rdp.tiles[rdp.cur_tile].f_ul_t; //required for megaman (boss special attack) v->u0 *= rdp.aTBuffTex[0]->u_scale; v->v0 *= rdp.aTBuffTex[0]->v_scale; -#ifdef EXTREME_LOGGING - FRDP("tbuff_tex t0: (%f, %f)->(%f, %f)\n", v->ou, v->ov, v->u0, v->v0); -#endif + WriteTrace(TraceRDP, TraceVerbose, "tbuff_tex t0: (%f, %f)->(%f, %f)", v->ou, v->ov, v->u0, v->v0); } else { @@ -450,9 +443,7 @@ void draw_tri(VERTEX **vtx, uint16_t linew) v->u1 -= rdp.tiles[rdp.cur_tile].f_ul_s; v->u1 *= rdp.aTBuffTex[1]->u_scale; v->v1 *= rdp.aTBuffTex[1]->v_scale; -#ifdef EXTREME_LOGGING - FRDP("tbuff_tex t1: (%f, %f)->(%f, %f)\n", v->ou, v->ov, v->u1, v->v1); -#endif + WriteTrace(TraceRDP, TraceVerbose, "tbuff_tex t1: (%f, %f)->(%f, %f)", v->ou, v->ov, v->u1, v->v1); } else { @@ -465,11 +456,9 @@ void draw_tri(VERTEX **vtx, uint16_t linew) v->u1_w = v->u1 / v->w; v->v1_w = v->v1 / v->w; } - // FRDP(" * CALCULATING VERTEX U/V: %d u0: %f, v0: %f, u1: %f, v1: %f\n", v->number, v->u0, v->v0, v->u1, v->v1); + // WriteTrace(TraceRDP, TraceDebug, " * CALCULATING VERTEX U/V: %d u0: %f, v0: %f, u1: %f, v1: %f", v->number, v->u0, v->v0, v->u1, v->v1); } -#ifdef EXTREME_LOGGING - FRDP("draw_tri. v[%d] ou=%f, ov = %f\n", i, v->ou, v->ov); -#endif + WriteTrace(TraceRDP, TraceVerbose, "draw_tri. v[%d] ou=%f, ov = %f", i, v->ou, v->ov); if (v->shade_mod != cmb.shade_mod_hash) apply_shade_mods(v); } //for @@ -765,9 +754,7 @@ void do_triangle_stuff(uint16_t linew, int old_interpolate) // what else?? do th { if (rdp.vtxbuf[i].not_zclipped)// && rdp.zsrc != 1) { -#ifdef EXTREME_LOGGING - FRDP (" * NOT ZCLIPPPED: %d\n", rdp.vtxbuf[i].number); -#endif + WriteTrace(TraceRDP, TraceVerbose, " * NOT ZCLIPPPED: %d", rdp.vtxbuf[i].number); rdp.vtxbuf[i].x = rdp.vtxbuf[i].sx; rdp.vtxbuf[i].y = rdp.vtxbuf[i].sy; rdp.vtxbuf[i].z = rdp.vtxbuf[i].sz; @@ -779,9 +766,7 @@ void do_triangle_stuff(uint16_t linew, int old_interpolate) // what else?? do th } else { -#ifdef EXTREME_LOGGING - FRDP (" * ZCLIPPED: %d\n", rdp.vtxbuf[i].number); -#endif + WriteTrace(TraceRDP, TraceVerbose, " * ZCLIPPED: %d", rdp.vtxbuf[i].number); rdp.vtxbuf[i].q = 1.0f / rdp.vtxbuf[i].w; rdp.vtxbuf[i].x = rdp.view_trans[0] + rdp.vtxbuf[i].x * rdp.vtxbuf[i].q * rdp.view_scale[0] + rdp.offset_x; rdp.vtxbuf[i].y = rdp.view_trans[1] + rdp.vtxbuf[i].y * rdp.vtxbuf[i].q * rdp.view_scale[1] + rdp.offset_y; @@ -1028,7 +1013,7 @@ static void CalculateLOD(VERTEX *v, int n) grTexDetailControl(GR_TMU0, cmb.dc0_lodbias, cmb.dc0_detailscale, detailmax); if (voodoo.num_tmu == 2) grTexDetailControl(GR_TMU1, cmb.dc1_lodbias, cmb.dc1_detailscale, detailmax); - FRDP("CalculateLOD factor: %f, tile: %d, lod_fraction: %f\n", (float)lodFactor, lod_tile, lod_fraction); + WriteTrace(TraceRDP, TraceDebug, "CalculateLOD factor: %f, tile: %d, lod_fraction: %f", (float)lodFactor, lod_tile, lod_fraction); } float ScaleZ(float z) @@ -1075,21 +1060,6 @@ static void DepthBuffer(VERTEX * vtx, int n) vtx[i].z = ScaleZ(vtx[i].z); } -/* -std::ofstream loga; -#define LOGG(x) loga.open("glide_log.txt",std::ios::app); loga << x; loga.flush(); loga.close(); -__inline void FRDP2(char *fmt, ...) -{ -va_list ap; -va_start(ap, fmt); -vsprintf(out_buf, fmt, ap); -LOGG(out_buf); -va_end(ap); -} -//*/ -//#define LOGG(x) -//#define FRDP2(x) - void clip_tri(int interpolate_colors) { int i, j, index, n = rdp.n_global; @@ -1493,7 +1463,7 @@ static void render_tri(uint16_t linew, int old_interpolate) int n = rdp.n_global; if (n < 3) { - FRDP(" * render_tri: n < 3\n"); + WriteTrace(TraceRDP, TraceDebug, " * render_tri: n < 3"); return; } int i, j; @@ -1511,7 +1481,7 @@ static void render_tri(uint16_t linew, int old_interpolate) } if (!to_render) //all z < 0 { - FRDP(" * render_tri: all z < 0\n"); + WriteTrace(TraceRDP, TraceDebug, " * render_tri: all z < 0"); return; } } @@ -1566,22 +1536,6 @@ static void render_tri(uint16_t linew, int old_interpolate) InterpolateColors2(*v1, *v2, rdp.vtxbuf[i], percent); } } - /* - if (rdp.clip) - { - LOGG("Colors before clipping:\n"); - unsigned int k; - for(k=0; k<3; k++) - { - FRDP2("V%d: r=%d, g=%d, b=%d, a=%d, f=%d\n", k, org_vtx[k]->r, org_vtx[k]->g, org_vtx[k]->b, org_vtx[k]->a, (short)org_vtx[k]->f); - } - FRDP("Got %d vertex after clipping\n", n); - for(k=0; k%f, width: %d. height: %d, tex_width: %d, tex_height: %d, lr_u: %f, lr_v: %f\n", k, vv0[k], pv[k]->v1, rdp.tbuff_tex->width, rdp.tbuff_tex->height, rdp.tbuff_tex->tex_width, rdp.tbuff_tex->tex_height, rdp.tbuff_tex->lr_u, rdp.tbuff_tex->lr_v); + WriteTrace(TraceRDP, TraceDebug, "v%d %f->%f, width: %d. height: %d, tex_width: %d, tex_height: %d, lr_u: %f, lr_v: %f", k, vv0[k], pv[k]->v1, rdp.tbuff_tex->width, rdp.tbuff_tex->height, rdp.tbuff_tex->tex_width, rdp.tbuff_tex->tex_height, rdp.tbuff_tex->lr_u, rdp.tbuff_tex->lr_v); } } */ @@ -1636,7 +1590,7 @@ static void render_tri(uint16_t linew, int old_interpolate) { // VERTEX ** pv = rdp.vtx_buffer?(vtx_list2):(vtx_list1); // for (int k = 0; k < n; k ++) - // FRDP ("DRAW[%d]: v.x = %f, v.y = %f, v.z = %f, v.u = %f, v.v = %f\n", k, pv[k]->x, pv[k]->y, pv[k]->z, pv[k]->coord[rdp.t0<<1], pv[k]->coord[(rdp.t0<<1)+1]); + // WriteTrace(TraceRDP, TraceDebug, "DRAW[%d]: v.x = %f, v.y = %f, v.z = %f, v.u = %f, v.v = %f", k, pv[k]->x, pv[k]->y, pv[k]->z, pv[k]->coord[rdp.t0<<1], pv[k]->coord[(rdp.t0<<1)+1]); // pv[k]->y = g_settings->res_y - pv[k]->y; if (linew > 0) @@ -1704,7 +1658,7 @@ static void render_tri(uint16_t linew, int old_interpolate) void add_tri(VERTEX *v, int n, int type) { - //FRDP ("ENTER (%f, %f, %f), (%f, %f, %f), (%f, %f, %f)\n", v[0].x, v[0].y, v[0].w, + //WriteTrace(TraceRDP, TraceDebug, "ENTER (%f, %f, %f), (%f, %f, %f), (%f, %f, %f)", v[0].x, v[0].y, v[0].w, // v[1].x, v[1].y, v[1].w, v[2].x, v[2].y, v[2].w); // Debug capture @@ -1792,7 +1746,7 @@ void update_scissor() //Values are inclusive for minimum x and y values and exclusive for maximum x and y values. // grClipWindow (rdp.scissor.ul_x?rdp.scissor.ul_x+1:0, rdp.scissor.ul_y?rdp.scissor.ul_y+1:0, rdp.scissor.lr_x, rdp.scissor.lr_y); grClipWindow(rdp.scissor.ul_x, rdp.scissor.ul_y, rdp.scissor.lr_x, rdp.scissor.lr_y); - FRDP(" |- scissor - (%d, %d) -> (%d, %d)\n", rdp.scissor.ul_x, rdp.scissor.ul_y, rdp.scissor.lr_x, rdp.scissor.lr_y); + WriteTrace(TraceRDP, TraceDebug, " |- scissor - (%d, %d) -> (%d, %d)", rdp.scissor.ul_x, rdp.scissor.ul_y, rdp.scissor.lr_x, rdp.scissor.lr_y); } } @@ -1814,12 +1768,12 @@ typedef struct void update() { - LRDP("-+ update called\n"); + WriteTrace(TraceRDP, TraceDebug, "-+ update called"); // Check for rendermode changes // Z buffer if (rdp.render_mode_changed & 0x00000C30) { - FRDP(" |- render_mode_changed zbuf - decal: %s, update: %s, compare: %s\n", + WriteTrace(TraceRDP, TraceDebug, " |- render_mode_changed zbuf - decal: %s, update: %s, compare: %s", str_yn[(rdp.othermode_l & 0x00000400) ? 1 : 0], str_yn[(rdp.othermode_l & 0x00000020) ? 1 : 0], str_yn[(rdp.othermode_l & 0x00000010) ? 1 : 0]); @@ -1843,7 +1797,7 @@ void update() // Alpha compare if (rdp.render_mode_changed & 0x00001000) { - FRDP(" |- render_mode_changed alpha compare - on: %s\n", + WriteTrace(TraceRDP, TraceDebug, " |- render_mode_changed alpha compare - on: %s", str_yn[(rdp.othermode_l & 0x00001000) ? 1 : 0]); rdp.render_mode_changed &= ~0x00001000; rdp.update |= UPDATE_ALPHA_COMPARE; @@ -1856,7 +1810,7 @@ void update() if (rdp.render_mode_changed & 0x00002000) // alpha cvg sel { - FRDP(" |- render_mode_changed alpha cvg sel - on: %s\n", + WriteTrace(TraceRDP, TraceDebug, " |- render_mode_changed alpha cvg sel - on: %s", str_yn[(rdp.othermode_l & 0x00002000) ? 1 : 0]); rdp.render_mode_changed &= ~0x00002000; rdp.update |= UPDATE_COMBINE; @@ -1866,7 +1820,7 @@ void update() // Force blend if (rdp.render_mode_changed & 0xFFFF0000) { - FRDP(" |- render_mode_changed force_blend - %08lx\n", rdp.othermode_l & 0xFFFF0000); + WriteTrace(TraceRDP, TraceDebug, " |- render_mode_changed force_blend - %08lx", rdp.othermode_l & 0xFFFF0000); rdp.render_mode_changed &= 0x0000FFFF; rdp.fbl_a0 = (uint8_t)((rdp.othermode_l >> 30) & 0x3); @@ -1892,7 +1846,7 @@ void update() rdp.aTBuffTex[0] = aTBuff[0]; rdp.aTBuffTex[1] = aTBuff[1]; - LRDP(" |-+ update_combine\n"); + WriteTrace(TraceRDP, TraceDebug, " |-+ update_combine"); Combine(); } @@ -1969,7 +1923,7 @@ void update() uint8_t reference = (uint8_t)(rdp.blend_color & 0xFF); grAlphaTestFunction(reference ? GR_CMP_GEQUAL : GR_CMP_GREATER); grAlphaTestReferenceValue(reference); - FRDP(" |- alpha compare: blend: %02lx\n", reference); + WriteTrace(TraceRDP, TraceDebug, " |- alpha compare: blend: %02lx", reference); } else { @@ -1979,7 +1933,7 @@ void update() { grAlphaTestFunction(GR_CMP_GEQUAL); grAlphaTestReferenceValue(0x20);//0xA0); - LRDP(" |- alpha compare: 0x20\n"); + WriteTrace(TraceRDP, TraceDebug, " |- alpha compare: 0x20"); } else { @@ -1987,19 +1941,19 @@ void update() if (rdp.acmp == 3) { grAlphaTestReferenceValue((uint8_t)(rdp.blend_color & 0xFF)); - FRDP(" |- alpha compare: blend: %02lx\n", rdp.blend_color & 0xFF); + WriteTrace(TraceRDP, TraceDebug, " |- alpha compare: blend: %02lx", rdp.blend_color & 0xFF); } else { grAlphaTestReferenceValue(0x00); - LRDP(" |- alpha compare: 0x00\n"); + WriteTrace(TraceRDP, TraceDebug, " |- alpha compare: 0x00"); } } } else { grAlphaTestFunction(GR_CMP_ALWAYS); - LRDP(" |- alpha compare: none\n"); + WriteTrace(TraceRDP, TraceDebug, " |- alpha compare: none"); } } if (rdp.acmp == 3 && rdp.cycle_mode < 2) @@ -2007,7 +1961,7 @@ void update() if (grStippleModeExt != 0) { if (g_settings->old_style_adither || rdp.alpha_dither_mode != 3) { - LRDP(" |- alpha compare: dither\n"); + WriteTrace(TraceRDP, TraceDebug, " |- alpha compare: dither"); grStippleModeExt(g_settings->stipple_mode); } else @@ -2018,7 +1972,7 @@ void update() { if (grStippleModeExt) { - //LRDP (" |- alpha compare: dither disabled\n"); + //WriteTrace(TraceRDP, TraceDebug, " |- alpha compare: dither disabled"); grStippleModeExt(GR_STIPPLE_DISABLE); } } @@ -2028,7 +1982,7 @@ void update() { rdp.update ^= UPDATE_CULL_MODE; uint32_t mode = (rdp.flags & CULLMASK) >> CULLSHIFT; - FRDP(" |- cull_mode - mode: %s\n", str_cull[mode]); + WriteTrace(TraceRDP, TraceDebug, " |- cull_mode - mode: %s", str_cull[mode]); switch (mode) { case 0: // cull none @@ -2060,11 +2014,11 @@ void update() grFogColorValue(rdp.fog_color); grFogMode(GR_FOG_WITH_TABLE_ON_FOGCOORD_EXT); rdp.fog_mode = RDP::fog_enabled; - LRDP("fog enabled \n"); + WriteTrace(TraceRDP, TraceDebug, "fog enabled "); } else { - LRDP("fog disabled in blender\n"); + WriteTrace(TraceRDP, TraceDebug, "fog disabled in blender"); rdp.fog_mode = RDP::fog_disabled; grFogMode(GR_FOG_DISABLE); } @@ -2074,18 +2028,18 @@ void update() grFogColorValue(rdp.fog_color); grFogMode(GR_FOG_WITH_TABLE_ON_FOGCOORD_EXT); rdp.fog_mode = RDP::fog_blend; - LRDP("fog blend \n"); + WriteTrace(TraceRDP, TraceDebug, "fog blend "); } else if (blender == 0x04d1) { grFogColorValue(rdp.fog_color); grFogMode(GR_FOG_WITH_TABLE_ON_FOGCOORD_EXT); rdp.fog_mode = RDP::fog_blend_inverse; - LRDP("fog blend \n"); + WriteTrace(TraceRDP, TraceDebug, "fog blend "); } else { - LRDP("fog disabled\n"); + WriteTrace(TraceRDP, TraceDebug, "fog disabled"); rdp.fog_mode = RDP::fog_disabled; grFogMode(GR_FOG_DISABLE); } @@ -2102,7 +2056,7 @@ void update() rdp.clip_max_x = minval((rdp.view_trans[0] + scale_x + rdp.offset_x) * rdp.clip_ratio, g_settings->res_x); rdp.clip_max_y = minval((rdp.view_trans[1] + scale_y + rdp.offset_y) * rdp.clip_ratio, g_settings->res_y); - FRDP(" |- viewport - (%d, %d, %d, %d)\n", (uint32_t)rdp.clip_min_x, (uint32_t)rdp.clip_min_y, (uint32_t)rdp.clip_max_x, (uint32_t)rdp.clip_max_y); + WriteTrace(TraceRDP, TraceDebug, " |- viewport - (%d, %d, %d, %d)", (uint32_t)rdp.clip_min_x, (uint32_t)rdp.clip_min_y, (uint32_t)rdp.clip_max_x, (uint32_t)rdp.clip_max_y); if (!rdp.scissor_set) { rdp.scissor.ul_x = (uint32_t)rdp.clip_min_x; @@ -2118,7 +2072,7 @@ void update() update_scissor(); } - LRDP(" + update end\n"); + WriteTrace(TraceRDP, TraceDebug, " + update end"); } void set_message_combiner() @@ -2166,4 +2120,4 @@ void set_message_combiner() GR_MIPMAPLEVELMASK_BOTH, &fontTex); grFogMode(GR_FOG_DISABLE); -} +} \ No newline at end of file diff --git a/Source/Glide64/rdp.cpp b/Source/Glide64/rdp.cpp index 48ce454a8..44e9ef236 100644 --- a/Source/Glide64/rdp.cpp +++ b/Source/Glide64/rdp.cpp @@ -314,7 +314,7 @@ void microcheck() uc_crc += ((uint32_t*)microcode)[i]; } - FRDP_E("crc: %08lx\n", uc_crc); + WriteTrace(TraceRDP, TraceWarning, "crc: %08lx", uc_crc); #ifdef LOG_UCODE std::ofstream ucf; @@ -328,7 +328,7 @@ void microcheck() ucf.close(); #endif - FRDP("ucode = %08lx\n", uc_crc); + WriteTrace(TraceRDP, TraceDebug, "ucode = %08lx", uc_crc); RegisterSetting(Set_ucodeLookup, Data_DWORD_RDB_Setting, stdstr_f("%08lx", uc_crc).c_str(), "ucode", (unsigned int)-2, NULL); int uc = GetSetting(Set_ucodeLookup); @@ -362,7 +362,7 @@ void microcheck() { old_ucode = g_settings->ucode; g_settings->ucode = uc; - FRDP("microcheck: old ucode: %d, new ucode: %d\n", old_ucode, uc); + WriteTrace(TraceRDP, TraceDebug, "microcheck: old ucode: %d, new ucode: %d", old_ucode, uc); if (uc_crc == 0x8d5735b2 || uc_crc == 0xb1821ed3 || uc_crc == 0x1118b3e0) //F3DLP.Rej ucode. perspective texture correction is not implemented { rdp.Persp_en = 1; @@ -421,7 +421,7 @@ static void copyWhiteToRDRAM() static void CopyFrameBuffer(GrBuffer_t buffer = GR_BUFFER_BACKBUFFER) { - FRDP("CopyFrameBuffer: %08lx... ", rdp.cimg); + WriteTrace(TraceRDP, TraceDebug, "CopyFrameBuffer: %08lx... ", rdp.cimg); // don't bother to write the stuff in asm... the slow part is the read from video card, // not the copy. @@ -439,7 +439,7 @@ static void CopyFrameBuffer(GrBuffer_t buffer = GR_BUFFER_BACKBUFFER) if (g_settings->hacks&hack_PPL) height -= rdp.ci_upper_bound; } - FRDP("width: %d, height: %d... ", width, height); + WriteTrace(TraceRDP, TraceDebug, "width: %d, height: %d... ", width, height); if (rdp.scale_x < 1.1f) { @@ -476,11 +476,11 @@ static void CopyFrameBuffer(GrBuffer_t buffer = GR_BUFFER_BACKBUFFER) ptr_dst32[x + y * width] = RGBA16TO32(c); } } - LRDP("ReadRegion. Framebuffer copy complete.\n"); + WriteTrace(TraceRDP, TraceDebug, "ReadRegion. Framebuffer copy complete."); } else { - LRDP("Framebuffer copy failed.\n"); + WriteTrace(TraceRDP, TraceDebug, "Framebuffer copy failed."); } delete[] ptr_src; } @@ -495,7 +495,7 @@ static void CopyFrameBuffer(GrBuffer_t buffer = GR_BUFFER_BACKBUFFER) float scale_x = (g_settings->scr_res_x - rdp.offset_x*2.0f) / maxval(width, rdp.vi_width); float scale_y = (g_settings->scr_res_y - rdp.offset_y*2.0f) / maxval(height, rdp.vi_height); - FRDP("width: %d, height: %d, ul_y: %d, lr_y: %d, scale_x: %f, scale_y: %f, ci_width: %d, ci_height: %d\n", width, height, rdp.ci_upper_bound, rdp.ci_lower_bound, scale_x, scale_y, rdp.ci_width, rdp.ci_height); + WriteTrace(TraceRDP, TraceDebug, "width: %d, height: %d, ul_y: %d, lr_y: %d, scale_x: %f, scale_y: %f, ci_width: %d, ci_height: %d", width, height, rdp.ci_upper_bound, rdp.ci_lower_bound, scale_x, scale_y, rdp.ci_width, rdp.ci_height); GrLfbInfo_t info; info.size = sizeof(GrLfbInfo_t); @@ -537,11 +537,11 @@ static void CopyFrameBuffer(GrBuffer_t buffer = GR_BUFFER_BACKBUFFER) // Unlock the backbuffer grLfbUnlock(GR_LFB_READ_ONLY, buffer); - LRDP("LfbLock. Framebuffer copy complete.\n"); + WriteTrace(TraceRDP, TraceDebug, "LfbLock. Framebuffer copy complete."); } else { - LRDP("Framebuffer copy failed.\n"); + WriteTrace(TraceRDP, TraceDebug, "Framebuffer copy failed."); } } } @@ -627,24 +627,6 @@ EXPORT void CALL ProcessDList(void) if (to_fullscreen) GoToFullScreen(); - // Clear out the RDP log -#ifdef RDP_LOGGING - if (g_settings->logging && g_settings->log_clear) - { - CLOSE_RDP_LOG(); - OPEN_RDP_LOG(); - } -#endif - -#ifdef UNIMP_LOG - if (g_settings->log_unk && g_settings->unk_clear) - { - std::ofstream unimp; - unimp.open("unimp.txt"); - unimp.close(); - } -#endif - //* Set states *// if (g_settings->swapmode > 0) SwapOK = TRUE; @@ -694,8 +676,7 @@ EXPORT void CALL ProcessDList(void) // Get the start of the display list and the length of it uint32_t dlist_start = *(uint32_t*)(gfx.DMEM + 0xFF0); uint32_t dlist_length = *(uint32_t*)(gfx.DMEM + 0xFF4); - FRDP("--- NEW DLIST --- crc: %08lx, ucode: %d, fbuf: %08lx, fbuf_width: %d, dlist start: %08lx, dlist_length: %d, x_scale: %f, y_scale: %f\n", uc_crc, g_settings->ucode, *gfx.VI_ORIGIN_REG, *gfx.VI_WIDTH_REG, dlist_start, dlist_length, (*gfx.VI_X_SCALE_REG & 0xFFF) / 1024.0f, (*gfx.VI_Y_SCALE_REG & 0xFFF) / 1024.0f); - FRDP_E("--- NEW DLIST --- crc: %08lx, ucode: %d, fbuf: %08lx\n", uc_crc, g_settings->ucode, *gfx.VI_ORIGIN_REG); + WriteTrace(TraceRDP, TraceDebug, "--- NEW DLIST --- crc: %08lx, ucode: %d, fbuf: %08lx, fbuf_width: %d, dlist start: %08lx, dlist_length: %d, x_scale: %f, y_scale: %f", uc_crc, g_settings->ucode, *gfx.VI_ORIGIN_REG, *gfx.VI_WIDTH_REG, dlist_start, dlist_length, (*gfx.VI_X_SCALE_REG & 0xFFF) / 1024.0f, (*gfx.VI_Y_SCALE_REG & 0xFFF) / 1024.0f); // Do nothing if dlist is empty if (dlist_start == 0) @@ -706,7 +687,7 @@ EXPORT void CALL ProcessDList(void) if ((g_settings->hacks&hack_Tonic) && dlist_length < 16) { rdp_fullsync(); - FRDP_E("DLIST is too short!\n"); + WriteTrace(TraceRDP, TraceWarning, "DLIST is too short!"); return; } @@ -739,9 +720,9 @@ EXPORT void CALL ProcessDList(void) // Output the address before the command #ifdef LOG_COMMANDS - FRDP("%08lx (c0:%08lx, c1:%08lx): ", a, rdp.cmd0, rdp.cmd1); + WriteTrace(TraceRDP, TraceDebug, "%08lx (c0:%08lx, c1:%08lx): ", a, rdp.cmd0, rdp.cmd1); #else - FRDP("%08lx: ", a); + WriteTrace(TraceRDP, TraceDebug, "%08lx: ", a); #endif // Go to the next instruction @@ -761,14 +742,14 @@ EXPORT void CALL ProcessDList(void) { rdp.dl_count = -1; - LRDP("End of DL\n"); + WriteTrace(TraceRDP, TraceDebug, "End of DL"); rdp.pc_i--; } } #ifdef PERFORMANCE perf_next = wxDateTime::UNow(); - sprintf(out_buf, "perf %08lx: %016I64d\n", a - 8, (perf_next - perf_cur).Format(_T("%l")).mb_str()); + sprintf(out_buf, "perf %08lx: %016I64d", a - 8, (perf_next - perf_cur).Format(_T("%l")).mb_str()); rdp_log << out_buf; #endif } while (!rdp.halt); @@ -819,14 +800,13 @@ EXPORT void CALL ProcessDList(void) newSwapBuffers(); CI_SET = FALSE; } - LRDP("ProcessDList end\n"); + WriteTrace(TraceRDP, TraceDebug, "ProcessDList end"); } // undef - undefined instruction, always ignore static void undef() { - FRDP_E("** undefined ** (%08lx)\n", rdp.cmd0); - FRDP("** undefined ** (%08lx) - IGNORED\n", rdp.cmd0); + WriteTrace(TraceRDP, TraceWarning, "** undefined ** (%08lx) - IGNORED", rdp.cmd0); #ifdef _ENDUSER_RELEASE_ *gfx.MI_INTR_REG |= 0x20; gfx.CheckInterrupts(); @@ -837,13 +817,13 @@ static void undef() // spnoop - no operation, always ignore static void spnoop() { - LRDP("spnoop\n"); + WriteTrace(TraceRDP, TraceDebug, "spnoop"); } // noop - no operation, always ignore static void rdp_noop() { - LRDP("noop\n"); + WriteTrace(TraceRDP, TraceDebug, "noop"); } static void ys_memrect() @@ -860,12 +840,11 @@ static void ys_memrect() uint32_t off_x = ((rdp.cmd2 & 0xFFFF0000) >> 16) >> 5; uint32_t off_y = (rdp.cmd2 & 0x0000FFFF) >> 5; - FRDP("memrect (%d, %d, %d, %d), ci_width: %d", ul_x, ul_y, lr_x, lr_y, rdp.ci_width); + WriteTrace(TraceRDP, TraceDebug, "memrect (%d, %d, %d, %d), ci_width: %d", ul_x, ul_y, lr_x, lr_y, rdp.ci_width); if (off_x > 0) - FRDP(" off_x: %d", off_x); + WriteTrace(TraceRDP, TraceDebug, " off_x: %d", off_x); if (off_y > 0) - FRDP(" off_y: %d", off_y); - LRDP("\n"); + WriteTrace(TraceRDP, TraceDebug, " off_y: %d", off_y); uint32_t y, width = lr_x - ul_x; uint32_t tex_width = rdp.tiles[tile].line << 3; @@ -894,7 +873,7 @@ static void pm_palette_mod() { dst[i ^ 1] = (rdp.pal_8[i] & 1) ? prim16 : env16; } - LRDP("Texrect palette modification\n"); + WriteTrace(TraceRDP, TraceDebug, "Texrect palette modification"); } static void pd_zcopy() @@ -911,7 +890,7 @@ static void pd_zcopy() c = ptr_src[x]; c = ((c << 8) & 0xFF00) | (c >> 8); ptr_dst[(ul_x + x) ^ 1] = c; - // FRDP("dst[%d]=%04lx \n", (x + ul_x)^1, c); + // WriteTrace(TraceRDP, TraceDebug, "dst[%d]=%04lx ", (x + ul_x)^1, c); } } @@ -972,15 +951,15 @@ static void rdp_texrect() } else { - LRDP("Texrect skipped\n"); + WriteTrace(TraceRDP, TraceDebug, "Texrect skipped"); } return; } if ((g_settings->ucode == ucode_CBFD) && rdp.cur_image && rdp.cur_image->format) { - //FRDP("Wrong Texrect. texaddr: %08lx, cimg: %08lx, cimg_end: %08lx\n", rdp.timg.addr, rdp.maincimg[1].addr, rdp.maincimg[1].addr+rdp.ci_width*rdp.ci_height*rdp.ci_size); - LRDP("Shadow texrect is skipped.\n"); + //WriteTrace(TraceRDP, TraceDebug, "Wrong Texrect. texaddr: %08lx, cimg: %08lx, cimg_end: %08lx", rdp.timg.addr, rdp.maincimg[1].addr, rdp.maincimg[1].addr+rdp.ci_width*rdp.ci_height*rdp.ci_size); + WriteTrace(TraceRDP, TraceDebug, "Shadow texrect is skipped."); rdp.tri_n += 2; return; } @@ -988,7 +967,7 @@ static void rdp_texrect() if ((g_settings->ucode == ucode_PerfectDark) && rdp.ci_count > 0 && (rdp.frame_buffers[rdp.ci_count - 1].status == ci_zcopy)) { pd_zcopy(); - LRDP("Depth buffer copied.\n"); + WriteTrace(TraceRDP, TraceDebug, "Depth buffer copied."); rdp.tri_n += 2; return; } @@ -1003,7 +982,7 @@ static void rdp_texrect() return; } - // FRDP ("rdp.cycle1 %08lx, rdp.cycle2 %08lx\n", rdp.cycle1, rdp.cycle2); + // WriteTrace(TraceRDP, TraceDebug, "rdp.cycle1 %08lx, rdp.cycle2 %08lx", rdp.cycle1, rdp.cycle2); float ul_x, ul_y, lr_x, lr_y; if (rdp.cycle_mode == 2) @@ -1023,7 +1002,7 @@ static void rdp_texrect() if (ul_x >= lr_x) { - FRDP("Wrong Texrect: ul_x: %f, lr_x: %f\n", ul_x, lr_x); + WriteTrace(TraceRDP, TraceDebug, "Wrong Texrect: ul_x: %f, lr_x: %f", ul_x, lr_x); return; } @@ -1046,7 +1025,7 @@ static void rdp_texrect() //* if (rdp.tbuff_tex && (g_settings->frame_buffer & fb_optimize_texrect)) { - LRDP("Attempt to optimize texrect\n"); + WriteTrace(TraceRDP, TraceDebug, "Attempt to optimize texrect"); if (!rdp.tbuff_tex->drawn) { DRAWIMAGE d; @@ -1059,7 +1038,7 @@ static void rdp_texrect() d.imageH = (uint16_t)rdp.tbuff_tex->height; d.frameY = (uint16_t)ul_y; d.frameH = (uint16_t)(rdp.tbuff_tex->height); - FRDP("texrect. ul_x: %d, ul_y: %d, lr_x: %d, lr_y: %d, width: %d, height: %d\n", ul_x, ul_y, lr_x, lr_y, rdp.tbuff_tex->width, rdp.tbuff_tex->height); + WriteTrace(TraceRDP, TraceDebug, "texrect. ul_x: %d, ul_y: %d, lr_x: %d, lr_y: %d, width: %d, height: %d", ul_x, ul_y, lr_x, lr_y, rdp.tbuff_tex->width, rdp.tbuff_tex->height); d.scaleX = 1.0f; d.scaleY = 1.0f; DrawHiresImage(d, rdp.tbuff_tex->width == rdp.ci_width); @@ -1076,7 +1055,7 @@ static void rdp_texrect() //hack for Zelda MM. it removes black texrects which cover all geometry in "Link meets Zelda" cut scene if ((g_settings->hacks&hack_Zelda) && rdp.timg.addr >= rdp.cimg && rdp.timg.addr < rdp.ci_end) { - FRDP("Wrong Texrect. texaddr: %08lx, cimg: %08lx, cimg_end: %08lx\n", rdp.cur_cache[0]->addr, rdp.cimg, rdp.cimg + rdp.ci_width*rdp.ci_height * 2); + WriteTrace(TraceRDP, TraceDebug, "Wrong Texrect. texaddr: %08lx, cimg: %08lx, cimg_end: %08lx", rdp.cur_cache[0]->addr, rdp.cimg, rdp.cimg + rdp.ci_width*rdp.ci_height * 2); rdp.tri_n += 2; return; } @@ -1095,8 +1074,8 @@ static void rdp_texrect() if (fb_emulation_enabled) if (rdp.ci_count > 0 && rdp.frame_buffers[rdp.ci_count - 1].status == ci_copy_self) { - //FRDP("Wrong Texrect. texaddr: %08lx, cimg: %08lx, cimg_end: %08lx\n", rdp.timg.addr, rdp.maincimg[1], rdp.maincimg[1]+rdp.ci_width*rdp.ci_height*rdp.ci_size); - LRDP("Wrong Texrect.\n"); + //WriteTrace(TraceRDP, TraceDebug, "Wrong Texrect. texaddr: %08lx, cimg: %08lx, cimg_end: %08lx", rdp.timg.addr, rdp.maincimg[1], rdp.maincimg[1]+rdp.ci_width*rdp.ci_height*rdp.ci_size); + WriteTrace(TraceRDP, TraceDebug, "Wrong Texrect."); rdp.tri_n += 2; return; } @@ -1145,9 +1124,9 @@ static void rdp_texrect() float s_ul_y = ul_y * rdp.scale_y + rdp.offset_y; float s_lr_y = lr_y * rdp.scale_y + rdp.offset_y; - FRDP("texrect (%.2f, %.2f, %.2f, %.2f), tile: %d, #%d, #%d\n", ul_x, ul_y, lr_x, lr_y, tile, rdp.tri_n, rdp.tri_n + 1); - FRDP("(%f, %f) -> (%f, %f), s: (%d, %d) -> (%d, %d)\n", s_ul_x, s_ul_y, s_lr_x, s_lr_y, rdp.scissor.ul_x, rdp.scissor.ul_y, rdp.scissor.lr_x, rdp.scissor.lr_y); - FRDP("\toff_x: %f, off_y: %f, dsdx: %f, dtdy: %f\n", off_x_i / 32.0f, off_y_i / 32.0f, dsdx, dtdy); + WriteTrace(TraceRDP, TraceDebug, "texrect (%.2f, %.2f, %.2f, %.2f), tile: %d, #%d, #%d", ul_x, ul_y, lr_x, lr_y, tile, rdp.tri_n, rdp.tri_n + 1); + WriteTrace(TraceRDP, TraceDebug, "(%f, %f) -> (%f, %f), s: (%d, %d) -> (%d, %d)", s_ul_x, s_ul_y, s_lr_x, s_lr_y, rdp.scissor.ul_x, rdp.scissor.ul_y, rdp.scissor.lr_x, rdp.scissor.lr_y); + WriteTrace(TraceRDP, TraceDebug, "\toff_x: %f, off_y: %f, dsdx: %f, dtdy: %f", off_x_i / 32.0f, off_y_i / 32.0f, dsdx, dtdy); float off_size_x; float off_size_y; @@ -1255,7 +1234,7 @@ static void rdp_texrect() texUV[i].ul_v *= rdp.aTBuffTex[i]->v_scale; texUV[i].lr_u *= rdp.aTBuffTex[i]->u_scale; texUV[i].lr_v *= rdp.aTBuffTex[i]->v_scale; - FRDP("tbuff_tex[%d] ul_u: %f, ul_v: %f, lr_u: %f, lr_v: %f\n", + WriteTrace(TraceRDP, TraceDebug, "tbuff_tex[%d] ul_u: %f, ul_v: %f, lr_u: %f, lr_v: %f", i, texUV[i].ul_u, texUV[i].ul_v, texUV[i].lr_u, texUV[i].lr_v); } else //common case @@ -1285,12 +1264,12 @@ static void rdp_texrect() // **** - FRDP(" scissor: (%d, %d) -> (%d, %d)\n", rdp.scissor.ul_x, rdp.scissor.ul_y, rdp.scissor.lr_x, rdp.scissor.lr_y); + WriteTrace(TraceRDP, TraceDebug, " scissor: (%d, %d) -> (%d, %d)", rdp.scissor.ul_x, rdp.scissor.ul_y, rdp.scissor.lr_x, rdp.scissor.lr_y); CCLIP2(s_ul_x, s_lr_x, texUV[0].ul_u, texUV[0].lr_u, texUV[1].ul_u, texUV[1].lr_u, (float)rdp.scissor.ul_x, (float)rdp.scissor.lr_x); CCLIP2(s_ul_y, s_lr_y, texUV[0].ul_v, texUV[0].lr_v, texUV[1].ul_v, texUV[1].lr_v, (float)rdp.scissor.ul_y, (float)rdp.scissor.lr_y); - FRDP(" draw at: (%f, %f) -> (%f, %f)\n", s_ul_x, s_ul_y, s_lr_x, s_lr_y); + WriteTrace(TraceRDP, TraceDebug, " draw at: (%f, %f) -> (%f, %f)", s_ul_x, s_ul_y, s_lr_x, s_lr_y); VERTEX vstd[4] = { { s_ul_x, s_ul_y, Z, 1.0f, texUV[0].ul_u, texUV[0].ul_v, texUV[1].ul_u, texUV[1].ul_v, { 0, 0, 0, 0 }, 255 }, @@ -1316,7 +1295,7 @@ static void rdp_texrect() VERTEX *vnew = 0; // for (int j =0; j < 4; j++) - // FRDP("v[%d] u0: %f, v0: %f, u1: %f, v1: %f\n", j, vstd[j].u0, vstd[j].v0, vstd[j].u1, vstd[j].v1); + // WriteTrace(TraceRDP, TraceDebug, "v[%d] u0: %f, v0: %f, u1: %f, v1: %f", j, vstd[j].u0, vstd[j].v0, vstd[j].u1, vstd[j].v1); if (!rdp.aTBuffTex[0] && rdp.cur_cache[0]->splits != 1) { @@ -1341,7 +1320,7 @@ static void rdp_texrect() int start_u_256, end_u_256; start_u_256 = (int)min_u >> 8; end_u_256 = (int)max_u >> 8; - //FRDP(" min_u: %f, max_u: %f start: %d, end: %d\n", min_u, max_u, start_u_256, end_u_256); + //WriteTrace(TraceRDP, TraceDebug, " min_u: %f, max_u: %f start: %d, end: %d", min_u, max_u, start_u_256, end_u_256); int splitheight = rdp.cur_cache[0]->splitheight; @@ -1481,17 +1460,17 @@ static void rdp_texrect() static void rdp_loadsync() { - LRDP("loadsync - ignored\n"); + WriteTrace(TraceRDP, TraceDebug, "loadsync - ignored"); } static void rdp_pipesync() { - LRDP("pipesync - ignored\n"); + WriteTrace(TraceRDP, TraceDebug, "pipesync - ignored"); } static void rdp_tilesync() { - LRDP("tilesync - ignored\n"); + WriteTrace(TraceRDP, TraceDebug, "tilesync - ignored"); } static void rdp_fullsync() @@ -1499,7 +1478,7 @@ static void rdp_fullsync() // Set an interrupt to allow the game to continue *gfx.MI_INTR_REG |= 0x20; gfx.CheckInterrupts(); - LRDP("fullsync\n"); + WriteTrace(TraceRDP, TraceDebug, "fullsync"); } static void rdp_setkeygb() @@ -1510,7 +1489,7 @@ static void rdp_setkeygb() uint32_t cG = (rdp.cmd1 >> 24) & 0xFF; rdp.SCALE = (rdp.SCALE & 0xFF0000FF) | (sG << 16) | (sB << 8); rdp.CENTER = (rdp.CENTER & 0xFF0000FF) | (cG << 16) | (cB << 8); - FRDP("setkeygb. cG=%02lx, sG=%02lx, cB=%02lx, sB=%02lx\n", cG, sG, cB, sB); + WriteTrace(TraceRDP, TraceDebug, "setkeygb. cG=%02lx, sG=%02lx, cB=%02lx, sB=%02lx", cG, sG, cB, sB); } static void rdp_setkeyr() @@ -1519,7 +1498,7 @@ static void rdp_setkeyr() uint32_t cR = (rdp.cmd1 >> 8) & 0xFF; rdp.SCALE = (rdp.SCALE & 0x00FFFFFF) | (sR << 24); rdp.CENTER = (rdp.CENTER & 0x00FFFFFF) | (cR << 24); - FRDP("setkeyr. cR=%02lx, sR=%02lx\n", cR, sR); + WriteTrace(TraceRDP, TraceDebug, "setkeyr. cR=%02lx, sR=%02lx", cR, sR); } static void rdp_setconvert() @@ -1533,8 +1512,7 @@ static void rdp_setconvert() */ rdp.K4 = (uint8_t)(rdp.cmd1 >> 9) & 0x1FF; rdp.K5 = (uint8_t)(rdp.cmd1 & 0x1FF); - // RDP_E("setconvert - IGNORED\n"); - FRDP("setconvert. K4=%02lx K5=%02lx\n", rdp.K4, rdp.K5); + WriteTrace(TraceRDP, TraceDebug, "setconvert. K4=%02lx K5=%02lx", rdp.K4, rdp.K5); } // @@ -1553,7 +1531,7 @@ static void rdp_setscissor() rdp.ci_lower_bound = rdp.scissor_o.lr_y; rdp.scissor_set = TRUE; - FRDP("setscissor: (%d,%d) -> (%d,%d)\n", rdp.scissor_o.ul_x, rdp.scissor_o.ul_y, + WriteTrace(TraceRDP, TraceDebug, "setscissor: (%d,%d) -> (%d,%d)", rdp.scissor_o.ul_x, rdp.scissor_o.ul_y, rdp.scissor_o.lr_x, rdp.scissor_o.lr_y); rdp.update |= UPDATE_SCISSOR; @@ -1573,7 +1551,7 @@ static void rdp_setprimdepth() rdp.prim_depth = (uint16_t)((rdp.cmd1 >> 16) & 0x7FFF); rdp.prim_dz = (uint16_t)(rdp.cmd1 & 0x7FFF); - FRDP("setprimdepth: %d\n", rdp.prim_depth); + WriteTrace(TraceRDP, TraceDebug, "setprimdepth: %d", rdp.prim_depth); } static void rdp_setothermode() @@ -1589,7 +1567,7 @@ static void rdp_setothermode() gfx_instruction[g_settings->ucode][cmd] (); \ } - LRDP("rdp_setothermode\n"); + WriteTrace(TraceRDP, TraceDebug, "rdp_setothermode"); if ((g_settings->ucode == ucode_F3DEX2) || (g_settings->ucode == ucode_CBFD)) { @@ -1607,7 +1585,7 @@ static void rdp_setothermode() void load_palette(uint32_t addr, uint16_t start, uint16_t count) { - LRDP("Loading palette... "); + WriteTrace(TraceRDP, TraceDebug, "Loading palette... "); uint16_t *dpal = rdp.pal_8 + start; uint16_t end = start + count; #ifdef TEXTURE_FILTER @@ -1619,13 +1597,13 @@ void load_palette(uint32_t addr, uint16_t start, uint16_t count) *(dpal++) = *(uint16_t *)(gfx.RDRAM + (addr ^ 2)); addr += 2; -#ifdef TLUT_LOGGING - FRDP("%d: %08lx\n", i, *(uint16_t *)(gfx.RDRAM + (addr ^ 2))); -#endif + WriteTrace(TraceTLUT, TraceDebug, "%d: %08lx", i, *(uint16_t *)(gfx.RDRAM + (addr ^ 2))); } #ifdef TEXTURE_FILTER if (g_settings->ghq_hirs) + { memcpy((uint8_t*)(rdp.pal_8_rice + start), spal, count << 1); + } #endif start >>= 4; end = start + (count >> 4); @@ -1636,7 +1614,7 @@ void load_palette(uint32_t addr, uint16_t start, uint16_t count) rdp.pal_8_crc[p] = CRC32(0xFFFFFFFF, &rdp.pal_8[(p << 4)], 32); } rdp.pal_256_crc = CRC32(0xFFFFFFFF, rdp.pal_8_crc, 64); - LRDP("Done.\n"); + WriteTrace(TraceRDP, TraceDebug, "Done."); } static void rdp_loadtlut() @@ -1651,7 +1629,7 @@ static void rdp_loadtlut() if (start + count > 256) count = 256 - start; - FRDP("loadtlut: tile: %d, start: %d, count: %d, from: %08lx\n", tile, start, count, + WriteTrace(TraceRDP, TraceDebug, "loadtlut: tile: %d, start: %d, count: %d, from: %08lx", tile, start, count, rdp.timg.addr); load_palette(rdp.timg.addr, start, count); @@ -1730,22 +1708,22 @@ static void rdp_settilesize() rdp.first = 1; - FRDP("settilesize: tile: %d, ul_s: %d, ul_t: %d, lr_s: %d, lr_t: %d, f_ul_s: %f, f_ul_t: %f\n", + WriteTrace(TraceRDP, TraceDebug, "settilesize: tile: %d, ul_s: %d, ul_t: %d, lr_s: %d, lr_t: %d, f_ul_s: %f, f_ul_t: %f", tile, ul_s, ul_t, lr_s, lr_t, rdp.tiles[tile].f_ul_s, rdp.tiles[tile].f_ul_t); } void setTBufTex(uint16_t t_mem, uint32_t cnt) { - FRDP("setTBufTex t_mem=%d, cnt=%d\n", t_mem, cnt); + WriteTrace(TraceRDP, TraceDebug, "setTBufTex t_mem=%d, cnt=%d", t_mem, cnt); TBUFF_COLOR_IMAGE * pTbufTex = rdp.tbuff_tex; for (int i = 0; i < 2; i++) { - LRDP("Before: "); + WriteTrace(TraceRDP, TraceDebug, "Before: "); if (rdp.aTBuffTex[i]) { - FRDP("rdp.aTBuffTex[%d]: tmu=%d t_mem=%d tile=%d\n", i, rdp.aTBuffTex[i]->tmu, rdp.aTBuffTex[i]->t_mem, rdp.aTBuffTex[i]->tile); + WriteTrace(TraceRDP, TraceDebug, "rdp.aTBuffTex[%d]: tmu=%d t_mem=%d tile=%d", i, rdp.aTBuffTex[i]->tmu, rdp.aTBuffTex[i]->t_mem, rdp.aTBuffTex[i]->tile); } else { - FRDP("rdp.aTBuffTex[%d]=0\n", i); + WriteTrace(TraceRDP, TraceDebug, "rdp.aTBuffTex[%d]=0", i); } if ((rdp.aTBuffTex[i] == 0 && rdp.aTBuffTex[i ^ 1] != pTbufTex) || (rdp.aTBuffTex[i] && rdp.aTBuffTex[i]->t_mem >= t_mem && rdp.aTBuffTex[i]->t_mem < t_mem + cnt)) { @@ -1754,12 +1732,12 @@ void setTBufTex(uint16_t t_mem, uint32_t cnt) rdp.aTBuffTex[i] = pTbufTex; rdp.aTBuffTex[i]->t_mem = t_mem; pTbufTex = 0; - FRDP("rdp.aTBuffTex[%d] tmu=%d t_mem=%d\n", i, rdp.aTBuffTex[i]->tmu, rdp.aTBuffTex[i]->t_mem); + WriteTrace(TraceRDP, TraceDebug, "rdp.aTBuffTex[%d] tmu=%d t_mem=%d", i, rdp.aTBuffTex[i]->tmu, rdp.aTBuffTex[i]->t_mem); } else { rdp.aTBuffTex[i] = 0; - FRDP("rdp.aTBuffTex[%d]=0\n", i); + WriteTrace(TraceRDP, TraceDebug, "rdp.aTBuffTex[%d]=0", i); } } } @@ -1890,7 +1868,7 @@ static void rdp_loadblock() { if (rdp.skip_drawing) { - LRDP("loadblock skipped\n"); + WriteTrace(TraceRDP, TraceDebug, "loadblock skipped"); return; } uint32_t tile = (uint32_t)((rdp.cmd1 >> 24) & 0x07); @@ -1970,7 +1948,7 @@ static void rdp_loadblock() rdp.update |= UPDATE_TEXTURE; - FRDP("loadblock: tile: %d, ul_s: %d, ul_t: %d, lr_s: %d, dxt: %08lx -> %08lx\n", + WriteTrace(TraceRDP, TraceDebug, "loadblock: tile: %d, ul_s: %d, ul_t: %d, lr_s: %d, dxt: %08lx -> %08lx", tile, ul_s, ul_t, lr_s, dxt, _dxt); @@ -2107,7 +2085,7 @@ static void rdp_loadtile() { if (rdp.skip_drawing) { - LRDP("loadtile skipped\n"); + WriteTrace(TraceRDP, TraceDebug, "loadtile skipped"); return; } rdp.timg.set_by = 1; // load tile @@ -2138,7 +2116,7 @@ static void rdp_loadtile() if (rdp.tbuff_tex)// && (rdp.tiles[tile].format == 0)) { - FRDP("loadtile: tbuff_tex ul_s: %d, ul_t:%d\n", ul_s, ul_t); + WriteTrace(TraceRDP, TraceDebug, "loadtile: tbuff_tex ul_s: %d, ul_t:%d", ul_s, ul_t); rdp.tbuff_tex->tile_uls = ul_s; rdp.tbuff_tex->tile_ult = ul_t; } @@ -2194,7 +2172,7 @@ static void rdp_loadtile() unsigned char *end = ((unsigned char *)rdp.tmem) + 4096 - (wid_64 << 3); loadTile((uint32_t *)gfx.RDRAM, (uint32_t *)dst, wid_64, height, line_n, offs, (uint32_t *)end); } - FRDP("loadtile: tile: %d, ul_s: %d, ul_t: %d, lr_s: %d, lr_t: %d\n", tile, + WriteTrace(TraceRDP, TraceDebug, "loadtile: tile: %d, ul_s: %d, ul_t: %d, lr_s: %d, lr_t: %d", tile, ul_s, ul_t, lr_s, lr_t); if (fb_hwfbe_enabled) @@ -2226,9 +2204,9 @@ static void rdp_settile() rdp.update |= UPDATE_TEXTURE; - FRDP("settile: tile: %d, format: %s, size: %s, line: %d, " + WriteTrace(TraceRDP, TraceDebug, "settile: tile: %d, format: %s, size: %s, line: %d, " "t_mem: %08lx, palette: %d, clamp_t/mirror_t: %s, mask_t: %d, " - "shift_t: %d, clamp_s/mirror_s: %s, mask_s: %d, shift_s: %d\n", + "shift_t: %d, clamp_s/mirror_s: %s, mask_s: %d, shift_s: %d", rdp.last_tile, str_format[tile->format], str_size[tile->size], tile->line, tile->t_mem, tile->palette, str_cm[(tile->clamp_t << 1) | tile->mirror_t], tile->mask_t, tile->shift_t, str_cm[(tile->clamp_s << 1) | tile->mirror_s], tile->mask_s, tile->shift_s); @@ -2245,7 +2223,7 @@ static void rdp_settile() { rdp.aTBuffTex[i]->tile = rdp.last_tile; rdp.aTBuffTex[i]->info.format = tile->format == 0 ? GR_TEXFMT_RGB_565 : GR_TEXFMT_ALPHA_INTENSITY_88; - FRDP("rdp.aTBuffTex[%d] tile=%d, format=%s\n", i, rdp.last_tile, tile->format == 0 ? "RGB565" : "Alpha88"); + WriteTrace(TraceRDP, TraceDebug, "rdp.aTBuffTex[%d] tile=%d, format=%s", i, rdp.last_tile, tile->format == 0 ? "RGB565" : "Alpha88"); } else rdp.aTBuffTex[i] = 0; @@ -2270,13 +2248,13 @@ static void rdp_fillrect() uint32_t lr_y = ((rdp.cmd0 & 0x00000FFF) >> 2) + 1; if ((ul_x > lr_x) || (ul_y > lr_y)) { - LRDP("Fillrect. Wrong coordinates. Skipped\n"); + WriteTrace(TraceRDP, TraceDebug, "Fillrect. Wrong coordinates. Skipped"); return; } int pd_multiplayer = (g_settings->ucode == ucode_PerfectDark) && (rdp.cycle_mode == 3) && (rdp.fill_color == 0xFFFCFFFC); if ((rdp.cimg == rdp.zimg) || (fb_emulation_enabled && rdp.ci_count > 0 && rdp.frame_buffers[rdp.ci_count - 1].status == ci_zimg) || pd_multiplayer) { - LRDP("Fillrect - cleared the depth buffer\n"); + WriteTrace(TraceRDP, TraceDebug, "Fillrect - cleared the depth buffer"); if (!(g_settings->hacks&hack_Hyperbike) || rdp.ci_width > 64) //do not clear main depth buffer for aux depth buffers { update_scissor(); @@ -2311,7 +2289,7 @@ static void rdp_fillrect() if (rdp.skip_drawing) { - LRDP("Fillrect skipped\n"); + WriteTrace(TraceRDP, TraceDebug, "Fillrect skipped"); return; } @@ -2329,7 +2307,7 @@ static void rdp_fillrect() grBufferClear(color, 0, 0xFFFF); grDepthMask(FXTRUE); rdp.update |= UPDATE_ZBUF_ENABLED; - LRDP("Fillrect - cleared the texture buffer\n"); + WriteTrace(TraceRDP, TraceDebug, "Fillrect - cleared the texture buffer"); return; } @@ -2340,10 +2318,10 @@ static void rdp_fillrect() { lr_x--; lr_y--; } - FRDP("fillrect (%d,%d) -> (%d,%d), cycle mode: %d, #%d, #%d\n", ul_x, ul_y, lr_x, lr_y, rdp.cycle_mode, + WriteTrace(TraceRDP, TraceDebug, "fillrect (%d,%d) -> (%d,%d), cycle mode: %d, #%d, #%d", ul_x, ul_y, lr_x, lr_y, rdp.cycle_mode, rdp.tri_n, rdp.tri_n + 1); - FRDP("scissor (%d,%d) -> (%d,%d)\n", rdp.scissor.ul_x, rdp.scissor.ul_y, rdp.scissor.lr_x, + WriteTrace(TraceRDP, TraceDebug, "scissor (%d,%d) -> (%d,%d)", rdp.scissor.ul_x, rdp.scissor.ul_y, rdp.scissor.lr_x, rdp.scissor.lr_y); // KILL the floating point error with 0.01f @@ -2357,7 +2335,7 @@ static void rdp_fillrect() if ((uint32_t)s_ul_x > g_settings->res_x) s_ul_x = g_settings->res_x; if ((uint32_t)s_ul_y > g_settings->res_y) s_ul_y = g_settings->res_y; - FRDP(" - %d, %d, %d, %d\n", s_ul_x, s_ul_y, s_lr_x, s_lr_y); + WriteTrace(TraceRDP, TraceDebug, " - %d, %d, %d, %d", s_ul_x, s_ul_y, s_lr_x, s_lr_y); grFogMode(GR_FOG_DISABLE); @@ -2485,7 +2463,7 @@ static void rdp_setfillcolor() rdp.fill_color = rdp.cmd1; rdp.update |= UPDATE_ALPHA_COMPARE | UPDATE_COMBINE; - FRDP("setfillcolor: %08lx\n", rdp.cmd1); + WriteTrace(TraceRDP, TraceDebug, "setfillcolor: %08lx", rdp.cmd1); } static void rdp_setfogcolor() @@ -2493,7 +2471,7 @@ static void rdp_setfogcolor() rdp.fog_color = rdp.cmd1; rdp.update |= UPDATE_COMBINE | UPDATE_FOG_ENABLED; - FRDP("setfogcolor - %08lx\n", rdp.cmd1); + WriteTrace(TraceRDP, TraceDebug, "setfogcolor - %08lx", rdp.cmd1); } static void rdp_setblendcolor() @@ -2501,7 +2479,7 @@ static void rdp_setblendcolor() rdp.blend_color = rdp.cmd1; rdp.update |= UPDATE_COMBINE; - FRDP("setblendcolor: %08lx\n", rdp.cmd1); + WriteTrace(TraceRDP, TraceDebug, "setblendcolor: %08lx", rdp.cmd1); } static void rdp_setprimcolor() @@ -2511,7 +2489,7 @@ static void rdp_setprimcolor() rdp.prim_lodfrac = maxval(rdp.cmd0 & 0xFF, rdp.prim_lodmin); rdp.update |= UPDATE_COMBINE; - FRDP("setprimcolor: %08lx, lodmin: %d, lodfrac: %d\n", rdp.cmd1, rdp.prim_lodmin, + WriteTrace(TraceRDP, TraceDebug, "setprimcolor: %08lx, lodmin: %d, lodfrac: %d", rdp.cmd1, rdp.prim_lodmin, rdp.prim_lodfrac); } @@ -2520,7 +2498,7 @@ static void rdp_setenvcolor() rdp.env_color = rdp.cmd1; rdp.update |= UPDATE_COMBINE; - FRDP("setenvcolor: %08lx\n", rdp.cmd1); + WriteTrace(TraceRDP, TraceDebug, "setenvcolor: %08lx", rdp.cmd1); } static void rdp_setcombine() @@ -2550,7 +2528,7 @@ static void rdp_setcombine() rdp.update |= UPDATE_COMBINE; - FRDP("setcombine\na0=%s b0=%s c0=%s d0=%s\nAa0=%s Ab0=%s Ac0=%s Ad0=%s\na1=%s b1=%s c1=%s d1=%s\nAa1=%s Ab1=%s Ac1=%s Ad1=%s\n", + WriteTrace(TraceRDP, TraceDebug, "setcombine\na0=%s b0=%s c0=%s d0=%s\nAa0=%s Ab0=%s Ac0=%s Ad0=%s\na1=%s b1=%s c1=%s d1=%s\nAa1=%s Ab1=%s Ac1=%s Ad1=%s", Mode0[rdp.c_a0], Mode1[rdp.c_b0], Mode2[rdp.c_c0], Mode3[rdp.c_d0], Alpha0[rdp.c_Aa0], Alpha1[rdp.c_Ab0], Alpha2[rdp.c_Ac0], Alpha3[rdp.c_Ad0], Mode0[rdp.c_a1], Mode1[rdp.c_b1], Mode2[rdp.c_c1], Mode3[rdp.c_d1], @@ -2603,7 +2581,7 @@ static void rdp_settextureimage() if (fb_hwfbe_enabled) //search this texture among drawn texture buffers FindTextureBuffer(rdp.timg.addr, rdp.timg.width); - FRDP("settextureimage: format: %s, size: %s, width: %d, addr: %08lx\n", + WriteTrace(TraceRDP, TraceDebug, "settextureimage: format: %s, size: %s, width: %d, addr: %08lx", format[rdp.timg.format], size[rdp.timg.size], rdp.timg.width, rdp.timg.addr); } @@ -2612,13 +2590,13 @@ static void rdp_setdepthimage() { rdp.zimg = segoffset(rdp.cmd1) & BMASK; rdp.zi_width = rdp.ci_width; - FRDP("setdepthimage - %08lx\n", rdp.zimg); + WriteTrace(TraceRDP, TraceDebug, "setdepthimage - %08lx", rdp.zimg); } int SwapOK = TRUE; static void RestoreScale() { - FRDP("Return to original scale: x = %f, y = %f\n", rdp.scale_x_bak, rdp.scale_y_bak); + WriteTrace(TraceRDP, TraceDebug, "Return to original scale: x = %f, y = %f", rdp.scale_x_bak, rdp.scale_y_bak); rdp.scale_x = rdp.scale_x_bak; rdp.scale_y = rdp.scale_y_bak; // update_scissor(); @@ -2818,7 +2796,7 @@ static void rdp_setcolorimage() grTextureAuxBufferExt(rdp.texbufs[0].tmu, rdp.texbufs[0].begin, LOD, LOD, GR_ASPECT_LOG2_1x1, GR_TEXFMT_RGB_565, GR_MIPMAPLEVELMASK_BOTH); grAuxBufferExt(GR_BUFFER_TEXTUREAUXBUFFER_EXT); - LRDP("rdp_setcolorimage - set texture depth buffer to TMU0\n"); + WriteTrace(TraceRDP, TraceDebug, "rdp_setcolorimage - set texture depth buffer to TMU0"); } } rdp.skip_drawing = TRUE; @@ -2913,7 +2891,7 @@ static void rdp_setcolorimage() } if (to_org_res) { - LRDP("return to original scale\n"); + WriteTrace(TraceRDP, TraceDebug, "return to original scale"); rdp.scale_x = rdp.scale_x_bak; rdp.scale_y = rdp.scale_y_bak; if (fb_hwfbe_enabled && !rdp.read_whole_frame) @@ -2944,8 +2922,8 @@ static void rdp_setcolorimage() uint32_t format = (rdp.cmd0 >> 21) & 0x7; rdp.ci_size = (rdp.cmd0 >> 19) & 0x3; rdp.ci_end = rdp.cimg + ((rdp.ci_width*rdp.ci_height) << (rdp.ci_size - 1)); - FRDP("setcolorimage - %08lx, width: %d, height: %d, format: %d, size: %d\n", rdp.cmd1, rdp.ci_width, rdp.ci_height, format, rdp.ci_size); - FRDP("cimg: %08lx, ocimg: %08lx, SwapOK: %d\n", rdp.cimg, rdp.ocimg, SwapOK); + WriteTrace(TraceRDP, TraceDebug, "setcolorimage - %08lx, width: %d, height: %d, format: %d, size: %d", rdp.cmd1, rdp.ci_width, rdp.ci_height, format, rdp.ci_size); + WriteTrace(TraceRDP, TraceDebug, "cimg: %08lx, ocimg: %08lx, SwapOK: %d", rdp.cimg, rdp.ocimg, SwapOK); if (format != 0) //can't draw into non RGBA buffer { @@ -2987,7 +2965,7 @@ static void rdp_setcolorimage() if (rdp.copy_ci_index && (rdp.frame_buffers[rdp.ci_count - 1].status != ci_zimg)) { int idx = (rdp.frame_buffers[rdp.ci_count].status == ci_aux_copy) ? rdp.main_ci_index : rdp.copy_ci_index; - FRDP("attempt open tex buffer. status: %s, addr: %08lx\n", CIStatus[rdp.frame_buffers[idx].status], rdp.frame_buffers[idx].addr); + WriteTrace(TraceRDP, TraceDebug, "attempt open tex buffer. status: %s, addr: %08lx", CIStatus[rdp.frame_buffers[idx].status], rdp.frame_buffers[idx].addr); OpenTextureBuffer(rdp.frame_buffers[idx]); if (rdp.frame_buffers[rdp.copy_ci_index].status == ci_main) //tidal wave rdp.copy_ci_index = 0; @@ -3007,28 +2985,27 @@ static void rsp_reserved0() { ucode5_texshiftaddr = segoffset(rdp.cmd1); ucode5_texshiftcount = 0; - FRDP("uc5_texshift. addr: %08lx\n", ucode5_texshiftaddr); + WriteTrace(TraceRDP, TraceDebug, "uc5_texshift. addr: %08lx", ucode5_texshiftaddr); } else { - RDP_E("reserved0 - IGNORED\n"); - LRDP("reserved0 - IGNORED\n"); + WriteTrace(TraceRDP, TraceWarning, "reserved0 - IGNORED"); } } static void rsp_reserved1() { - LRDP("reserved1 - ignored\n"); + WriteTrace(TraceRDP, TraceDebug, "reserved1 - ignored"); } static void rsp_reserved2() { - LRDP("reserved2\n"); + WriteTrace(TraceRDP, TraceDebug, "reserved2"); } static void rsp_reserved3() { - LRDP("reserved3 - ignored\n"); + WriteTrace(TraceRDP, TraceDebug, "reserved3 - ignored"); } void SetWireframeCol() @@ -3130,7 +3107,7 @@ EXPORT void CALL FBRead(uint32_t addr) } cpu_fb_read_called = TRUE; uint32_t a = segoffset(addr); - FRDP("FBRead. addr: %08lx\n", a); + WriteTrace(TraceRDP, TraceDebug, "FBRead. addr: %08lx", a); if (!rdp.fb_drawn && (a >= rdp.cimg) && (a < rdp.ci_end)) { fbreads_back++; @@ -3201,7 +3178,7 @@ EXPORT void CALL FBWrite(uint32_t addr, uint32_t /*size*/) } cpu_fb_write_called = TRUE; uint32_t a = segoffset(addr); - FRDP("FBWrite. addr: %08lx\n", a); + WriteTrace(TraceRDP, TraceDebug, "FBWrite. addr: %08lx", a); if (a < rdp.cimg || a > rdp.ci_end) return; cpu_fb_write = TRUE; @@ -3250,7 +3227,7 @@ EXPORT void CALL FBGetFrameBufferInfo(void *p) memset(pinfo, 0, sizeof(FrameBufferInfo) * 6); if (!(g_settings->frame_buffer&fb_get_info)) return; - LRDP("FBGetFrameBufferInfo ()\n"); + WriteTrace(TraceRDP, TraceDebug, "FBGetFrameBufferInfo ()"); //* if (fb_emulation_enabled) { @@ -3291,7 +3268,7 @@ EXPORT void CALL FBGetFrameBufferInfo(void *p) void DetectFrameBufferUsage() { - LRDP("DetectFrameBufferUsage\n"); + WriteTrace(TraceRDP, TraceDebug, "DetectFrameBufferUsage"); uint32_t dlist_start = *(uint32_t*)(gfx.DMEM + 0xFF0); uint32_t a; @@ -3346,7 +3323,7 @@ void DetectFrameBufferUsage() { rdp.dl_count = -1; - LRDP("End of DL\n"); + WriteTrace(TraceRDP, TraceDebug, "End of DL"); rdp.pc_i--; } } @@ -3383,7 +3360,7 @@ void DetectFrameBufferUsage() rdp.frame_buffers[i].status = ci_aux; else if (rdp.frame_buffers[i].addr == rdp.frame_buffers[rdp.ci_count - 1].addr) rdp.frame_buffers[i].status = ci_main; - // FRDP("rdp.frame_buffers[%d].status = %d\n", i, rdp.frame_buffers[i].status); + // WriteTrace(TraceRDP, TraceDebug, "rdp.frame_buffers[%d].status = %d", i, rdp.frame_buffers[i].status); } rdp.main_ci_index = rdp.ci_count - 1; } @@ -3404,10 +3381,10 @@ void DetectFrameBufferUsage() rdp.frame_buffers[i].status = ci_main; } - LRDP("detect fb final results: \n"); + WriteTrace(TraceRDP, TraceDebug, "detect fb final results: "); for (i = 0; i < rdp.ci_count; i++) { - FRDP("rdp.frame_buffers[%d].status = %s, addr: %08lx, height: %d\n", i, CIStatus[rdp.frame_buffers[i].status], rdp.frame_buffers[i].addr, rdp.frame_buffers[i].height); + WriteTrace(TraceRDP, TraceDebug, "rdp.frame_buffers[%d].status = %s, addr: %08lx, height: %d", i, CIStatus[rdp.frame_buffers[i].status], rdp.frame_buffers[i].addr, rdp.frame_buffers[i].height); } rdp.cimg = ci; @@ -3486,7 +3463,7 @@ void DetectFrameBufferUsage() } if (tidal) { - //LRDP("Tidal wave!\n"); + //WriteTrace(TraceRDP, TraceDebug, "Tidal wave!"); rdp.copy_ci_index = rdp.main_ci_index; } } @@ -3496,7 +3473,7 @@ void DetectFrameBufferUsage() rdp.maincimg[0] = rdp.frame_buffers[rdp.main_ci_index]; // rdp.scale_x = rdp.scale_x_bak; // rdp.scale_y = rdp.scale_y_bak; - LRDP("DetectFrameBufferUsage End\n"); + WriteTrace(TraceRDP, TraceDebug, "DetectFrameBufferUsage End"); } /******************************************* @@ -3888,49 +3865,49 @@ static void rdp_triangle(int shade, int texture, int zbuffer) static void rdp_trifill() { rdp_triangle(0, 0, 0); - LRDP("trifill\n"); + WriteTrace(TraceRDP, TraceDebug, "trifill"); } static void rdp_trishade() { rdp_triangle(1, 0, 0); - LRDP("trishade\n"); + WriteTrace(TraceRDP, TraceDebug, "trishade"); } static void rdp_tritxtr() { rdp_triangle(0, 1, 0); - LRDP("tritxtr\n"); + WriteTrace(TraceRDP, TraceDebug, "tritxtr"); } static void rdp_trishadetxtr() { rdp_triangle(1, 1, 0); - LRDP("trishadetxtr\n"); + WriteTrace(TraceRDP, TraceDebug, "trishadetxtr"); } static void rdp_trifillz() { rdp_triangle(0, 0, 1); - LRDP("trifillz\n"); + WriteTrace(TraceRDP, TraceDebug, "trifillz"); } static void rdp_trishadez() { rdp_triangle(1, 0, 1); - LRDP("trishadez\n"); + WriteTrace(TraceRDP, TraceDebug, "trishadez"); } static void rdp_tritxtrz() { rdp_triangle(0, 1, 1); - LRDP("tritxtrz\n"); + WriteTrace(TraceRDP, TraceDebug, "tritxtrz"); } static void rdp_trishadetxtrz() { rdp_triangle(1, 1, 1); - LRDP("trishadetxtrz\n"); + WriteTrace(TraceRDP, TraceDebug, "trishadetxtrz"); } static rdp_instr rdp_command_table[64] = @@ -4046,7 +4023,7 @@ static void rdphalf_1() uint32_t cmd = rdp.cmd1 >> 24; if (cmd >= 0xc8 && cmd <= 0xcf) //triangle command { - LRDP("rdphalf_1 - lle triangle\n"); + WriteTrace(TraceRDP, TraceDebug, "rdphalf_1 - lle triangle"); rdp_cmd_ptr = 0; rdp_cmd_cur = 0; uint32_t a; @@ -4062,7 +4039,7 @@ static void rdphalf_1() { rdp.dl_count = -1; - LRDP("End of DL\n"); + WriteTrace(TraceRDP, TraceDebug, "End of DL"); rdp.pc_i--; } } @@ -4092,20 +4069,18 @@ static void rdphalf_1() } else { - LRDP("rdphalf_1 - IGNORED\n"); + WriteTrace(TraceRDP, TraceDebug, "rdphalf_1 - IGNORED"); } } static void rdphalf_2() { - RDP_E("rdphalf_2 - IGNORED\n"); - LRDP("rdphalf_2 - IGNORED\n"); + WriteTrace(TraceRDP, TraceWarning, "rdphalf_2 - IGNORED"); } static void rdphalf_cont() { - RDP_E("rdphalf_cont - IGNORED\n"); - LRDP("rdphalf_cont - IGNORED\n"); + WriteTrace(TraceRDP, TraceWarning, "rdphalf_cont - IGNORED"); } /****************************************************************** @@ -4136,7 +4111,7 @@ void CALL ProcessRDPList(void) rdp_cmd_data[rdp_cmd_ptr++] = READ_RDP_DATA(dp_current + i); if (rdp_cmd_ptr >= 0x1000) { - FRDP("rdp_process_list: rdp_cmd_ptr overflow %x %x --> %x\n", length, dp_current, dp_end); + WriteTrace(TraceRDP, TraceDebug, "rdp_process_list: rdp_cmd_ptr overflow %x %x --> %x", length, dp_current, dp_end); } } diff --git a/Source/Glide64/trace.cpp b/Source/Glide64/trace.cpp index 62bcd5035..32e5a4d07 100644 --- a/Source/Glide64/trace.cpp +++ b/Source/Glide64/trace.cpp @@ -61,6 +61,8 @@ void SetupTrace(void) TraceSetModuleName(TraceInterface, "Interface"); TraceSetModuleName(TraceResolution, "Resolution"); TraceSetModuleName(TraceGlitch, "Glitch"); + TraceSetModuleName(TraceRDP, "RDP"); + TraceSetModuleName(TraceTLUT, "TLUT"); char log_dir[260]; memset(log_dir, 0, sizeof(log_dir)); diff --git a/Source/Glide64/trace.h b/Source/Glide64/trace.h index 6c773e3ce..d8f6933fd 100644 --- a/Source/Glide64/trace.h +++ b/Source/Glide64/trace.h @@ -10,6 +10,8 @@ enum TraceModuleGlide64 TraceInterface, TraceResolution, TraceGlitch, + TraceRDP, + TraceTLUT, MaxTraceModuleGlide64, }; diff --git a/Source/Glide64/turbo3D.h b/Source/Glide64/turbo3D.h index 1fb5ac2ab..c1d254a9d 100644 --- a/Source/Glide64/turbo3D.h +++ b/Source/Glide64/turbo3D.h @@ -103,7 +103,7 @@ static void t3dProcessRDP(uint32_t a) static void t3dLoadGlobState(uint32_t pgstate) { t3dGlobState *gstate = (t3dGlobState*)&gfx.RDRAM[segoffset(pgstate)]; - FRDP("Global state. pad0: %04lx, perspNorm: %04lx, flag: %08lx\n", gstate->pad0, gstate->perspNorm, gstate->flag); + WriteTrace(TraceRDP, TraceDebug, "Global state. pad0: %04lx, perspNorm: %04lx, flag: %08lx", gstate->pad0, gstate->perspNorm, gstate->flag); rdp.cmd0 = gstate->othermode0; rdp.cmd1 = gstate->othermode1; rdp_setothermode(); @@ -111,7 +111,7 @@ static void t3dLoadGlobState(uint32_t pgstate) for (int s = 0; s < 16; s++) { rdp.segment[s] = gstate->segBases[s]; - FRDP("segment: %08lx -> seg%d\n", rdp.segment[s], s); + WriteTrace(TraceRDP, TraceDebug, "segment: %08lx -> seg%d", rdp.segment[s], s); } short scale_x = gstate->vsacle0 / 4; @@ -127,7 +127,7 @@ static void t3dLoadGlobState(uint32_t pgstate) rdp.view_trans[1] = trans_y * rdp.scale_y; rdp.view_trans[2] = 32.0f * trans_z; rdp.update |= UPDATE_VIEWPORT; - FRDP("viewport scale(%d, %d, %d), trans(%d, %d, %d)\n", scale_x, scale_y, scale_z, + WriteTrace(TraceRDP, TraceDebug, "viewport scale(%d, %d, %d), trans(%d, %d, %d)", scale_x, scale_y, scale_z, trans_x, trans_y, trans_z); t3dProcessRDP(segoffset(gstate->rdpCmds) >> 2); @@ -177,27 +177,23 @@ static void t3d_vertex(uint32_t addr, uint32_t v0, uint32_t n) if (v->y < -v->w) v->scr_off |= 4; if (v->y > v->w) v->scr_off |= 8; if (v->w < 0.1f) v->scr_off |= 16; -#ifdef EXTREME_LOGGING - FRDP ("v%d - x: %f, y: %f, z: %f, w: %f, u: %f, v: %f, f: %f, z_w: %f, r=%d, g=%d, b=%d, a=%d\n", i>>4, v->x, v->y, v->z, v->w, v->ou*rdp.tiles[rdp.cur_tile].s_scale, v->ov*rdp.tiles[rdp.cur_tile].t_scale, v->f, v->z_w, v->r, v->g, v->b, v->a); -#endif + WriteTrace(TraceRDP, TraceVerbose, "v%d - x: %f, y: %f, z: %f, w: %f, u: %f, v: %f, f: %f, z_w: %f, r=%d, g=%d, b=%d, a=%d", i >> 4, v->x, v->y, v->z, v->w, v->ou*rdp.tiles[rdp.cur_tile].s_scale, v->ov*rdp.tiles[rdp.cur_tile].t_scale, v->f, v->z_w, v->r, v->g, v->b, v->a); } } static void t3dLoadObject(uint32_t pstate, uint32_t pvtx, uint32_t ptri) { - LRDP("Loading Turbo3D object\n"); + WriteTrace(TraceRDP, TraceDebug, "Loading Turbo3D object"); t3dState *ostate = (t3dState*)&gfx.RDRAM[segoffset(pstate)]; rdp.cur_tile = (ostate->textureState) & 7; - FRDP("tile: %d\n", rdp.cur_tile); + WriteTrace(TraceRDP, TraceDebug, "tile: %d", rdp.cur_tile); if (rdp.tiles[rdp.cur_tile].s_scale < 0.001f) rdp.tiles[rdp.cur_tile].s_scale = 0.015625; if (rdp.tiles[rdp.cur_tile].t_scale < 0.001f) rdp.tiles[rdp.cur_tile].t_scale = 0.015625; -#ifdef EXTREME_LOGGING - FRDP("renderState: %08lx, textureState: %08lx, othermode0: %08lx, othermode1: %08lx, rdpCmds: %08lx, triCount : %d, v0: %d, vn: %d\n", ostate->renderState, ostate->textureState, + WriteTrace(TraceRDP, TraceVerbose, "renderState: %08lx, textureState: %08lx, othermode0: %08lx, othermode1: %08lx, rdpCmds: %08lx, triCount : %d, v0: %d, vn: %d", ostate->renderState, ostate->textureState, ostate->othermode0, ostate->othermode1, ostate->rdpCmds, ostate->triCount, ostate->vtxV0, ostate->vtxCount); -#endif rdp.cmd0 = ostate->othermode0; rdp.cmd1 = ostate->othermode1; @@ -210,12 +206,10 @@ static void t3dLoadObject(uint32_t pstate, uint32_t pvtx, uint32_t ptri) { uint32_t addr = segoffset(pstate + sizeof(t3dState)) & BMASK; load_matrix(rdp.combined, addr); -#ifdef EXTREME_LOGGING - FRDP ("{%f,%f,%f,%f}\n", rdp.combined[0][0], rdp.combined[0][1], rdp.combined[0][2], rdp.combined[0][3]); - FRDP ("{%f,%f,%f,%f}\n", rdp.combined[1][0], rdp.combined[1][1], rdp.combined[1][2], rdp.combined[1][3]); - FRDP ("{%f,%f,%f,%f}\n", rdp.combined[2][0], rdp.combined[2][1], rdp.combined[2][2], rdp.combined[2][3]); - FRDP ("{%f,%f,%f,%f}\n", rdp.combined[3][0], rdp.combined[3][1], rdp.combined[3][2], rdp.combined[3][3]); -#endif + WriteTrace(TraceRDP, TraceVerbose, "{%f,%f,%f,%f}", rdp.combined[0][0], rdp.combined[0][1], rdp.combined[0][2], rdp.combined[0][3]); + WriteTrace(TraceRDP, TraceVerbose, "{%f,%f,%f,%f}", rdp.combined[1][0], rdp.combined[1][1], rdp.combined[1][2], rdp.combined[1][3]); + WriteTrace(TraceRDP, TraceVerbose, "{%f,%f,%f,%f}", rdp.combined[2][0], rdp.combined[2][1], rdp.combined[2][2], rdp.combined[2][3]); + WriteTrace(TraceRDP, TraceVerbose, "{%f,%f,%f,%f}", rdp.combined[3][0], rdp.combined[3][1], rdp.combined[3][2], rdp.combined[3][3]); } rdp.geom_mode &= ~0x00020000; @@ -233,7 +227,7 @@ static void t3dLoadObject(uint32_t pstate, uint32_t pvtx, uint32_t ptri) { t3dTriN * tri = (t3dTriN*)&gfx.RDRAM[a]; a += 4; - FRDP("tri #%d - %d, %d, %d\n", t, tri->v0, tri->v1, tri->v2); + WriteTrace(TraceRDP, TraceDebug, "tri #%d - %d, %d, %d", t, tri->v0, tri->v1, tri->v2); VERTEX *v[3] = { &rdp.vtx[tri->v0], &rdp.vtx[tri->v1], &rdp.vtx[tri->v2] }; if (cull_tri(v)) rdp.tri_n++; @@ -248,7 +242,7 @@ static void t3dLoadObject(uint32_t pstate, uint32_t pvtx, uint32_t ptri) static void Turbo3D() { - LRDP("Start Turbo3D microcode\n"); + WriteTrace(TraceRDP, TraceDebug, "Start Turbo3D microcode"); g_settings->ucode = ucode_Fast3D; uint32_t a = 0, pgstate = 0, pstate = 0, pvtx = 0, ptri = 0; do { @@ -257,7 +251,7 @@ static void Turbo3D() pstate = ((uint32_t*)gfx.RDRAM)[(a >> 2) + 1]; pvtx = ((uint32_t*)gfx.RDRAM)[(a >> 2) + 2]; ptri = ((uint32_t*)gfx.RDRAM)[(a >> 2) + 3]; - FRDP("GlobalState: %08lx, Object: %08lx, Vertices: %08lx, Triangles: %08lx\n", pgstate, pstate, pvtx, ptri); + WriteTrace(TraceRDP, TraceDebug, "GlobalState: %08lx, Object: %08lx, Vertices: %08lx, Triangles: %08lx", pgstate, pstate, pvtx, ptri); if (!pstate) { rdp.halt = 1; diff --git a/Source/Glide64/ucode00.h b/Source/Glide64/ucode00.h index 0425e01b7..780e51660 100644 --- a/Source/Glide64/ucode00.h +++ b/Source/Glide64/ucode00.h @@ -80,7 +80,7 @@ static void rsp_vertex(int v0, int n) } } - FRDP("rsp:vertex v0:%d, n:%d, from: %08lx\n", v0, n, addr); + WriteTrace(TraceRDP, TraceDebug, "rsp:vertex v0:%d, n:%d, from: %08lx", v0, n, addr); for (i = 0; i < (n << 4); i += 16) { @@ -140,9 +140,7 @@ static void rsp_vertex(int v0, int n) v->g = ((uint8_t*)gfx.RDRAM)[(addr + i + 13) ^ 3]; v->b = ((uint8_t*)gfx.RDRAM)[(addr + i + 14) ^ 3]; } -#ifdef EXTREME_LOGGING - FRDP ("v%d - x: %f, y: %f, z: %f, w: %f, u: %f, v: %f, f: %f, z_w: %f, r=%d, g=%d, b=%d, a=%d\n", i>>4, v->x, v->y, v->z, v->w, v->ou*rdp.tiles[rdp.cur_tile].s_scale, v->ov*rdp.tiles[rdp.cur_tile].t_scale, v->f, v->z_w, v->r, v->g, v->b, v->a); -#endif + WriteTrace(TraceRDP, TraceVerbose, "v%d - x: %f, y: %f, z: %f, w: %f, u: %f, v: %f, f: %f, z_w: %f, r=%d, g=%d, b=%d, a=%d", i >> 4, v->x, v->y, v->z, v->w, v->ou*rdp.tiles[rdp.cur_tile].s_scale, v->ov*rdp.tiles[rdp.cur_tile].t_scale, v->f, v->z_w, v->r, v->g, v->b, v->a); } } @@ -216,8 +214,7 @@ void modelview_push() { if (rdp.model_i == rdp.model_stack_size) { - RDP_E("** Model matrix stack overflow ** too many pushes\n"); - LRDP("** Model matrix stack overflow ** too many pushes\n"); + WriteTrace(TraceRDP, TraceWarning, "** Model matrix stack overflow ** too many pushes"); return; } @@ -233,8 +230,7 @@ void modelview_pop(int num = 1) } else { - RDP_E("** Model matrix stack error ** too many pops\n"); - LRDP("** Model matrix stack error ** too many pops\n"); + WriteTrace(TraceRDP, TraceWarning, "** Model matrix stack error ** too many pops"); return; } memcpy(rdp.model, rdp.model_stack[rdp.model_i], 64); @@ -270,7 +266,7 @@ void projection_mul(float m[4][4]) void load_matrix(float m[4][4], uint32_t addr) { - FRDP("matrix - addr: %08lx\n", addr); + WriteTrace(TraceRDP, TraceDebug, "matrix - addr: %08lx", addr); int x, y; // matrix index addr >>= 1; uint16_t * src = (uint16_t*)gfx.RDRAM; @@ -289,7 +285,7 @@ void load_matrix(float m[4][4], uint32_t addr) // static void uc0_matrix() { - LRDP("uc0:matrix "); + WriteTrace(TraceRDP, TraceDebug, "uc0:matrix "); // Use segment offset to get the address uint32_t addr = segoffset(rdp.cmd1) & 0x00FFFFFF; @@ -301,57 +297,54 @@ static void uc0_matrix() switch (command) { case 0: // modelview mul nopush - LRDP("modelview mul\n"); + WriteTrace(TraceRDP, TraceDebug, "modelview mul"); modelview_mul(m); break; case 1: // projection mul nopush case 5: // projection mul push, can't push projection - LRDP("projection mul\n"); + WriteTrace(TraceRDP, TraceDebug, "projection mul"); projection_mul(m); break; case 2: // modelview load nopush - LRDP("modelview load\n"); + WriteTrace(TraceRDP, TraceDebug, "modelview load"); modelview_load(m); break; case 3: // projection load nopush case 7: // projection load push, can't push projection - LRDP("projection load\n"); + WriteTrace(TraceRDP, TraceDebug, "projection load"); projection_load(m); break; case 4: // modelview mul push - LRDP("modelview mul push\n"); + WriteTrace(TraceRDP, TraceDebug, "modelview mul push"); modelview_mul_push(m); break; case 6: // modelview load push - LRDP("modelview load push\n"); + WriteTrace(TraceRDP, TraceDebug, "modelview load push"); modelview_load_push(m); break; default: - FRDP_E("Unknown matrix command, %02lx", command); - FRDP("Unknown matrix command, %02lx", command); + WriteTrace(TraceRDP, TraceWarning, "Unknown matrix command, %02lx", command); } -#ifdef EXTREME_LOGGING - FRDP("{%f,%f,%f,%f}\n", m[0][0], m[0][1], m[0][2], m[0][3]); - FRDP ("{%f,%f,%f,%f}\n", m[1][0], m[1][1], m[1][2], m[1][3]); - FRDP ("{%f,%f,%f,%f}\n", m[2][0], m[2][1], m[2][2], m[2][3]); - FRDP ("{%f,%f,%f,%f}\n", m[3][0], m[3][1], m[3][2], m[3][3]); - FRDP ("\nmodel\n{%f,%f,%f,%f}\n", rdp.model[0][0], rdp.model[0][1], rdp.model[0][2], rdp.model[0][3]); - FRDP ("{%f,%f,%f,%f}\n", rdp.model[1][0], rdp.model[1][1], rdp.model[1][2], rdp.model[1][3]); - FRDP ("{%f,%f,%f,%f}\n", rdp.model[2][0], rdp.model[2][1], rdp.model[2][2], rdp.model[2][3]); - FRDP ("{%f,%f,%f,%f}\n", rdp.model[3][0], rdp.model[3][1], rdp.model[3][2], rdp.model[3][3]); - FRDP ("\nproj\n{%f,%f,%f,%f}\n", rdp.proj[0][0], rdp.proj[0][1], rdp.proj[0][2], rdp.proj[0][3]); - FRDP ("{%f,%f,%f,%f}\n", rdp.proj[1][0], rdp.proj[1][1], rdp.proj[1][2], rdp.proj[1][3]); - FRDP ("{%f,%f,%f,%f}\n", rdp.proj[2][0], rdp.proj[2][1], rdp.proj[2][2], rdp.proj[2][3]); - FRDP ("{%f,%f,%f,%f}\n", rdp.proj[3][0], rdp.proj[3][1], rdp.proj[3][2], rdp.proj[3][3]); -#endif + WriteTrace(TraceRDP, TraceVerbose, "{%f,%f,%f,%f}", m[0][0], m[0][1], m[0][2], m[0][3]); + WriteTrace(TraceRDP, TraceVerbose, "{%f,%f,%f,%f}", m[1][0], m[1][1], m[1][2], m[1][3]); + WriteTrace(TraceRDP, TraceVerbose, "{%f,%f,%f,%f}", m[2][0], m[2][1], m[2][2], m[2][3]); + WriteTrace(TraceRDP, TraceVerbose, "{%f,%f,%f,%f}", m[3][0], m[3][1], m[3][2], m[3][3]); + WriteTrace(TraceRDP, TraceVerbose, "\nmodel\n{%f,%f,%f,%f}", rdp.model[0][0], rdp.model[0][1], rdp.model[0][2], rdp.model[0][3]); + WriteTrace(TraceRDP, TraceVerbose, "{%f,%f,%f,%f}", rdp.model[1][0], rdp.model[1][1], rdp.model[1][2], rdp.model[1][3]); + WriteTrace(TraceRDP, TraceVerbose, "{%f,%f,%f,%f}", rdp.model[2][0], rdp.model[2][1], rdp.model[2][2], rdp.model[2][3]); + WriteTrace(TraceRDP, TraceVerbose, "{%f,%f,%f,%f}", rdp.model[3][0], rdp.model[3][1], rdp.model[3][2], rdp.model[3][3]); + WriteTrace(TraceRDP, TraceVerbose, "\nproj\n{%f,%f,%f,%f}", rdp.proj[0][0], rdp.proj[0][1], rdp.proj[0][2], rdp.proj[0][3]); + WriteTrace(TraceRDP, TraceVerbose, "{%f,%f,%f,%f}", rdp.proj[1][0], rdp.proj[1][1], rdp.proj[1][2], rdp.proj[1][3]); + WriteTrace(TraceRDP, TraceVerbose, "{%f,%f,%f,%f}", rdp.proj[2][0], rdp.proj[2][1], rdp.proj[2][2], rdp.proj[2][3]); + WriteTrace(TraceRDP, TraceVerbose, "{%f,%f,%f,%f}", rdp.proj[3][0], rdp.proj[3][1], rdp.proj[3][2], rdp.proj[3][3]); } // @@ -359,7 +352,7 @@ static void uc0_matrix() // static void uc0_movemem() { - LRDP("uc0:movemem "); + WriteTrace(TraceRDP, TraceDebug, "uc0:movemem "); uint32_t i, a; @@ -392,7 +385,7 @@ static void uc0_movemem() rdp.update |= UPDATE_VIEWPORT; - FRDP("viewport scale(%d, %d, %d), trans(%d, %d, %d), from:%08lx\n", scale_x, scale_y, scale_z, + WriteTrace(TraceRDP, TraceDebug, "viewport scale(%d, %d, %d), trans(%d, %d, %d), from:%08lx", scale_x, scale_y, scale_z, trans_x, trans_y, trans_z, rdp.cmd1); } break; @@ -410,7 +403,7 @@ static void uc0_movemem() rdp.use_lookat = FALSE; else rdp.use_lookat = TRUE; - FRDP("lookat_y (%f, %f, %f)\n", rdp.lookat[1][0], rdp.lookat[1][1], rdp.lookat[1][2]); + WriteTrace(TraceRDP, TraceDebug, "lookat_y (%f, %f, %f)", rdp.lookat[1][0], rdp.lookat[1][1], rdp.lookat[1][2]); } break; @@ -420,7 +413,7 @@ static void uc0_movemem() rdp.lookat[0][1] = (float)(((char*)gfx.RDRAM)[(a + 9) ^ 3]) / 127.0f; rdp.lookat[0][2] = (float)(((char*)gfx.RDRAM)[(a + 10) ^ 3]) / 127.0f; rdp.use_lookat = TRUE; - FRDP("lookat_x (%f, %f, %f)\n", rdp.lookat[1][0], rdp.lookat[1][1], rdp.lookat[1][2]); + WriteTrace(TraceRDP, TraceDebug, "lookat_x (%f, %f, %f)", rdp.lookat[1][0], rdp.lookat[1][1], rdp.lookat[1][2]); break; case 0x86: @@ -449,7 +442,7 @@ static void uc0_movemem() //rdp.update |= UPDATE_LIGHTS; - FRDP("light: n: %d, r: %.3f, g: %.3f, b: %.3f, x: %.3f, y: %.3f, z: %.3f\n", + WriteTrace(TraceRDP, TraceDebug, "light: n: %d, r: %.3f, g: %.3f, b: %.3f, x: %.3f, y: %.3f, z: %.3f", i, rdp.light[i].r, rdp.light[i].g, rdp.light[i].b, rdp.light_vector[i][0], rdp.light_vector[i][1], rdp.light_vector[i][2]); break; @@ -465,36 +458,31 @@ static void uc0_movemem() addr = rdp.pc[rdp.pc_i] & BMASK; rdp.pc[rdp.pc_i] = (addr + 24) & BMASK; //skip next 3 command, b/c they all are part of gSPForceMatrix -#ifdef EXTREME_LOGGING - FRDP("{%f,%f,%f,%f}\n", rdp.combined[0][0], rdp.combined[0][1], rdp.combined[0][2], rdp.combined[0][3]); - FRDP("{%f,%f,%f,%f}\n", rdp.combined[1][0], rdp.combined[1][1], rdp.combined[1][2], rdp.combined[1][3]); - FRDP ("{%f,%f,%f,%f}\n", rdp.combined[2][0], rdp.combined[2][1], rdp.combined[2][2], rdp.combined[2][3]); - FRDP ("{%f,%f,%f,%f}\n", rdp.combined[3][0], rdp.combined[3][1], rdp.combined[3][2], rdp.combined[3][3]); -#endif + WriteTrace(TraceRDP, TraceVerbose, "{%f,%f,%f,%f}", rdp.combined[0][0], rdp.combined[0][1], rdp.combined[0][2], rdp.combined[0][3]); + WriteTrace(TraceRDP, TraceVerbose, "{%f,%f,%f,%f}", rdp.combined[1][0], rdp.combined[1][1], rdp.combined[1][2], rdp.combined[1][3]); + WriteTrace(TraceRDP, TraceVerbose, "{%f,%f,%f,%f}", rdp.combined[2][0], rdp.combined[2][1], rdp.combined[2][2], rdp.combined[2][3]); + WriteTrace(TraceRDP, TraceVerbose, "{%f,%f,%f,%f}", rdp.combined[3][0], rdp.combined[3][1], rdp.combined[3][2], rdp.combined[3][3]); } break; //next 3 command should never appear since they will be skipped in previous command case 0x98: - RDP_E("uc0:movemem matrix 0 - ERROR!\n"); - LRDP("matrix 0 - IGNORED\n"); + WriteTrace(TraceRDP, TraceWarning, "matrix 0 - IGNORED"); break; case 0x9A: - RDP_E("uc0:movemem matrix 1 - ERROR!\n"); - LRDP("matrix 1 - IGNORED\n"); + WriteTrace(TraceRDP, TraceWarning, "matrix 1 - IGNORED"); break; case 0x9C: - RDP_E("uc0:movemem matrix 2 - ERROR!\n"); - LRDP("matrix 2 - IGNORED\n"); + WriteTrace(TraceRDP, TraceWarning, "matrix 2 - IGNORED"); break; default: - FRDP_E("uc0:movemem unknown (index: 0x%08lx)\n", (rdp.cmd0 >> 16) & 0xFF); - FRDP("unknown (index: 0x%08lx)\n", (rdp.cmd0 >> 16) & 0xFF); - } + WriteTrace(TraceRDP, TraceWarning, "uc0:movemem unknown (index: 0x%08lx)", (rdp.cmd0 >> 16) & 0xFF); + WriteTrace(TraceRDP, TraceDebug, "unknown (index: 0x%08lx)", (rdp.cmd0 >> 16) & 0xFF); } +} // // uc0:displaylist - makes a call to another section of code @@ -504,19 +492,19 @@ static void uc0_displaylist() uint32_t addr = segoffset(rdp.cmd1) & 0x00FFFFFF; // This fixes partially Gauntlet: Legends - if (addr == rdp.pc[rdp.pc_i] - 8) { LRDP("display list not executed!\n"); return; } + if (addr == rdp.pc[rdp.pc_i] - 8) { WriteTrace(TraceRDP, TraceDebug, "display list not executed!"); return; } uint32_t push = (rdp.cmd0 >> 16) & 0xFF; // push the old location? - FRDP("uc0:displaylist: %08lx, push:%s", addr, push ? "no" : "yes"); - FRDP(" (seg %d, offset %08lx)\n", (rdp.cmd1 >> 24) & 0x0F, rdp.cmd1 & 0x00FFFFFF); + WriteTrace(TraceRDP, TraceDebug, "uc0:displaylist: %08lx, push:%s", addr, push ? "no" : "yes"); + WriteTrace(TraceRDP, TraceDebug, " (seg %d, offset %08lx)", (rdp.cmd1 >> 24) & 0x0F, rdp.cmd1 & 0x00FFFFFF); switch (push) { case 0: // push - if (rdp.pc_i >= 9) { - RDP_E("** DL stack overflow **"); - LRDP("** DL stack overflow **\n"); + if (rdp.pc_i >= 9) + { + WriteTrace(TraceRDP, TraceWarning, "** DL stack overflow **"); return; } rdp.pc_i++; // go to the next PC in the stack @@ -528,8 +516,7 @@ static void uc0_displaylist() break; default: - RDP_E("Unknown displaylist operation\n"); - LRDP("Unknown displaylist operation\n"); + WriteTrace(TraceRDP, TraceWarning, "Unknown displaylist operation"); } } @@ -538,7 +525,7 @@ static void uc0_displaylist() // static void uc0_tri1() { - FRDP("uc0:tri1 #%d - %d, %d, %d\n", rdp.tri_n, + WriteTrace(TraceRDP, TraceDebug, "uc0:tri1 #%d - %d, %d, %d", rdp.tri_n, ((rdp.cmd1 >> 16) & 0xFF) / 10, ((rdp.cmd1 >> 8) & 0xFF) / 10, (rdp.cmd1 & 0xFF) / 10); @@ -568,11 +555,11 @@ static void uc0_tri1() // static void uc0_enddl() { - LRDP("uc0:enddl\n"); + WriteTrace(TraceRDP, TraceDebug, "uc0:enddl"); if (rdp.pc_i == 0) { - LRDP("RDP end\n"); + WriteTrace(TraceRDP, TraceDebug, "RDP end"); // Halt execution here rdp.halt = 1; @@ -588,7 +575,7 @@ static void uc0_culldl() uint32_t cond = 0; VERTEX *v; - FRDP("uc0:culldl start: %d, end: %d\n", vStart, vEnd); + WriteTrace(TraceRDP, TraceDebug, "uc0:culldl start: %d, end: %d", vStart, vEnd); if (vEnd < vStart) return; for (uint16_t i = vStart; i <= vEnd; i++) @@ -610,13 +597,13 @@ static void uc0_culldl() return; } - LRDP(" - "); // specify that the enddl is not a real command + WriteTrace(TraceRDP, TraceDebug, " - "); // specify that the enddl is not a real command uc0_enddl(); } static void uc0_popmatrix() { - LRDP("uc0:popmatrix\n"); + WriteTrace(TraceRDP, TraceDebug, "uc0:popmatrix"); uint32_t param = rdp.cmd1; @@ -630,8 +617,7 @@ static void uc0_popmatrix() break; default: - FRDP_E("Unknown uc0:popmatrix command: 0x%08lx\n", param); - FRDP("Unknown uc0:popmatrix command: 0x%08lx\n", param); + WriteTrace(TraceRDP, TraceWarning, "Unknown uc0:popmatrix command: 0x%08lx", param); } } @@ -654,7 +640,7 @@ static void uc0_modifyvtx(uint8_t where, uint16_t vtx, uint32_t val) v->a = (uint8_t)(val & 0xFF); v->shade_mod = 0; - FRDP("RGBA: %d, %d, %d, %d\n", v->r, v->g, v->b, v->a); + WriteTrace(TraceRDP, TraceDebug, "RGBA: %d, %d, %d, %d", v->r, v->g, v->b, v->a); break; case 0x14: // ST @@ -665,7 +651,7 @@ static void uc0_modifyvtx(uint8_t where, uint16_t vtx, uint32_t val) v->uv_calculated = 0xFFFFFFFF; v->uv_scaled = 1; } - FRDP("u/v: (%04lx, %04lx), (%f, %f)\n", (short)(val >> 16), (short)(val & 0xFFFF), + WriteTrace(TraceRDP, TraceDebug, "u/v: (%04lx, %04lx), (%f, %f)", (short)(val >> 16), (short)(val & 0xFFFF), v->ou, v->ov); break; @@ -691,7 +677,7 @@ static void uc0_modifyvtx(uint8_t where, uint16_t vtx, uint32_t val) if (scr_y > rdp.vi_height) v->scr_off |= 8; if (v->w < 0.1f) v->scr_off |= 16; - FRDP("x/y: (%f, %f)\n", scr_x, scr_y); + WriteTrace(TraceRDP, TraceDebug, "x/y: (%f, %f)", scr_x, scr_y); } break; @@ -700,12 +686,12 @@ static void uc0_modifyvtx(uint8_t where, uint16_t vtx, uint32_t val) float scr_z = (float)((short)(val >> 16)); v->z_w = (scr_z - rdp.view_trans[2]) / rdp.view_scale[2]; v->z = v->z_w * v->w; - FRDP("z: %f\n", scr_z); + WriteTrace(TraceRDP, TraceDebug, "z: %f", scr_z); } break; default: - LRDP("UNKNOWN\n"); + WriteTrace(TraceRDP, TraceDebug, "UNKNOWN"); break; } } @@ -715,14 +701,13 @@ static void uc0_modifyvtx(uint8_t where, uint16_t vtx, uint32_t val) // static void uc0_moveword() { - LRDP("uc0:moveword "); + WriteTrace(TraceRDP, TraceDebug, "uc0:moveword "); // Find which command this is (lowest byte of cmd0) switch (rdp.cmd0 & 0xFF) { case 0x00: - RDP_E("uc0:moveword matrix - IGNORED\n"); - LRDP("matrix - IGNORED\n"); + WriteTrace(TraceRDP, TraceWarning, "matrix - IGNORED"); break; case 0x02: @@ -730,7 +715,7 @@ static void uc0_moveword() if (rdp.num_lights > 8) rdp.num_lights = 0; rdp.update |= UPDATE_LIGHTS; - FRDP("numlights: %d\n", rdp.num_lights); + WriteTrace(TraceRDP, TraceDebug, "numlights: %d", rdp.num_lights); break; case 0x04: @@ -739,11 +724,11 @@ static void uc0_moveword() rdp.clip_ratio = sqrt((float)rdp.cmd1); rdp.update |= UPDATE_VIEWPORT; } - FRDP("clip %08lx, %08lx\n", rdp.cmd0, rdp.cmd1); + WriteTrace(TraceRDP, TraceDebug, "clip %08lx, %08lx", rdp.cmd0, rdp.cmd1); break; case 0x06: // segment - FRDP("segment: %08lx -> seg%d\n", rdp.cmd1, (rdp.cmd0 >> 10) & 0x0F); + WriteTrace(TraceRDP, TraceDebug, "segment: %08lx -> seg%d", rdp.cmd1, (rdp.cmd0 >> 10) & 0x0F); if ((rdp.cmd1&BMASK) < BMASK) rdp.segment[(rdp.cmd0 >> 10) & 0x0F] = rdp.cmd1; break; @@ -752,14 +737,14 @@ static void uc0_moveword() { rdp.fog_multiplier = (short)(rdp.cmd1 >> 16); rdp.fog_offset = (short)(rdp.cmd1 & 0x0000FFFF); - FRDP("fog: multiplier: %f, offset: %f\n", rdp.fog_multiplier, rdp.fog_offset); + WriteTrace(TraceRDP, TraceDebug, "fog: multiplier: %f, offset: %f", rdp.fog_multiplier, rdp.fog_offset); } break; case 0x0a: // moveword LIGHTCOL { int n = (rdp.cmd0 & 0xE000) >> 13; - FRDP("lightcol light:%d, %08lx\n", n, rdp.cmd1); + WriteTrace(TraceRDP, TraceDebug, "lightcol light:%d, %08lx", n, rdp.cmd1); rdp.light[n].r = (float)((rdp.cmd1 >> 24) & 0xFF) / 255.0f; rdp.light[n].g = (float)((rdp.cmd1 >> 16) & 0xFF) / 255.0f; @@ -774,17 +759,16 @@ static void uc0_moveword() uint16_t vtx = val / 40; uint8_t where = val % 40; uc0_modifyvtx(where, vtx, rdp.cmd1); - FRDP("uc0:modifyvtx: vtx: %d, where: 0x%02lx, val: %08lx - ", vtx, where, rdp.cmd1); + WriteTrace(TraceRDP, TraceDebug, "uc0:modifyvtx: vtx: %d, where: 0x%02lx, val: %08lx - ", vtx, where, rdp.cmd1); } break; case 0x0e: - LRDP("perspnorm - IGNORED\n"); + WriteTrace(TraceRDP, TraceDebug, "perspnorm - IGNORED"); break; default: - FRDP_E("uc0:moveword unknown (index: 0x%08lx)\n", rdp.cmd0 & 0xFF); - FRDP("unknown (index: 0x%08lx)\n", rdp.cmd0 & 0xFF); + WriteTrace(TraceRDP, TraceWarning, "uc0:moveword unknown (index: 0x%08lx)", rdp.cmd0 & 0xFF); } } @@ -812,19 +796,19 @@ static void uc0_texture() rdp.update |= UPDATE_TEXTURE; - FRDP("uc0:texture: tile: %d, mipmap_lvl: %d, on: %d, s_scale: %f, t_scale: %f\n", + WriteTrace(TraceRDP, TraceDebug, "uc0:texture: tile: %d, mipmap_lvl: %d, on: %d, s_scale: %f, t_scale: %f", tile, rdp.mipmap_level, on, tmp_tile->s_scale, tmp_tile->t_scale); } else { - LRDP("uc0:texture skipped b/c of off\n"); + WriteTrace(TraceRDP, TraceDebug, "uc0:texture skipped b/c of off"); rdp.tiles[tile].on = 0; } } static void uc0_setothermode_h() { - LRDP("uc0:setothermode_h: "); + WriteTrace(TraceRDP, TraceDebug, "uc0:setothermode_h: "); int shift, len; if ((g_settings->ucode == ucode_F3DEX2) || (g_settings->ucode == ucode_CBFD)) @@ -851,58 +835,58 @@ static void uc0_setothermode_h() if (mask & 0x00000030) // alpha dither mode { rdp.alpha_dither_mode = (rdp.othermode_h >> 4) & 0x3; - FRDP("alpha dither mode: %s\n", str_dither[rdp.alpha_dither_mode]); + WriteTrace(TraceRDP, TraceDebug, "alpha dither mode: %s", str_dither[rdp.alpha_dither_mode]); } if (mask & 0x000000C0) // rgb dither mode { uint32_t dither_mode = (rdp.othermode_h >> 6) & 0x3; - FRDP("rgb dither mode: %s\n", str_dither[dither_mode]); + WriteTrace(TraceRDP, TraceDebug, "rgb dither mode: %s", str_dither[dither_mode]); } if (mask & 0x00003000) // filter mode { rdp.filter_mode = (int)((rdp.othermode_h & 0x00003000) >> 12); rdp.update |= UPDATE_TEXTURE; - FRDP("filter mode: %s\n", str_filter[rdp.filter_mode]); + WriteTrace(TraceRDP, TraceDebug, "filter mode: %s", str_filter[rdp.filter_mode]); } if (mask & 0x0000C000) // tlut mode { rdp.tlut_mode = (uint8_t)((rdp.othermode_h & 0x0000C000) >> 14); - FRDP("tlut mode: %s\n", str_tlut[rdp.tlut_mode]); + WriteTrace(TraceRDP, TraceDebug, "tlut mode: %s", str_tlut[rdp.tlut_mode]); } if (mask & 0x00300000) // cycle type { rdp.cycle_mode = (uint8_t)((rdp.othermode_h & 0x00300000) >> 20); rdp.update |= UPDATE_ZBUF_ENABLED; - FRDP("cycletype: %d\n", rdp.cycle_mode); + WriteTrace(TraceRDP, TraceDebug, "cycletype: %d", rdp.cycle_mode); } if (mask & 0x00010000) // LOD enable { rdp.LOD_en = (rdp.othermode_h & 0x00010000) ? TRUE : FALSE; - FRDP("LOD_en: %d\n", rdp.LOD_en); + WriteTrace(TraceRDP, TraceDebug, "LOD_en: %d", rdp.LOD_en); } if (mask & 0x00080000) // Persp enable { if (rdp.persp_supported) rdp.Persp_en = (rdp.othermode_h & 0x00080000) ? TRUE : FALSE; - FRDP("Persp_en: %d\n", rdp.Persp_en); + WriteTrace(TraceRDP, TraceDebug, "Persp_en: %d", rdp.Persp_en); } uint32_t unk = mask & 0x0FFC60F0F; if (unk) // unknown portions, LARGE { - FRDP("UNKNOWN PORTIONS: shift: %d, len: %d, unknowns: %08lx\n", shift, len, unk); + WriteTrace(TraceRDP, TraceDebug, "UNKNOWN PORTIONS: shift: %d, len: %d, unknowns: %08lx", shift, len, unk); } } static void uc0_setothermode_l() { - LRDP("uc0:setothermode_l "); + WriteTrace(TraceRDP, TraceDebug, "uc0:setothermode_l "); int shift, len; if ((g_settings->ucode == ucode_F3DEX2) || (g_settings->ucode == ucode_CBFD)) @@ -930,15 +914,15 @@ static void uc0_setothermode_l() if (mask & 0x00000003) // alpha compare { rdp.acmp = rdp.othermode_l & 0x00000003; - FRDP("alpha compare %s\n", ACmp[rdp.acmp]); + WriteTrace(TraceRDP, TraceDebug, "alpha compare %s", ACmp[rdp.acmp]); rdp.update |= UPDATE_ALPHA_COMPARE; } if (mask & 0x00000004) // z-src selection { rdp.zsrc = (rdp.othermode_l & 0x00000004) >> 2; - FRDP("z-src sel: %s\n", str_zs[rdp.zsrc]); - FRDP("z-src sel: %08lx\n", rdp.zsrc); + WriteTrace(TraceRDP, TraceDebug, "z-src sel: %s", str_zs[rdp.zsrc]); + WriteTrace(TraceRDP, TraceDebug, "z-src sel: %08lx", rdp.zsrc); rdp.update |= UPDATE_ZBUF_ENABLED; } @@ -949,7 +933,7 @@ static void uc0_setothermode_l() rdp.rm = rdp.othermode_l; if (g_settings->flame_corona && (rdp.rm == 0x00504341)) //hack for flame's corona rdp.othermode_l |= /*0x00000020 |*/ 0x00000010; - FRDP("rendermode: %08lx\n", rdp.othermode_l); // just output whole othermode_l + WriteTrace(TraceRDP, TraceDebug, "rendermode: %08lx", rdp.othermode_l); // just output whole othermode_l } // there is not one setothermode_l that's not handled :) @@ -958,7 +942,7 @@ static void uc0_setothermode_l() static void uc0_setgeometrymode() { rdp.geom_mode |= rdp.cmd1; - FRDP("uc0:setgeometrymode %08lx; result: %08lx\n", rdp.cmd1, rdp.geom_mode); + WriteTrace(TraceRDP, TraceDebug, "uc0:setgeometrymode %08lx; result: %08lx", rdp.cmd1, rdp.geom_mode); if (rdp.cmd1 & 0x00000001) // Z-Buffer enable { @@ -998,7 +982,7 @@ static void uc0_setgeometrymode() static void uc0_cleargeometrymode() { - FRDP("uc0:cleargeometrymode %08lx\n", rdp.cmd1); + WriteTrace(TraceRDP, TraceDebug, "uc0:cleargeometrymode %08lx", rdp.cmd1); rdp.geom_mode &= (~rdp.cmd1); @@ -1057,7 +1041,7 @@ static void uc0_line3d() rdp.flags |= cull_mode << CULLSHIFT; rdp.update |= UPDATE_CULL_MODE; - FRDP("uc0:line3d v0:%d, v1:%d, width:%d\n", v0, v1, width); + WriteTrace(TraceRDP, TraceDebug, "uc0:line3d v0:%d, v1:%d, width:%d", v0, v1, width); } static void uc0_tri4() @@ -1065,8 +1049,8 @@ static void uc0_tri4() // c0: 0000 0123, c1: 456789ab // becomes: 405 617 829 a3b - LRDP("uc0:tri4"); - FRDP(" #%d, #%d, #%d, #%d - %d, %d, %d - %d, %d, %d - %d, %d, %d - %d, %d, %d\n", rdp.tri_n, rdp.tri_n + 1, rdp.tri_n + 2, rdp.tri_n + 3, + WriteTrace(TraceRDP, TraceDebug, "uc0:tri4"); + WriteTrace(TraceRDP, TraceDebug, " #%d, #%d, #%d, #%d - %d, %d, %d - %d, %d, %d - %d, %d, %d - %d, %d, %d", rdp.tri_n, rdp.tri_n + 1, rdp.tri_n + 2, rdp.tri_n + 3, (rdp.cmd1 >> 28) & 0xF, (rdp.cmd0 >> 12) & 0xF, (rdp.cmd1 >> 24) & 0xF, diff --git a/Source/Glide64/ucode01.h b/Source/Glide64/ucode01.h index e848367bc..80d72eeeb 100644 --- a/Source/Glide64/ucode01.h +++ b/Source/Glide64/ucode01.h @@ -56,10 +56,10 @@ static void uc1_tri1() { if (rdp.skip_drawing) { - LRDP("uc1:tri1. skipped\n"); + WriteTrace(TraceRDP, TraceDebug, "uc1:tri1. skipped"); return; } - FRDP("uc1:tri1 #%d - %d, %d, %d - %08lx - %08lx\n", rdp.tri_n, + WriteTrace(TraceRDP, TraceDebug, "uc1:tri1 #%d - %d, %d, %d - %08lx - %08lx", rdp.tri_n, ((rdp.cmd1 >> 17) & 0x7F), ((rdp.cmd1 >> 9) & 0x7F), ((rdp.cmd1 >> 1) & 0x7F), rdp.cmd0, rdp.cmd1); @@ -77,12 +77,12 @@ static void uc1_tri2() { if (rdp.skip_drawing) { - LRDP("uc1:tri2. skipped\n"); + WriteTrace(TraceRDP, TraceDebug, "uc1:tri2. skipped"); return; } - LRDP("uc1:tri2"); + WriteTrace(TraceRDP, TraceDebug, "uc1:tri2"); - FRDP(" #%d, #%d - %d, %d, %d - %d, %d, %d\n", rdp.tri_n, rdp.tri_n + 1, + WriteTrace(TraceRDP, TraceDebug, " #%d, #%d - %d, %d, %d - %d, %d, %d", rdp.tri_n, rdp.tri_n + 1, ((rdp.cmd0 >> 17) & 0x7F), ((rdp.cmd0 >> 9) & 0x7F), ((rdp.cmd0 >> 1) & 0x7F), @@ -108,7 +108,7 @@ static void uc1_line3d() { uint16_t width = (uint16_t)(rdp.cmd1 & 0xFF) + 3; - FRDP("uc1:line3d width: %d #%d, #%d - %d, %d\n", width, rdp.tri_n, rdp.tri_n + 1, + WriteTrace(TraceRDP, TraceDebug, "uc1:line3d width: %d #%d, #%d - %d, %d", width, rdp.tri_n, rdp.tri_n + 1, (rdp.cmd1 >> 17) & 0x7F, (rdp.cmd1 >> 9) & 0x7F); @@ -127,7 +127,7 @@ static void uc1_line3d() } else { - FRDP("uc1:quad3d #%d, #%d\n", rdp.tri_n, rdp.tri_n + 1); + WriteTrace(TraceRDP, TraceDebug, "uc1:quad3d #%d, #%d", rdp.tri_n, rdp.tri_n + 1); VERTEX *v[6] = { &rdp.vtx[(rdp.cmd1 >> 25) & 0x7F], @@ -146,7 +146,7 @@ uint32_t branch_dl = 0; static void uc1_rdphalf_1() { - LRDP("uc1:rdphalf_1\n"); + WriteTrace(TraceRDP, TraceDebug, "uc1:rdphalf_1"); branch_dl = rdp.cmd1; rdphalf_1(); } @@ -154,7 +154,7 @@ static void uc1_rdphalf_1() static void uc1_branch_z() { uint32_t addr = segoffset(branch_dl); - FRDP("uc1:branch_less_z, addr: %08lx\n", addr); + WriteTrace(TraceRDP, TraceDebug, "uc1:branch_less_z, addr: %08lx", addr); uint32_t vtx = (rdp.cmd0 & 0xFFF) >> 1; if (fabs(rdp.vtx[vtx].z) <= (rdp.cmd1/*&0xFFFF*/)) { diff --git a/Source/Glide64/ucode02.h b/Source/Glide64/ucode02.h index 689df6dde..bf099dba8 100644 --- a/Source/Glide64/ucode02.h +++ b/Source/Glide64/ucode02.h @@ -51,9 +51,7 @@ static void calc_point_light(VERTEX *v, float * vpos) lvec[2] -= vpos[2]; float light_len2 = lvec[0] * lvec[0] + lvec[1] * lvec[1] + lvec[2] * lvec[2]; float light_len = sqrtf(light_len2); -#ifdef EXTREME_LOGGING - FRDP ("calc_point_light: len: %f, len2: %f\n", light_len, light_len2); -#endif + WriteTrace(TraceRDP, TraceVerbose, "calc_point_light: len: %f, len2: %f", light_len, light_len2); float at = rdp.light[l].ca + light_len / 65535.0f*rdp.light[l].la + light_len2 / 65535.0f*rdp.light[l].qa; if (at > 0.0f) light_intensity = 1 / at;//DotProduct (lvec, nvec) / (light_len * normal_len * at); @@ -116,12 +114,11 @@ static void uc2_vertex() rdp.vn = n = (rdp.cmd0 >> 12) & 0xFF; rdp.v0 = v0 = ((rdp.cmd0 >> 1) & 0x7F) - n; - FRDP("uc2:vertex n: %d, v0: %d, from: %08lx\n", n, v0, addr); + WriteTrace(TraceRDP, TraceDebug, "uc2:vertex n: %d, v0: %d, from: %08lx", n, v0, addr); if (v0 < 0) { - RDP_E("** ERROR: uc2:vertex v0 < 0\n"); - LRDP("** ERROR: uc2:vertex v0 < 0\n"); + WriteTrace(TraceRDP, TraceWarning, "** ERROR: uc2:vertex v0 < 0"); return; } @@ -172,7 +169,7 @@ static void uc2_vertex() v->vec[0] = ((char*)gfx.RDRAM)[(addr + i + 12) ^ 3]; v->vec[1] = ((char*)gfx.RDRAM)[(addr + i + 13) ^ 3]; v->vec[2] = ((char*)gfx.RDRAM)[(addr + i + 14) ^ 3]; - // FRDP("Calc light. x: %f, y: %f z: %f\n", v->vec[0], v->vec[1], v->vec[2]); + // WriteTrace(TraceRDP, TraceDebug, "Calc light. x: %f, y: %f z: %f", v->vec[0], v->vec[1], v->vec[2]); // if (!(rdp.geom_mode & 0x800000)) { if (rdp.geom_mode & 0x40000) @@ -180,16 +177,12 @@ static void uc2_vertex() if (rdp.geom_mode & 0x80000) { calc_linear(v); -#ifdef EXTREME_LOGGING - FRDP ("calc linear: v%d - u: %f, v: %f\n", i>>4, v->ou, v->ov); -#endif + WriteTrace(TraceRDP, TraceVerbose, "calc linear: v%d - u: %f, v: %f", i >> 4, v->ou, v->ov); } else { calc_sphere(v); -#ifdef EXTREME_LOGGING - FRDP ("calc sphere: v%d - u: %f, v: %f\n", i>>4, v->ou, v->ov); -#endif + WriteTrace(TraceRDP, TraceVerbose, "calc sphere: v%d - u: %f, v: %f", i >> 4, v->ou, v->ov); } } } @@ -210,9 +203,7 @@ static void uc2_vertex() v->g = ((uint8_t*)gfx.RDRAM)[(addr + i + 13) ^ 3]; v->b = ((uint8_t*)gfx.RDRAM)[(addr + i + 14) ^ 3]; } -#ifdef EXTREME_LOGGING - FRDP ("v%d - x: %f, y: %f, z: %f, w: %f, u: %f, v: %f, f: %f, z_w: %f, r=%d, g=%d, b=%d, a=%d\n", i>>4, v->x, v->y, v->z, v->w, v->ou*rdp.tiles[rdp.cur_tile].s_scale, v->ov*rdp.tiles[rdp.cur_tile].t_scale, v->f, v->z_w, v->r, v->g, v->b, v->a); -#endif + WriteTrace(TraceRDP, TraceVerbose, "v%d - x: %f, y: %f, z: %f, w: %f, u: %f, v: %f, f: %f, z_w: %f, r=%d, g=%d, b=%d, a=%d", i >> 4, v->x, v->y, v->z, v->w, v->ou*rdp.tiles[rdp.cur_tile].s_scale, v->ov*rdp.tiles[rdp.cur_tile].t_scale, v->f, v->z_w, v->r, v->g, v->b, v->a); } rdp.geom_mode = geom_mode; } @@ -222,7 +213,7 @@ static void uc2_modifyvtx() uint8_t where = (uint8_t)((rdp.cmd0 >> 16) & 0xFF); uint16_t vtx = (uint16_t)((rdp.cmd0 >> 1) & 0xFFFF); - FRDP("uc2:modifyvtx: vtx: %d, where: 0x%02lx, val: %08lx - ", vtx, where, rdp.cmd1); + WriteTrace(TraceRDP, TraceDebug, "uc2:modifyvtx: vtx: %d, where: 0x%02lx, val: %08lx - ", vtx, where, rdp.cmd1); uc0_modifyvtx(where, vtx, rdp.cmd1); } @@ -231,7 +222,7 @@ static void uc2_culldl() uint16_t vStart = (uint16_t)(rdp.cmd0 & 0xFFFF) >> 1; uint16_t vEnd = (uint16_t)(rdp.cmd1 & 0xFFFF) >> 1; uint32_t cond = 0; - FRDP("uc2:culldl start: %d, end: %d\n", vStart, vEnd); + WriteTrace(TraceRDP, TraceDebug, "uc2:culldl start: %d, end: %d", vStart, vEnd); if (vEnd < vStart) return; for (uint16_t i = vStart; i <= vEnd; i++) @@ -254,16 +245,14 @@ static void uc2_culldl() return; //*/ -#ifdef EXTREME_LOGGING - FRDP (" v[%d] = (%02f, %02f, %02f, 0x%02lx)\n", i, rdp.vtx[i].x, rdp.vtx[i].y, rdp.vtx[i].w, rdp.vtx[i].scr_off); -#endif + WriteTrace(TraceRDP, TraceVerbose, " v[%d] = (%02f, %02f, %02f, 0x%02lx)", i, rdp.vtx[i].x, rdp.vtx[i].y, rdp.vtx[i].w, rdp.vtx[i].scr_off); cond |= (~rdp.vtx[i].scr_off) & 0x1F; if (cond == 0x1F) return; } - LRDP(" - "); // specify that the enddl is not a real command + WriteTrace(TraceRDP, TraceDebug, " - "); // specify that the enddl is not a real command uc0_enddl(); } @@ -278,11 +267,11 @@ static void uc2_tri1() } if (rdp.skip_drawing) { - LRDP("uc2:tri1. skipped\n"); + WriteTrace(TraceRDP, TraceDebug, "uc2:tri1. skipped"); return; } - FRDP("uc2:tri1 #%d - %d, %d, %d\n", rdp.tri_n, + WriteTrace(TraceRDP, TraceDebug, "uc2:tri1 #%d - %d, %d, %d", rdp.tri_n, ((rdp.cmd0 >> 17) & 0x7F), ((rdp.cmd0 >> 9) & 0x7F), ((rdp.cmd0 >> 1) & 0x7F)); @@ -318,13 +307,13 @@ static void uc2_quad() if (rdp.skip_drawing) { - LRDP("uc2_quad. skipped\n"); + WriteTrace(TraceRDP, TraceDebug, "uc2_quad. skipped"); return; } - LRDP("uc2:quad"); + WriteTrace(TraceRDP, TraceDebug, "uc2:quad"); - FRDP(" #%d, #%d - %d, %d, %d - %d, %d, %d\n", rdp.tri_n, rdp.tri_n + 1, + WriteTrace(TraceRDP, TraceDebug, " #%d, #%d - %d, %d, %d - %d, %d, %d", rdp.tri_n, rdp.tri_n + 1, ((rdp.cmd0 >> 17) & 0x7F), ((rdp.cmd0 >> 9) & 0x7F), ((rdp.cmd0 >> 1) & 0x7F), @@ -352,7 +341,7 @@ static void uc2_line3d() uc6_ldtx_rect_r(); else { - FRDP("uc2:line3d #%d, #%d - %d, %d\n", rdp.tri_n, rdp.tri_n + 1, + WriteTrace(TraceRDP, TraceDebug, "uc2:line3d #%d, #%d - %d, %d", rdp.tri_n, rdp.tri_n + 1, (rdp.cmd0 >> 17) & 0x7F, (rdp.cmd0 >> 9) & 0x7F); @@ -374,22 +363,22 @@ static void uc2_line3d() static void uc2_special3() { - LRDP("uc2:special3\n"); + WriteTrace(TraceRDP, TraceDebug, "uc2:special3"); } static void uc2_special2() { - LRDP("uc2:special2\n"); + WriteTrace(TraceRDP, TraceDebug, "uc2:special2"); } static void uc2_dma_io() { - LRDP("uc2:dma_io\n"); + WriteTrace(TraceRDP, TraceDebug, "uc2:dma_io"); } static void uc2_pop_matrix() { - FRDP("uc2:pop_matrix %08lx, %08lx\n", rdp.cmd0, rdp.cmd1); + WriteTrace(TraceRDP, TraceDebug, "uc2:pop_matrix %08lx, %08lx", rdp.cmd0, rdp.cmd1); // Just pop the modelview matrix modelview_pop(rdp.cmd1 >> 6); @@ -405,12 +394,12 @@ static void uc2_geom_mode() ((rdp.cmd1 & 0x00000600) << 3) | ((rdp.cmd1 & 0x00200000) >> 12); - FRDP("uc2:geom_mode c:%08lx, s:%08lx ", clr_mode, set_mode); + WriteTrace(TraceRDP, TraceDebug, "uc2:geom_mode c:%08lx, s:%08lx ", clr_mode, set_mode); rdp.geom_mode &= clr_mode; rdp.geom_mode |= set_mode; - FRDP("result:%08lx\n", rdp.geom_mode); + WriteTrace(TraceRDP, TraceDebug, "result:%08lx", rdp.geom_mode); if (rdp.geom_mode & 0x00000001) // Z-Buffer enable { @@ -490,7 +479,7 @@ static void uc2_matrix() uc6_obj_rectangle_r(); return; } - LRDP("uc2:matrix\n"); + WriteTrace(TraceRDP, TraceDebug, "uc2:matrix"); DECLAREALIGN16VAR(m[4][4]); load_matrix(m, segoffset(rdp.cmd1)); @@ -499,56 +488,53 @@ static void uc2_matrix() switch (command) { case 0: // modelview mul nopush - LRDP("modelview mul\n"); + WriteTrace(TraceRDP, TraceDebug, "modelview mul"); modelview_mul(m); break; case 1: // modelview mul push - LRDP("modelview mul push\n"); + WriteTrace(TraceRDP, TraceDebug, "modelview mul push"); modelview_mul_push(m); break; case 2: // modelview load nopush - LRDP("modelview load\n"); + WriteTrace(TraceRDP, TraceDebug, "modelview load"); modelview_load(m); break; case 3: // modelview load push - LRDP("modelview load push\n"); + WriteTrace(TraceRDP, TraceDebug, "modelview load push"); modelview_load_push(m); break; case 4: // projection mul nopush case 5: // projection mul push, can't push projection - LRDP("projection mul\n"); + WriteTrace(TraceRDP, TraceDebug, "projection mul"); projection_mul(m); break; case 6: // projection load nopush case 7: // projection load push, can't push projection - LRDP("projection load\n"); + WriteTrace(TraceRDP, TraceDebug, "projection load"); projection_load(m); break; default: - FRDP_E("Unknown matrix command, %02lx", command); - FRDP("Unknown matrix command, %02lx", command); + WriteTrace(TraceRDP, TraceWarning, "Unknown matrix command, %02lx", command); } -#ifdef EXTREME_LOGGING - FRDP ("{%f,%f,%f,%f}\n", m[0][0], m[0][1], m[0][2], m[0][3]); - FRDP ("{%f,%f,%f,%f}\n", m[1][0], m[1][1], m[1][2], m[1][3]); - FRDP ("{%f,%f,%f,%f}\n", m[2][0], m[2][1], m[2][2], m[2][3]); - FRDP ("{%f,%f,%f,%f}\n", m[3][0], m[3][1], m[3][2], m[3][3]); - FRDP ("\nmodel\n{%f,%f,%f,%f}\n", rdp.model[0][0], rdp.model[0][1], rdp.model[0][2], rdp.model[0][3]); - FRDP ("{%f,%f,%f,%f}\n", rdp.model[1][0], rdp.model[1][1], rdp.model[1][2], rdp.model[1][3]); - FRDP ("{%f,%f,%f,%f}\n", rdp.model[2][0], rdp.model[2][1], rdp.model[2][2], rdp.model[2][3]); - FRDP ("{%f,%f,%f,%f}\n", rdp.model[3][0], rdp.model[3][1], rdp.model[3][2], rdp.model[3][3]); - FRDP ("\nproj\n{%f,%f,%f,%f}\n", rdp.proj[0][0], rdp.proj[0][1], rdp.proj[0][2], rdp.proj[0][3]); - FRDP ("{%f,%f,%f,%f}\n", rdp.proj[1][0], rdp.proj[1][1], rdp.proj[1][2], rdp.proj[1][3]); - FRDP ("{%f,%f,%f,%f}\n", rdp.proj[2][0], rdp.proj[2][1], rdp.proj[2][2], rdp.proj[2][3]); - FRDP ("{%f,%f,%f,%f}\n", rdp.proj[3][0], rdp.proj[3][1], rdp.proj[3][2], rdp.proj[3][3]); -#endif + WriteTrace(TraceRDP, TraceVerbose, "{%f,%f,%f,%f}", m[0][0], m[0][1], m[0][2], m[0][3]); + WriteTrace(TraceRDP, TraceVerbose, "{%f,%f,%f,%f}", m[1][0], m[1][1], m[1][2], m[1][3]); + WriteTrace(TraceRDP, TraceVerbose, "{%f,%f,%f,%f}", m[2][0], m[2][1], m[2][2], m[2][3]); + WriteTrace(TraceRDP, TraceVerbose, "{%f,%f,%f,%f}", m[3][0], m[3][1], m[3][2], m[3][3]); + WriteTrace(TraceRDP, TraceVerbose, "\nmodel\n{%f,%f,%f,%f}", rdp.model[0][0], rdp.model[0][1], rdp.model[0][2], rdp.model[0][3]); + WriteTrace(TraceRDP, TraceVerbose, "{%f,%f,%f,%f}", rdp.model[1][0], rdp.model[1][1], rdp.model[1][2], rdp.model[1][3]); + WriteTrace(TraceRDP, TraceVerbose, "{%f,%f,%f,%f}", rdp.model[2][0], rdp.model[2][1], rdp.model[2][2], rdp.model[2][3]); + WriteTrace(TraceRDP, TraceVerbose, "{%f,%f,%f,%f}", rdp.model[3][0], rdp.model[3][1], rdp.model[3][2], rdp.model[3][3]); + WriteTrace(TraceRDP, TraceVerbose, "\nproj\n{%f,%f,%f,%f}", rdp.proj[0][0], rdp.proj[0][1], rdp.proj[0][2], rdp.proj[0][3]); + WriteTrace(TraceRDP, TraceVerbose, "{%f,%f,%f,%f}", rdp.proj[1][0], rdp.proj[1][1], rdp.proj[1][2], rdp.proj[1][3]); + WriteTrace(TraceRDP, TraceVerbose, "{%f,%f,%f,%f}", rdp.proj[2][0], rdp.proj[2][1], rdp.proj[2][2], rdp.proj[2][3]); + WriteTrace(TraceRDP, TraceVerbose, "{%f,%f,%f,%f}", rdp.proj[3][0], rdp.proj[3][1], rdp.proj[3][2], rdp.proj[3][3]); } static void uc2_moveword() @@ -557,7 +543,7 @@ static void uc2_moveword() uint16_t offset = (uint16_t)(rdp.cmd0 & 0xFFFF); uint32_t data = rdp.cmd1; - FRDP("uc2:moveword "); + WriteTrace(TraceRDP, TraceDebug, "uc2:moveword "); switch (index) { @@ -597,14 +583,14 @@ static void uc2_moveword() rdp.combined[index_y][index_x + 1] = (short)(rdp.cmd1 & 0xFFFF); } - LRDP("matrix\n"); + WriteTrace(TraceRDP, TraceDebug, "matrix"); } break; case 0x02: rdp.num_lights = data / 24; rdp.update |= UPDATE_LIGHTS; - FRDP("numlights: %d\n", rdp.num_lights); + WriteTrace(TraceRDP, TraceDebug, "numlights: %d", rdp.num_lights); break; case 0x04: @@ -613,12 +599,12 @@ static void uc2_moveword() rdp.clip_ratio = sqrt((float)rdp.cmd1); rdp.update |= UPDATE_VIEWPORT; } - FRDP("mw_clip %08lx, %08lx\n", rdp.cmd0, rdp.cmd1); + WriteTrace(TraceRDP, TraceDebug, "mw_clip %08lx, %08lx", rdp.cmd0, rdp.cmd1); break; case 0x06: // moveword SEGMENT { - FRDP("SEGMENT %08lx -> seg%d\n", data, offset >> 2); + WriteTrace(TraceRDP, TraceDebug, "SEGMENT %08lx -> seg%d", data, offset >> 2); if ((data&BMASK) < BMASK) rdp.segment[(offset >> 2) & 0xF] = data; } @@ -628,7 +614,7 @@ static void uc2_moveword() { rdp.fog_multiplier = (short)(rdp.cmd1 >> 16); rdp.fog_offset = (short)(rdp.cmd1 & 0x0000FFFF); - FRDP("fog: multiplier: %f, offset: %f\n", rdp.fog_multiplier, rdp.fog_offset); + WriteTrace(TraceRDP, TraceDebug, "fog: multiplier: %f, offset: %f", rdp.fog_multiplier, rdp.fog_offset); //offset must be 0 for move_fog, but it can be non zero in Nushi Zuri 64 - Shiokaze ni Notte //low-level display list has setothermode commands in this place, so this is obviously not move_fog. @@ -640,7 +626,7 @@ static void uc2_moveword() case 0x0a: // moveword LIGHTCOL { int n = offset / 24; - FRDP("lightcol light:%d, %08lx\n", n, data); + WriteTrace(TraceRDP, TraceDebug, "lightcol light:%d, %08lx", n, data); rdp.light[n].r = (float)((data >> 24) & 0xFF) / 255.0f; rdp.light[n].g = (float)((data >> 16) & 0xFF) / 255.0f; @@ -650,17 +636,15 @@ static void uc2_moveword() break; case 0x0c: - RDP_E("uc2:moveword forcemtx - IGNORED\n"); - LRDP("forcemtx - IGNORED\n"); + WriteTrace(TraceRDP, TraceWarning, "uc2:moveword forcemtx - IGNORED"); break; case 0x0e: - LRDP("perspnorm - IGNORED\n"); + WriteTrace(TraceRDP, TraceDebug, "perspnorm - IGNORED"); break; default: - FRDP_E("uc2:moveword unknown (index: 0x%08lx, offset 0x%08lx)\n", index, offset); - FRDP("unknown (index: 0x%08lx, offset 0x%08lx)\n", index, offset); + WriteTrace(TraceRDP, TraceWarning, "uc2:moveword unknown (index: 0x%08lx, offset 0x%08lx)", index, offset); } } @@ -672,7 +656,7 @@ static void uc2_movemem() uint32_t addr = segoffset(rdp.cmd1); int ofs = (rdp.cmd0 >> 5) & 0x7F8; - FRDP("uc2:movemem ofs:%d ", ofs); + WriteTrace(TraceRDP, TraceDebug, "uc2:movemem ofs:%d ", ofs); switch (idx) { @@ -699,7 +683,7 @@ static void uc2_movemem() rdp.update |= UPDATE_VIEWPORT; - FRDP("viewport scale(%d, %d, %d), trans(%d, %d, %d), from:%08lx\n", scale_x, scale_y, scale_z, + WriteTrace(TraceRDP, TraceDebug, "viewport scale(%d, %d, %d), trans(%d, %d, %d), from:%08lx", scale_x, scale_y, scale_z, trans_x, trans_y, trans_z, a); } break; @@ -722,7 +706,7 @@ static void uc2_movemem() if (!dir_x && !dir_y) rdp.use_lookat = FALSE; } - FRDP("lookat_%d (%f, %f, %f)\n", n, rdp.lookat[n][0], rdp.lookat[n][1], rdp.lookat[n][2]); + WriteTrace(TraceRDP, TraceDebug, "lookat_%d (%f, %f, %f)", n, rdp.lookat[n][0], rdp.lookat[n][1], rdp.lookat[n][2]); return; } n -= 2; @@ -751,11 +735,9 @@ static void uc2_movemem() rdp.light[n].ca = (float)(gfx.RDRAM[(addr + 3) ^ 3]) / 16.0f; rdp.light[n].la = (float)(gfx.RDRAM[(addr + 7) ^ 3]); rdp.light[n].qa = (float)(gfx.RDRAM[(addr + 14) ^ 3]) / 8.0f; -#ifdef EXTREME_LOGGING - FRDP ("light: n: %d, pos: x: %f, y: %f, z: %f, ca: %f, la:%f, qa: %f\n", + WriteTrace(TraceRDP, TraceVerbose, "light: n: %d, pos: x: %f, y: %f, z: %f, ca: %f, la:%f, qa: %f", n, rdp.light[n].x, rdp.light[n].y, rdp.light[n].z, rdp.light[n].ca, rdp.light[n].la, rdp.light[n].qa); -#endif - FRDP("light: n: %d, r: %.3f, g: %.3f, b: %.3f. dir: x: %.3f, y: %.3f, z: %.3f\n", + WriteTrace(TraceRDP, TraceDebug, "light: n: %d, r: %.3f, g: %.3f, b: %.3f. dir: x: %.3f, y: %.3f, z: %.3f", n, rdp.light[n].r, rdp.light[n].g, rdp.light[n].b, rdp.light[n].dir_x, rdp.light[n].dir_y, rdp.light[n].dir_z); } @@ -767,42 +749,40 @@ static void uc2_movemem() rdp.update &= ~UPDATE_MULT_MAT; load_matrix(rdp.combined, segoffset(rdp.cmd1)); -#ifdef EXTREME_LOGGING - FRDP ("{%f,%f,%f,%f}\n", rdp.combined[0][0], rdp.combined[0][1], rdp.combined[0][2], rdp.combined[0][3]); - FRDP ("{%f,%f,%f,%f}\n", rdp.combined[1][0], rdp.combined[1][1], rdp.combined[1][2], rdp.combined[1][3]); - FRDP ("{%f,%f,%f,%f}\n", rdp.combined[2][0], rdp.combined[2][1], rdp.combined[2][2], rdp.combined[2][3]); - FRDP ("{%f,%f,%f,%f}\n", rdp.combined[3][0], rdp.combined[3][1], rdp.combined[3][2], rdp.combined[3][3]); -#endif + WriteTrace(TraceRDP, TraceVerbose, "{%f,%f,%f,%f}", rdp.combined[0][0], rdp.combined[0][1], rdp.combined[0][2], rdp.combined[0][3]); + WriteTrace(TraceRDP, TraceVerbose, "{%f,%f,%f,%f}", rdp.combined[1][0], rdp.combined[1][1], rdp.combined[1][2], rdp.combined[1][3]); + WriteTrace(TraceRDP, TraceVerbose, "{%f,%f,%f,%f}", rdp.combined[2][0], rdp.combined[2][1], rdp.combined[2][2], rdp.combined[2][3]); + WriteTrace(TraceRDP, TraceVerbose, "{%f,%f,%f,%f}", rdp.combined[3][0], rdp.combined[3][1], rdp.combined[3][2], rdp.combined[3][3]); } break; default: - FRDP("uc2:matrix unknown (%d)\n", idx); - FRDP("** UNKNOWN %d\n", idx); + WriteTrace(TraceRDP, TraceDebug, "uc2:matrix unknown (%d)", idx); + WriteTrace(TraceRDP, TraceDebug, "** UNKNOWN %d", idx); } } static void uc2_load_ucode() { - LRDP("uc2:load_ucode\n"); + WriteTrace(TraceRDP, TraceDebug, "uc2:load_ucode"); } static void uc2_rdphalf_2() { - LRDP("uc2:rdphalf_2\n"); + WriteTrace(TraceRDP, TraceDebug, "uc2:rdphalf_2"); } static void uc2_dlist_cnt() { uint32_t addr = segoffset(rdp.cmd1) & BMASK; int count = rdp.cmd0 & 0x000000FF; - FRDP("dl_count - addr: %08lx, count: %d\n", addr, count); + WriteTrace(TraceRDP, TraceDebug, "dl_count - addr: %08lx, count: %d", addr, count); if (addr == 0) return; - if (rdp.pc_i >= 9) { - RDP_E("** DL stack overflow **\n"); - LRDP("** DL stack overflow **\n"); + if (rdp.pc_i >= 9) + { + WriteTrace(TraceRDP, TraceWarning, "** DL stack overflow **"); return; } rdp.pc_i++; // go to the next PC in the stack diff --git a/Source/Glide64/ucode03.h b/Source/Glide64/ucode03.h index 92c8ebcd3..995fd2582 100644 --- a/Source/Glide64/ucode03.h +++ b/Source/Glide64/ucode03.h @@ -61,7 +61,7 @@ static void uc3_vertex() static void uc3_tri1() { - FRDP("uc3:tri1 #%d - %d, %d, %d - %08lx - %08lx\n", rdp.tri_n, + WriteTrace(TraceRDP, TraceDebug, "uc3:tri1 #%d - %d, %d, %d - %08lx - %08lx", rdp.tri_n, ((rdp.cmd1 >> 16) & 0xFF) / 5, ((rdp.cmd1 >> 8) & 0xFF) / 5, ((rdp.cmd1) & 0xFF) / 5, rdp.cmd0, rdp.cmd1); @@ -77,7 +77,7 @@ static void uc3_tri1() static void uc3_tri2() { - FRDP("uc3:tri2 #%d, #%d - %d, %d, %d - %d, %d, %d\n", rdp.tri_n, rdp.tri_n + 1, + WriteTrace(TraceRDP, TraceDebug, "uc3:tri2 #%d, #%d - %d, %d, %d - %d, %d, %d", rdp.tri_n, rdp.tri_n + 1, ((rdp.cmd0 >> 16) & 0xFF) / 5, ((rdp.cmd0 >> 8) & 0xFF) / 5, ((rdp.cmd0) & 0xFF) / 5, @@ -99,7 +99,7 @@ static void uc3_tri2() static void uc3_quad3d() { - FRDP("uc3:quad3d #%d, #%d\n", rdp.tri_n, rdp.tri_n + 1); + WriteTrace(TraceRDP, TraceDebug, "uc3:quad3d #%d, #%d", rdp.tri_n, rdp.tri_n + 1); VERTEX *v[6] = { &rdp.vtx[((rdp.cmd1 >> 24) & 0xFF) / 5], diff --git a/Source/Glide64/ucode04.h b/Source/Glide64/ucode04.h index 36398e232..effc05f3d 100644 --- a/Source/Glide64/ucode04.h +++ b/Source/Glide64/ucode04.h @@ -53,7 +53,7 @@ static void uc4_tri1() int v1 = ((rdp.cmd1 >> 16) & 0xFF) / 5; int v2 = ((rdp.cmd1 >> 8) & 0xFF) / 5; int v3 = (rdp.cmd1 & 0xFF) / 5; - FRDP("uc4:tri1 #%d - %d, %d, %d\n", rdp.tri_n, + WriteTrace(TraceRDP, TraceDebug, "uc4:tri1 #%d - %d, %d, %d", rdp.tri_n, v1, v2, v3); VERTEX *v[3] = { @@ -67,7 +67,7 @@ static void uc4_tri1() static void uc4_quad3d() { - FRDP("uc4:quad3d #%d, #%d\n", rdp.tri_n, rdp.tri_n + 1); + WriteTrace(TraceRDP, TraceDebug, "uc4:quad3d #%d, #%d", rdp.tri_n, rdp.tri_n + 1); VERTEX *v[6] = { &rdp.vtx[((rdp.cmd1 >> 24) & 0xFF) / 5], diff --git a/Source/Glide64/ucode05.h b/Source/Glide64/ucode05.h index e08c98270..f9852c8d9 100644 --- a/Source/Glide64/ucode05.h +++ b/Source/Glide64/ucode05.h @@ -48,7 +48,7 @@ static void uc5_dma_offsets() dma_offset_mtx = rdp.cmd0 & 0x00FFFFFF; dma_offset_vtx = rdp.cmd1 & 0x00FFFFFF; vtx_last = 0; - FRDP("uc5:dma_offsets - mtx: %08lx, vtx: %08lx\n", dma_offset_mtx, dma_offset_vtx); + WriteTrace(TraceRDP, TraceDebug, "uc5:dma_offsets - mtx: %08lx, vtx: %08lx", dma_offset_mtx, dma_offset_vtx); } static void uc5_matrix() @@ -71,7 +71,7 @@ static void uc5_matrix() cur_mtx = n; - FRDP("uc5:matrix - #%d, addr: %08lx\n", n, addr); + WriteTrace(TraceRDP, TraceDebug, "uc5:matrix - #%d, addr: %08lx", n, addr); if (multiply) { @@ -87,21 +87,19 @@ static void uc5_matrix() } rdp.update |= UPDATE_MULT_MAT; -#ifdef EXTREME_LOGGING - FRDP ("{%f,%f,%f,%f}\n", rdp.dkrproj[n][0][0], rdp.dkrproj[n][0][1], rdp.dkrproj[n][0][2], rdp.dkrproj[n][0][3]); - FRDP ("{%f,%f,%f,%f}\n", rdp.dkrproj[n][1][0], rdp.dkrproj[n][1][1], rdp.dkrproj[n][1][2], rdp.dkrproj[n][1][3]); - FRDP ("{%f,%f,%f,%f}\n", rdp.dkrproj[n][2][0], rdp.dkrproj[n][2][1], rdp.dkrproj[n][2][2], rdp.dkrproj[n][2][3]); - FRDP ("{%f,%f,%f,%f}\n", rdp.dkrproj[n][3][0], rdp.dkrproj[n][3][1], rdp.dkrproj[n][3][2], rdp.dkrproj[n][3][3]); + WriteTrace(TraceRDP, TraceVerbose, "{%f,%f,%f,%f}", rdp.dkrproj[n][0][0], rdp.dkrproj[n][0][1], rdp.dkrproj[n][0][2], rdp.dkrproj[n][0][3]); + WriteTrace(TraceRDP, TraceVerbose, "{%f,%f,%f,%f}", rdp.dkrproj[n][1][0], rdp.dkrproj[n][1][1], rdp.dkrproj[n][1][2], rdp.dkrproj[n][1][3]); + WriteTrace(TraceRDP, TraceVerbose, "{%f,%f,%f,%f}", rdp.dkrproj[n][2][0], rdp.dkrproj[n][2][1], rdp.dkrproj[n][2][2], rdp.dkrproj[n][2][3]); + WriteTrace(TraceRDP, TraceVerbose, "{%f,%f,%f,%f}", rdp.dkrproj[n][3][0], rdp.dkrproj[n][3][1], rdp.dkrproj[n][3][2], rdp.dkrproj[n][3][3]); - for (int i=0; i<3; i++) + for (int i = 0; i < 3; i++) { - FRDP ("proj %d\n", i); - FRDP ("{%f,%f,%f,%f}\n", rdp.dkrproj[i][0][0], rdp.dkrproj[i][0][1], rdp.dkrproj[i][0][2], rdp.dkrproj[i][0][3]); - FRDP ("{%f,%f,%f,%f}\n", rdp.dkrproj[i][1][0], rdp.dkrproj[i][1][1], rdp.dkrproj[i][1][2], rdp.dkrproj[i][1][3]); - FRDP ("{%f,%f,%f,%f}\n", rdp.dkrproj[i][2][0], rdp.dkrproj[i][2][1], rdp.dkrproj[i][2][2], rdp.dkrproj[i][2][3]); - FRDP ("{%f,%f,%f,%f}\n", rdp.dkrproj[i][3][0], rdp.dkrproj[i][3][1], rdp.dkrproj[i][3][2], rdp.dkrproj[i][3][3]); + WriteTrace(TraceRDP, TraceVerbose, "proj %d", i); + WriteTrace(TraceRDP, TraceVerbose, "{%f,%f,%f,%f}", rdp.dkrproj[i][0][0], rdp.dkrproj[i][0][1], rdp.dkrproj[i][0][2], rdp.dkrproj[i][0][3]); + WriteTrace(TraceRDP, TraceVerbose, "{%f,%f,%f,%f}", rdp.dkrproj[i][1][0], rdp.dkrproj[i][1][1], rdp.dkrproj[i][1][2], rdp.dkrproj[i][1][3]); + WriteTrace(TraceRDP, TraceVerbose, "{%f,%f,%f,%f}", rdp.dkrproj[i][2][0], rdp.dkrproj[i][2][1], rdp.dkrproj[i][2][2], rdp.dkrproj[i][2][3]); + WriteTrace(TraceRDP, TraceVerbose, "{%f,%f,%f,%f}", rdp.dkrproj[i][3][0], rdp.dkrproj[i][3][1], rdp.dkrproj[i][3][2], rdp.dkrproj[i][3][3]); } -#endif } static void uc5_vertex() @@ -128,7 +126,7 @@ static void uc5_vertex() vtx_last = 0; int first = ((rdp.cmd0 >> 9) & 0x1F) + vtx_last; - FRDP("uc5:vertex - addr: %08lx, first: %d, count: %d, matrix: %08lx\n", addr, first, n, cur_mtx); + WriteTrace(TraceRDP, TraceDebug, "uc5:vertex - addr: %08lx, first: %d, count: %d, matrix: %08lx", addr, first, n, cur_mtx); int prj = cur_mtx; @@ -179,9 +177,7 @@ static void uc5_vertex() v->a = ((uint8_t*)gfx.RDRAM)[(addr + start + 9) ^ 3]; CalculateFog(v); -#ifdef EXTREME_LOGGING - FRDP ("v%d - x: %f, y: %f, z: %f, w: %f, z_w: %f, r=%d, g=%d, b=%d, a=%d\n", i, v->x, v->y, v->z, v->w, v->z_w, v->r, v->g, v->b, v->a); -#endif + WriteTrace(TraceRDP, TraceVerbose, "v%d - x: %f, y: %f, z: %f, w: %f, z_w: %f, r=%d, g=%d, b=%d, a=%d", i, v->x, v->y, v->z, v->w, v->z_w, v->r, v->g, v->b, v->a); } vtx_last += n; @@ -202,7 +198,7 @@ static void uc5_tridma() uint32_t addr = segoffset(rdp.cmd1) & BMASK; int num = (rdp.cmd0 & 0xFFF0) >> 4; //int num = ((rdp.cmd0 & 0x00F00000) >> 20) + 1; // same thing! - FRDP("uc5:tridma #%d - addr: %08lx, count: %d\n", rdp.tri_n, addr, num); + WriteTrace(TraceRDP, TraceDebug, "uc5:tridma #%d - addr: %08lx, count: %d", rdp.tri_n, addr, num); int start, v0, v1, v2, flags; for (int i = 0; i < num; i++) @@ -212,7 +208,7 @@ static void uc5_tridma() v1 = gfx.RDRAM[addr + start + 1]; v2 = gfx.RDRAM[addr + start + 2]; - FRDP("tri #%d - %d, %d, %d\n", rdp.tri_n, v0, v1, v2); + WriteTrace(TraceRDP, TraceDebug, "tri #%d - %d, %d, %d", rdp.tri_n, v0, v1, v2); VERTEX *v[3] = { &rdp.vtx[v0], @@ -266,11 +262,11 @@ static void uc5_dl_in_mem() { uint32_t addr = segoffset(rdp.cmd1) & BMASK; int count = (rdp.cmd0 & 0x00FF0000) >> 16; - FRDP("uc5:dl_in_mem - addr: %08lx, count: %d\n", addr, count); + WriteTrace(TraceRDP, TraceDebug, "uc5:dl_in_mem - addr: %08lx, count: %d", addr, count); - if (rdp.pc_i >= 9) { - RDP_E("** DL stack overflow **\n"); - LRDP("** DL stack overflow **\n"); + if (rdp.pc_i >= 9) + { + WriteTrace(TraceRDP, TraceWarning, "** DL stack overflow **"); return; } rdp.pc_i++; // go to the next PC in the stack @@ -280,14 +276,14 @@ static void uc5_dl_in_mem() static void uc5_moveword() { - LRDP("uc5:moveword "); + WriteTrace(TraceRDP, TraceDebug, "uc5:moveword "); // Find which command this is (lowest byte of cmd0) switch (rdp.cmd0 & 0xFF) { case 0x02: // moveword matrix 2 billboard billboarding = (rdp.cmd1 & 1); - FRDP("matrix billboard - %s\n", str_offon[billboarding]); + WriteTrace(TraceRDP, TraceDebug, "matrix billboard - %s", str_offon[billboarding]); break; case 0x04: // clip (verified same) @@ -296,11 +292,11 @@ static void uc5_moveword() rdp.clip_ratio = sqrt((float)rdp.cmd1); rdp.update |= UPDATE_VIEWPORT; } - FRDP("clip %08lx, %08lx\n", rdp.cmd0, rdp.cmd1); + WriteTrace(TraceRDP, TraceDebug, "clip %08lx, %08lx", rdp.cmd0, rdp.cmd1); break; case 0x06: // segment (verified same) - FRDP("segment: %08lx -> seg%d\n", rdp.cmd1, (rdp.cmd0 >> 10) & 0x0F); + WriteTrace(TraceRDP, TraceDebug, "segment: %08lx -> seg%d", rdp.cmd1, (rdp.cmd0 >> 10) & 0x0F); rdp.segment[(rdp.cmd0 >> 10) & 0x0F] = rdp.cmd1; break; @@ -308,24 +304,24 @@ static void uc5_moveword() { rdp.fog_multiplier = (short)(rdp.cmd1 >> 16); rdp.fog_offset = (short)(rdp.cmd1 & 0x0000FFFF); - FRDP("fog: multiplier: %f, offset: %f\n", rdp.fog_multiplier, rdp.fog_offset); + WriteTrace(TraceRDP, TraceDebug, "fog: multiplier: %f, offset: %f", rdp.fog_multiplier, rdp.fog_offset); // rdp.update |= UPDATE_FOG_ENABLED; } break; case 0x0a: // moveword matrix select cur_mtx = (rdp.cmd1 >> 6) & 3; - FRDP("matrix select - mtx: %d\n", cur_mtx); + WriteTrace(TraceRDP, TraceDebug, "matrix select - mtx: %d", cur_mtx); break; default: - FRDP("(unknown) %02lx - IGNORED\n", rdp.cmd0 & 0xFF); + WriteTrace(TraceRDP, TraceDebug, "(unknown) %02lx - IGNORED", rdp.cmd0 & 0xFF); } } static void uc5_setgeometrymode() { - FRDP("uc0:setgeometrymode %08lx\n", rdp.cmd1); + WriteTrace(TraceRDP, TraceDebug, "uc0:setgeometrymode %08lx", rdp.cmd1); rdp.geom_mode |= rdp.cmd1; @@ -351,7 +347,7 @@ static void uc5_setgeometrymode() static void uc5_cleargeometrymode() { - FRDP("uc0:cleargeometrymode %08lx\n", rdp.cmd1); + WriteTrace(TraceRDP, TraceDebug, "uc0:cleargeometrymode %08lx", rdp.cmd1); rdp.geom_mode &= (~rdp.cmd1); diff --git a/Source/Glide64/ucode06.h b/Source/Glide64/ucode06.h index a361fd0e2..c9fe96a13 100644 --- a/Source/Glide64/ucode06.h +++ b/Source/Glide64/ucode06.h @@ -70,7 +70,7 @@ static float set_sprite_combine_mode() { Z = rdp.prim_depth; } - FRDP("prim_depth = %d, prim_dz = %d\n", rdp.prim_depth, rdp.prim_dz); + WriteTrace(TraceRDP, TraceDebug, "prim_depth = %d, prim_dz = %d", rdp.prim_depth, rdp.prim_dz); Z = ScaleZ(Z); if (rdp.othermode_l & 0x00000400) @@ -78,7 +78,7 @@ static float set_sprite_combine_mode() } else { - LRDP("z compare not used, using 0\n"); + WriteTrace(TraceRDP, TraceDebug, "z compare not used, using 0"); } grCullMode(GR_CULL_DISABLE); @@ -250,7 +250,7 @@ void DrawDepthImage(const DRAWIMAGE & d) return; if (d.imageH > d.imageW) return; - LRDP("Depth image write\n"); + WriteTrace(TraceRDP, TraceDebug, "Depth image write"); if (fb_hwfbe_enabled) { DrawHiresDepthImage(d); @@ -338,7 +338,7 @@ void DrawImage(DRAWIMAGE & d) line = 16; break; default: - FRDP("DrawImage. unknown image size: %d\n", d.imageSiz); + WriteTrace(TraceRDP, TraceDebug, "DrawImage. unknown image size: %d", d.imageSiz); return; } @@ -567,7 +567,7 @@ void DrawImage(DRAWIMAGE & d) else { rdp.tri_n += 2; - LRDP("Clipped!\n"); + WriteTrace(TraceRDP, TraceDebug, "Clipped!"); } // increment whatever caused this split @@ -606,7 +606,7 @@ void DrawHiresImage(DRAWIMAGE & d, int screensize = FALSE) rdp.tbuff_tex = &(rdp.texbufs[rdp.cur_tex_buf ^ 1].images[0]); else if (rdp.tbuff_tex == 0) return; - FRDP("DrawHiresImage. fb format=%d\n", rdp.tbuff_tex->info.format); + WriteTrace(TraceRDP, TraceDebug, "DrawHiresImage. fb format=%d", rdp.tbuff_tex->info.format); setTBufTex(rdp.tbuff_tex->t_mem, rdp.tbuff_tex->width << rdp.tbuff_tex->size >> 1); @@ -737,11 +737,11 @@ static void uc6_read_background_data(DRAWIMAGE & d, bool bReadScale) int imageYorig = ((int *)gfx.RDRAM)[(addr + 16) >> 1] >> 5; rdp.last_bg = d.imagePtr; - FRDP("imagePtr: %08lx\n", d.imagePtr); - FRDP("frameX: %f, frameW: %d, frameY: %f, frameH: %d\n", d.frameX, d.frameW, d.frameY, d.frameH); - FRDP("imageX: %d, imageW: %d, imageY: %d, imageH: %d\n", d.imageX, d.imageW, d.imageY, d.imageH); - FRDP("imageYorig: %d, scaleX: %f, scaleY: %f\n", imageYorig, d.scaleX, d.scaleY); - FRDP("imageFmt: %d, imageSiz: %d, imagePal: %d, imageFlip: %d\n", d.imageFmt, d.imageSiz, d.imagePal, d.flipX); + WriteTrace(TraceRDP, TraceDebug, "imagePtr: %08lx", d.imagePtr); + WriteTrace(TraceRDP, TraceDebug, "frameX: %f, frameW: %d, frameY: %f, frameH: %d", d.frameX, d.frameW, d.frameY, d.frameH); + WriteTrace(TraceRDP, TraceDebug, "imageX: %d, imageW: %d, imageY: %d, imageH: %d", d.imageX, d.imageW, d.imageY, d.imageH); + WriteTrace(TraceRDP, TraceDebug, "imageYorig: %d, scaleX: %f, scaleY: %f", imageYorig, d.scaleX, d.scaleY); + WriteTrace(TraceRDP, TraceDebug, "imageFmt: %d, imageSiz: %d, imagePal: %d, imageFlip: %d", d.imageFmt, d.imageSiz, d.imagePal, d.flipX); } static void uc6_bg(bool bg_1cyc) @@ -750,10 +750,10 @@ static void uc6_bg(bool bg_1cyc) const char *strFuncName = bg_1cyc ? strFuncNames[0] : strFuncNames[1]; if (rdp.skip_drawing) { - FRDP("%s skipped\n", strFuncName); + WriteTrace(TraceRDP, TraceDebug, "%s skipped", strFuncName); return; } - FRDP("%s #%d, #%d\n", strFuncName, rdp.tri_n, rdp.tri_n + 1); + WriteTrace(TraceRDP, TraceDebug, "%s #%d, #%d", strFuncName, rdp.tri_n, rdp.tri_n + 1); DRAWIMAGE d; uc6_read_background_data(d, bg_1cyc); @@ -770,7 +770,7 @@ static void uc6_bg(bool bg_1cyc) DrawImage(d); else { - FRDP("%s skipped\n", strFuncName); + WriteTrace(TraceRDP, TraceDebug, "%s skipped", strFuncName); } } else @@ -1008,10 +1008,10 @@ static void uc6_read_object_data(DRAWOBJECT & d) if (d.imageH < 0) d.imageH = (short)rdp.scissor_o.lr_y - (short)d.objY - d.imageH; - FRDP("#%d, #%d\n" - "objX: %f, scaleW: %f, imageW: %d\n" - "objY: %f, scaleH: %f, imageH: %d\n" - "size: %d, format: %d\n", rdp.tri_n, rdp.tri_n + 1, + WriteTrace(TraceRDP, TraceDebug, "#%d, #%d" + "objX: %f, scaleW: %f, imageW: %d" + "objY: %f, scaleH: %f, imageH: %d" + "size: %d, format: %d", rdp.tri_n, rdp.tri_n + 1, d.objX, d.scaleW, d.imageW, d.objY, d.scaleH, d.imageH, d.imageSiz, d.imageFmt); } @@ -1042,18 +1042,18 @@ static void uc6_init_tile(const DRAWOBJECT & d) static void uc6_obj_rectangle() { - LRDP("uc6:obj_rectangle "); + WriteTrace(TraceRDP, TraceDebug, "uc6:obj_rectangle "); DRAWOBJECT d; uc6_read_object_data(d); if (d.imageAdrs > 4096) { - FRDP("tmem: %08lx is out of bounds! return\n", d.imageAdrs); + WriteTrace(TraceRDP, TraceDebug, "tmem: %08lx is out of bounds! return", d.imageAdrs); return; } if (!rdp.s2dex_tex_loaded) { - LRDP("Texture was not loaded! return\n"); + WriteTrace(TraceRDP, TraceDebug, "Texture was not loaded! return"); return; } @@ -1111,7 +1111,7 @@ static void uc6_obj_rectangle() static void uc6_obj_sprite() { - LRDP("uc6:obj_sprite "); + WriteTrace(TraceRDP, TraceDebug, "uc6:obj_sprite "); DRAWOBJECT d; uc6_read_object_data(d); uc6_init_tile(d); @@ -1150,7 +1150,7 @@ static void uc6_obj_sprite() ul_v = 0.5f; // Make the vertices - // FRDP("scale_x: %f, scale_y: %f\n", rdp.cur_cache[0]->scale_x, rdp.cur_cache[0]->scale_y); + // WriteTrace(TraceRDP, TraceDebug, "scale_x: %f, scale_y: %f", rdp.cur_cache[0]->scale_x, rdp.cur_cache[0]->scale_y); VERTEX v[4] = { { ul_x, ul_y, Z, 1, ul_u, ul_v }, @@ -1172,7 +1172,7 @@ static void uc6_obj_sprite() static void uc6_obj_movemem() { - LRDP("uc6:obj_movemem\n"); + WriteTrace(TraceRDP, TraceDebug, "uc6:obj_movemem"); int index = rdp.cmd0 & 0xFFFF; uint32_t addr = segoffset(rdp.cmd1) >> 1; @@ -1187,7 +1187,7 @@ static void uc6_obj_movemem() mat_2d.BaseScaleX = ((uint16_t*)gfx.RDRAM)[(addr + 10) ^ 1] / 1024.0f; mat_2d.BaseScaleY = ((uint16_t*)gfx.RDRAM)[(addr + 11) ^ 1] / 1024.0f; - FRDP("mat_2d\nA: %f, B: %f, c: %f, D: %f\nX: %f, Y: %f\nBaseScaleX: %f, BaseScaleY: %f\n", + WriteTrace(TraceRDP, TraceDebug, "mat_2d\nA: %f, B: %f, c: %f, D: %f\nX: %f, Y: %f\nBaseScaleX: %f, BaseScaleY: %f", mat_2d.A, mat_2d.B, mat_2d.C, mat_2d.D, mat_2d.X, mat_2d.Y, mat_2d.BaseScaleX, mat_2d.BaseScaleY); } else if (index == 2) { // movemem submatrix @@ -1196,21 +1196,19 @@ static void uc6_obj_movemem() mat_2d.BaseScaleX = ((uint16_t*)gfx.RDRAM)[(addr + 2) ^ 1] / 1024.0f; mat_2d.BaseScaleY = ((uint16_t*)gfx.RDRAM)[(addr + 3) ^ 1] / 1024.0f; - FRDP("submatrix\nX: %f, Y: %f\nBaseScaleX: %f, BaseScaleY: %f\n", + WriteTrace(TraceRDP, TraceDebug, "submatrix\nX: %f, Y: %f\nBaseScaleX: %f, BaseScaleY: %f", mat_2d.X, mat_2d.Y, mat_2d.BaseScaleX, mat_2d.BaseScaleY); } } static void uc6_select_dl() { - LRDP("uc6:select_dl\n"); - RDP_E("uc6:select_dl\n"); + WriteTrace(TraceRDP, TraceWarning, "uc6:select_dl"); } static void uc6_obj_rendermode() { - LRDP("uc6:obj_rendermode\n"); - RDP_E("uc6:obj_rendermode\n"); + WriteTrace(TraceRDP, TraceWarning, "uc6:obj_rendermode"); } static uint16_t uc6_yuv_to_rgba(uint8_t y, uint8_t u, uint8_t v) @@ -1237,7 +1235,7 @@ static uint16_t uc6_yuv_to_rgba(uint8_t y, uint8_t u, uint8_t v) static void uc6_DrawYUVImageToFrameBuffer(uint16_t ul_x, uint16_t ul_y, uint16_t lr_x, uint16_t lr_y) { - FRDP("uc6:DrawYUVImageToFrameBuffer ul_x%d, ul_y%d, lr_x%d, lr_y%d\n", ul_x, ul_y, lr_x, lr_y); + WriteTrace(TraceRDP, TraceDebug, "uc6:DrawYUVImageToFrameBuffer ul_x%d, ul_y%d, lr_x%d, lr_y%d", ul_x, ul_y, lr_x, lr_y); uint32_t ci_width = rdp.ci_width; uint32_t ci_height = rdp.ci_lower_bound; if (ul_x >= ci_width) @@ -1274,7 +1272,7 @@ static void uc6_DrawYUVImageToFrameBuffer(uint16_t ul_x, uint16_t ul_y, uint16_t static void uc6_obj_rectangle_r() { - LRDP("uc6:obj_rectangle_r "); + WriteTrace(TraceRDP, TraceDebug, "uc6:obj_rectangle_r "); DRAWOBJECT d; uc6_read_object_data(d); @@ -1345,7 +1343,7 @@ static void uc6_obj_rectangle_r() static void uc6_obj_loadtxtr() { - LRDP("uc6:obj_loadtxtr "); + WriteTrace(TraceRDP, TraceDebug, "uc6:obj_loadtxtr "); rdp.s2dex_tex_loaded = TRUE; rdp.update |= UPDATE_TEXTURE; @@ -1357,7 +1355,7 @@ static void uc6_obj_loadtxtr() uint16_t phead = ((uint16_t *)gfx.RDRAM)[(addr + 4) ^ 1] - 256; // 4 uint16_t pnum = ((uint16_t *)gfx.RDRAM)[(addr + 5) ^ 1] + 1; // 5 - FRDP("palette addr: %08lx, start: %d, num: %d\n", image, phead, pnum); + WriteTrace(TraceRDP, TraceDebug, "palette addr: %08lx, start: %d, num: %d", image, phead, pnum); load_palette(image, phead, pnum); } else if (type == 0x00001033) { // TxtrBlock @@ -1366,7 +1364,7 @@ static void uc6_obj_loadtxtr() uint16_t tsize = ((uint16_t *)gfx.RDRAM)[(addr + 5) ^ 1]; // 5 uint16_t tline = ((uint16_t *)gfx.RDRAM)[(addr + 6) ^ 1]; // 6 - FRDP("addr: %08lx, tmem: %08lx, size: %d\n", image, tmem, tsize); + WriteTrace(TraceRDP, TraceDebug, "addr: %08lx, tmem: %08lx, size: %d", image, tmem, tsize); rdp.timg.addr = image; rdp.timg.width = 1; rdp.timg.size = 1; @@ -1384,7 +1382,7 @@ static void uc6_obj_loadtxtr() uint16_t twidth = ((uint16_t *)gfx.RDRAM)[(addr + 5) ^ 1]; // 5 uint16_t theight = ((uint16_t *)gfx.RDRAM)[(addr + 6) ^ 1]; // 6 - FRDP("tile addr: %08lx, tmem: %08lx, twidth: %d, theight: %d\n", image, tmem, twidth, theight); + WriteTrace(TraceRDP, TraceDebug, "tile addr: %08lx, tmem: %08lx, twidth: %d, theight: %d", image, tmem, twidth, theight); int line = (twidth + 1) >> 2; @@ -1403,14 +1401,13 @@ static void uc6_obj_loadtxtr() } else { - FRDP("UNKNOWN (0x%08lx)\n", type); - FRDP_E("uc6:obj_loadtxtr UNKNOWN (0x%08lx)\n", type); + WriteTrace(TraceRDP, TraceWarning, "uc6:obj_loadtxtr UNKNOWN (0x%08lx)", type); } } static void uc6_obj_ldtx_sprite() { - LRDP("uc6:obj_ldtx_sprite\n"); + WriteTrace(TraceRDP, TraceDebug, "uc6:obj_ldtx_sprite"); uint32_t addr = rdp.cmd1; uc6_obj_loadtxtr(); @@ -1420,7 +1417,7 @@ static void uc6_obj_ldtx_sprite() static void uc6_obj_ldtx_rect() { - LRDP("uc6:obj_ldtx_rect\n"); + WriteTrace(TraceRDP, TraceDebug, "uc6:obj_ldtx_rect"); uint32_t addr = rdp.cmd1; uc6_obj_loadtxtr(); @@ -1430,7 +1427,7 @@ static void uc6_obj_ldtx_rect() static void uc6_ldtx_rect_r() { - LRDP("uc6:ldtx_rect_r\n"); + WriteTrace(TraceRDP, TraceDebug, "uc6:ldtx_rect_r"); uint32_t addr = rdp.cmd1; uc6_obj_loadtxtr(); @@ -1440,8 +1437,7 @@ static void uc6_ldtx_rect_r() static void uc6_loaducode() { - LRDP("uc6:load_ucode\n"); - RDP_E("uc6:load_ucode\n"); + WriteTrace(TraceRDP, TraceWarning, "uc6:load_ucode"); // copy the microcode data uint32_t addr = segoffset(rdp.cmd1); @@ -1458,7 +1454,7 @@ void uc6_sprite2d() if ((cmd0 >> 24) != 0xBE) return; - FRDP("uc6:uc6_sprite2d #%d, #%d\n", rdp.tri_n, rdp.tri_n + 1); + WriteTrace(TraceRDP, TraceDebug, "uc6:uc6_sprite2d #%d, #%d", rdp.tri_n, rdp.tri_n + 1); uint32_t addr = segoffset(rdp.cmd1) >> 1; DRAWIMAGE d; @@ -1531,11 +1527,11 @@ void uc6_sprite2d() stride *= scaleY; d.scaleY = 1.0f; } - FRDP("imagePtr: %08lx\n", d.imagePtr); - FRDP("frameX: %f, frameW: %d, frameY: %f, frameH: %d\n", d.frameX, d.frameW, d.frameY, d.frameH); - FRDP("imageX: %d, imageW: %d, imageY: %d, imageH: %d\n", d.imageX, d.imageW, d.imageY, d.imageH); - FRDP("imageFmt: %d, imageSiz: %d, imagePal: %d, imageStride: %d\n", d.imageFmt, d.imageSiz, d.imagePal, stride); - FRDP("scaleX: %f, scaleY: %f\n", d.scaleX, d.scaleY); + WriteTrace(TraceRDP, TraceDebug, "imagePtr: %08lx", d.imagePtr); + WriteTrace(TraceRDP, TraceDebug, "frameX: %f, frameW: %d, frameY: %f, frameH: %d", d.frameX, d.frameW, d.frameY, d.frameH); + WriteTrace(TraceRDP, TraceDebug, "imageX: %d, imageW: %d, imageY: %d, imageH: %d", d.imageX, d.imageW, d.imageY, d.imageH); + WriteTrace(TraceRDP, TraceDebug, "imageFmt: %d, imageSiz: %d, imagePal: %d, imageStride: %d", d.imageFmt, d.imageSiz, d.imagePal, stride); + WriteTrace(TraceRDP, TraceDebug, "scaleX: %f, scaleY: %f", d.scaleX, d.scaleY); } else { diff --git a/Source/Glide64/ucode07.h b/Source/Glide64/ucode07.h index d52248727..f04c532ac 100644 --- a/Source/Glide64/ucode07.h +++ b/Source/Glide64/ucode07.h @@ -47,7 +47,7 @@ uint32_t pd_col_addr = 0; static void uc7_colorbase() { - LRDP("uc7_colorbase\n"); + WriteTrace(TraceRDP, TraceDebug, "uc7_colorbase"); pd_col_addr = segoffset(rdp.cmd1); } @@ -91,7 +91,7 @@ static void uc7_vertex() rdp.v0 = v0 = (rdp.cmd0 & 0x0F0000) >> 16; rdp.vn = n = ((rdp.cmd0 & 0xF00000) >> 20) + 1; - FRDP("uc7:vertex n: %d, v0: %d, from: %08lx\n", n, v0, addr); + WriteTrace(TraceRDP, TraceDebug, "uc7:vertex n: %d, v0: %d, from: %08lx", n, v0, addr); vtx_uc7 *vertex = (vtx_uc7 *)&gfx.RDRAM[addr]; @@ -106,9 +106,7 @@ static void uc7_vertex() v->ov = (float)vertex->t; v->uv_scaled = 0; -#ifdef EXTREME_LOGGING - // FRDP ("before: v%d - x: %f, y: %f, z: %f, flags: %04lx, ou: %f, ov: %f\n", i>>4, x, y, z, v->flags, v->ou, v->ov); -#endif + WriteTrace(TraceRDP, TraceVerbose, "before: v%d - x: %f, y: %f, z: %f, flags: %04lx, ou: %f, ov: %f", i >> 4, x, y, z, v->flags, v->ou, v->ov); v->x = x*rdp.combined[0][0] + y*rdp.combined[1][0] + z*rdp.combined[2][0] + rdp.combined[3][0]; v->y = x*rdp.combined[0][1] + y*rdp.combined[1][1] + z*rdp.combined[2][1] + rdp.combined[3][1]; @@ -145,31 +143,25 @@ static void uc7_vertex() if (rdp.geom_mode & 0x80000) { calc_linear(v); -#ifdef EXTREME_LOGGING - FRDP("calc linear: v%d - u: %f, v: %f\n", i >> 4, v->ou, v->ov); -#endif + WriteTrace(TraceRDP, TraceVerbose, "calc linear: v%d - u: %f, v: %f", i >> 4, v->ou, v->ov); } else if (rdp.geom_mode & 0x40000) { calc_sphere(v); -#ifdef EXTREME_LOGGING - FRDP("calc sphere: v%d - u: %f, v: %f\n", i >> 4, v->ou, v->ov); -#endif + WriteTrace(TraceRDP, TraceVerbose, "calc sphere: v%d - u: %f, v: %f", i >> 4, v->ou, v->ov); } NormalizeVector(v->vec); calc_light(v); - } + } else { v->r = color[3]; v->g = color[2]; v->b = color[1]; } -#ifdef EXTREME_LOGGING - FRDP("v%d - x: %f, y: %f, z: %f, w: %f, u: %f, v: %f\n", i >> 4, v->x, v->y, v->z, v->w, v->ou, v->ov); -#endif + WriteTrace(TraceRDP, TraceVerbose, "v%d - x: %f, y: %f, z: %f, w: %f, u: %f, v: %f", i >> 4, v->x, v->y, v->z, v->w, v->ou, v->ov); vertex++; } - } +} diff --git a/Source/Glide64/ucode08.h b/Source/Glide64/ucode08.h index b91f6203a..d7c83e081 100644 --- a/Source/Glide64/ucode08.h +++ b/Source/Glide64/ucode08.h @@ -59,12 +59,11 @@ static void uc8_vertex() rdp.vn = n = (rdp.cmd0 >> 12) & 0xFF; rdp.v0 = v0 = ((rdp.cmd0 >> 1) & 0x7F) - n; - FRDP("uc8:vertex n: %d, v0: %d, from: %08lx\n", n, v0, addr); + WriteTrace(TraceRDP, TraceDebug, "uc8:vertex n: %d, v0: %d, from: %08lx", n, v0, addr); if (v0 < 0) { - RDP_E("** ERROR: uc2:vertex v0 < 0\n"); - LRDP("** ERROR: uc2:vertex v0 < 0\n"); + WriteTrace(TraceRDP, TraceWarning, "** ERROR: uc2:vertex v0 < 0"); return; } //* @@ -78,9 +77,7 @@ static void uc8_vertex() { InverseTransformVector(&rdp.light[l].dir_x, rdp.light_vector[l], rdp.model); NormalizeVector(rdp.light_vector[l]); -#ifdef EXTREME_LOGGING - FRDP("light_vector[%d] x: %f, y: %f, z: %f\n", l, rdp.light_vector[l][0], rdp.light_vector[l][1], rdp.light_vector[l][2]); -#endif + WriteTrace(TraceRDP, TraceVerbose, "light_vector[%d] x: %f, y: %f, z: %f", l, rdp.light_vector[l][0], rdp.light_vector[l][1], rdp.light_vector[l][2]); } } //*/ @@ -96,17 +93,13 @@ static void uc8_vertex() v->uv_scaled = 0; v->a = ((uint8_t*)gfx.RDRAM)[(addr + i + 15) ^ 3]; -#ifdef EXTREME_LOGGING - FRDP ("before v%d - x: %f, y: %f, z: %f\n", i>>4, x, y, z); -#endif + WriteTrace(TraceRDP, TraceVerbose, "before v%d - x: %f, y: %f, z: %f", i >> 4, x, y, z); v->x = x*rdp.combined[0][0] + y*rdp.combined[1][0] + z*rdp.combined[2][0] + rdp.combined[3][0]; v->y = x*rdp.combined[0][1] + y*rdp.combined[1][1] + z*rdp.combined[2][1] + rdp.combined[3][1]; v->z = x*rdp.combined[0][2] + y*rdp.combined[1][2] + z*rdp.combined[2][2] + rdp.combined[3][2]; v->w = x*rdp.combined[0][3] + y*rdp.combined[1][3] + z*rdp.combined[2][3] + rdp.combined[3][3]; -#ifdef EXTREME_LOGGING - FRDP ("v%d - x: %f, y: %f, z: %f, w: %f, u: %f, v: %f, flags: %d\n", i>>4, v->x, v->y, v->z, v->w, v->ou, v->ov, v->flags); -#endif + WriteTrace(TraceRDP, TraceVerbose, "v%d - x: %f, y: %f, z: %f, w: %f, u: %f, v: %f, flags: %d", i >> 4, v->x, v->y, v->z, v->w, v->ou, v->ov, v->flags); if (fabs(v->w) < 0.001) v->w = 0.001f; v->oow = 1.0f / v->w; @@ -128,9 +121,7 @@ static void uc8_vertex() v->r = ((uint8_t*)gfx.RDRAM)[(addr + i + 12) ^ 3]; v->g = ((uint8_t*)gfx.RDRAM)[(addr + i + 13) ^ 3]; v->b = ((uint8_t*)gfx.RDRAM)[(addr + i + 14) ^ 3]; -#ifdef EXTREME_LOGGING - FRDP ("r: %02lx, g: %02lx, b: %02lx, a: %02lx\n", v->r, v->g, v->b, v->a); -#endif + WriteTrace(TraceRDP, TraceVerbose, "r: %02lx, g: %02lx, b: %02lx, a: %02lx", v->r, v->g, v->b, v->a); if ((rdp.geom_mode & 0x00020000)) { @@ -142,21 +133,16 @@ static void uc8_vertex() if (rdp.geom_mode & 0x80000) { calc_linear(v); -#ifdef EXTREME_LOGGING - FRDP ("calc linear: v%d - u: %f, v: %f\n", i>>4, v->ou, v->ov); -#endif + WriteTrace(TraceRDP, TraceVerbose, "calc linear: v%d - u: %f, v: %f", i >> 4, v->ou, v->ov); } else if (rdp.geom_mode & 0x40000) { calc_sphere(v); -#ifdef EXTREME_LOGGING - FRDP ("calc sphere: v%d - u: %f, v: %f\n", i>>4, v->ou, v->ov); -#endif + WriteTrace(TraceRDP, TraceVerbose, "calc sphere: v%d - u: %f, v: %f", i >> 4, v->ou, v->ov); } - // FRDP("calc light. r: 0x%02lx, g: 0x%02lx, b: 0x%02lx, nx: %.3f, ny: %.3f, nz: %.3f\n", v->r, v->g, v->b, v->vec[0], v->vec[1], v->vec[2]); - FRDP("v[%d] calc light. r: 0x%02lx, g: 0x%02lx, b: 0x%02lx\n", i >> 4, v->r, v->g, v->b); + WriteTrace(TraceRDP, TraceDebug, "v[%d] calc light. r: 0x%02lx, g: 0x%02lx, b: 0x%02lx", i >> 4, v->r, v->g, v->b); float color[3] = { rdp.light[rdp.num_lights].r, rdp.light[rdp.num_lights].g, rdp.light[rdp.num_lights].b }; - FRDP("ambient light. r: %f, g: %f, b: %f\n", color[0], color[1], color[2]); + WriteTrace(TraceRDP, TraceDebug, "ambient light. r: %f, g: %f, b: %f", color[0], color[1], color[2]); float light_intensity = 0.0f; uint32_t l; if (rdp.geom_mode & 0x00400000) @@ -167,7 +153,7 @@ static void uc8_vertex() if (!rdp.light[l].nonblack) continue; light_intensity = DotProduct(rdp.light_vector[l], v->vec); - FRDP("light %d, intensity : %f\n", l, light_intensity); + WriteTrace(TraceRDP, TraceDebug, "light %d, intensity : %f", l, light_intensity); if (light_intensity < 0.0f) continue; //* @@ -181,23 +167,23 @@ static void uc8_vertex() float p_i = rdp.light[l].ca / len; if (p_i > 1.0f) p_i = 1.0f; light_intensity *= p_i; - FRDP("light %d, len: %f, p_intensity : %f\n", l, len, p_i); + WriteTrace(TraceRDP, TraceDebug, "light %d, len: %f, p_intensity : %f", l, len, p_i); } //*/ color[0] += rdp.light[l].r * light_intensity; color[1] += rdp.light[l].g * light_intensity; color[2] += rdp.light[l].b * light_intensity; - FRDP("light %d r: %f, g: %f, b: %f\n", l, color[0], color[1], color[2]); + WriteTrace(TraceRDP, TraceDebug, "light %d r: %f, g: %f, b: %f", l, color[0], color[1], color[2]); } light_intensity = DotProduct(rdp.light_vector[l], v->vec); - FRDP("light %d, intensity : %f\n", l, light_intensity); + WriteTrace(TraceRDP, TraceDebug, "light %d, intensity : %f", l, light_intensity); if (light_intensity > 0.0f) { color[0] += rdp.light[l].r * light_intensity; color[1] += rdp.light[l].g * light_intensity; color[2] += rdp.light[l].b * light_intensity; } - FRDP("light %d r: %f, g: %f, b: %f\n", l, color[0], color[1], color[2]); + WriteTrace(TraceRDP, TraceDebug, "light %d r: %f, g: %f, b: %f", l, color[0], color[1], color[2]); } else { @@ -212,11 +198,11 @@ static void uc8_vertex() float len = (vx*vx + vy*vy + vz*vz + vw*vw) / 65536.0f; light_intensity = rdp.light[l].ca / len; if (light_intensity > 1.0f) light_intensity = 1.0f; - FRDP("light %d, p_intensity : %f\n", l, light_intensity); + WriteTrace(TraceRDP, TraceDebug, "light %d, p_intensity : %f", l, light_intensity); color[0] += rdp.light[l].r * light_intensity; color[1] += rdp.light[l].g * light_intensity; color[2] += rdp.light[l].b * light_intensity; - //FRDP("light %d r: %f, g: %f, b: %f\n", l, color[0], color[1], color[2]); + //WriteTrace(TraceRDP, TraceDebug, "light %d r: %f, g: %f, b: %f", l, color[0], color[1], color[2]); } } } @@ -226,9 +212,7 @@ static void uc8_vertex() v->r = (uint8_t)(((float)v->r)*color[0]); v->g = (uint8_t)(((float)v->g)*color[1]); v->b = (uint8_t)(((float)v->b)*color[2]); -#ifdef EXTREME_LOGGING - FRDP("color after light: r: 0x%02lx, g: 0x%02lx, b: 0x%02lx\n", v->r, v->g, v->b); -#endif + WriteTrace(TraceRDP, TraceVerbose, "color after light: r: 0x%02lx, g: 0x%02lx, b: 0x%02lx", v->r, v->g, v->b); } } } @@ -239,7 +223,7 @@ static void uc8_moveword() uint16_t offset = (uint16_t)(rdp.cmd0 & 0xFFFF); uint32_t data = rdp.cmd1; - FRDP("uc8:moveword "); + WriteTrace(TraceRDP, TraceDebug, "uc8:moveword "); switch (index) { @@ -249,7 +233,7 @@ static void uc8_moveword() case 0x02: rdp.num_lights = (data / 48); rdp.update |= UPDATE_LIGHTS; - FRDP("numlights: %d\n", rdp.num_lights); + WriteTrace(TraceRDP, TraceDebug, "numlights: %d", rdp.num_lights); break; case 0x04: @@ -258,12 +242,12 @@ static void uc8_moveword() rdp.clip_ratio = sqrt((float)rdp.cmd1); rdp.update |= UPDATE_VIEWPORT; } - FRDP("mw_clip %08lx, %08lx\n", rdp.cmd0, rdp.cmd1); + WriteTrace(TraceRDP, TraceDebug, "mw_clip %08lx, %08lx", rdp.cmd0, rdp.cmd1); break; case 0x06: // moveword SEGMENT { - FRDP("SEGMENT %08lx -> seg%d\n", data, offset >> 2); + WriteTrace(TraceRDP, TraceDebug, "SEGMENT %08lx -> seg%d", data, offset >> 2); rdp.segment[(offset >> 2) & 0xF] = data; } break; @@ -272,24 +256,24 @@ static void uc8_moveword() { rdp.fog_multiplier = (short)(rdp.cmd1 >> 16); rdp.fog_offset = (short)(rdp.cmd1 & 0x0000FFFF); - FRDP("fog: multiplier: %f, offset: %f\n", rdp.fog_multiplier, rdp.fog_offset); + WriteTrace(TraceRDP, TraceDebug, "fog: multiplier: %f, offset: %f", rdp.fog_multiplier, rdp.fog_offset); } break; case 0x0c: - RDP_E("uc8:moveword forcemtx - IGNORED\n"); - LRDP("forcemtx - IGNORED\n"); + + WriteTrace(TraceRDP, TraceWarning, "uc8:moveword forcemtx - IGNORED"); break; case 0x0e: - LRDP("perspnorm - IGNORED\n"); + WriteTrace(TraceRDP, TraceDebug, "perspnorm - IGNORED"); break; case 0x10: // moveword coord mod { uint8_t n = offset >> 2; - FRDP("coord mod:%d, %08lx\n", n, data); + WriteTrace(TraceRDP, TraceDebug, "coord mod:%d, %08lx", n, data); if (rdp.cmd0 & 8) return; uint32_t idx = (rdp.cmd0 >> 1) & 3; @@ -310,22 +294,19 @@ static void uc8_moveword() { uc8_coord_mod[8 + idx] = (short)(rdp.cmd1 >> 16); uc8_coord_mod[9 + idx] = (short)(rdp.cmd1 & 0xffff); -#ifdef EXTREME_LOGGING if (idx) { for (int k = 8; k < 16; k++) { - FRDP("coord_mod[%d]=%f\n", k, uc8_coord_mod[k]); + WriteTrace(TraceRDP, TraceVerbose, "coord_mod[%d]=%f", k, uc8_coord_mod[k]); } } -#endif } } break; default: - FRDP_E("uc8:moveword unknown (index: 0x%08lx, offset 0x%08lx)\n", index, offset); - FRDP("unknown (index: 0x%08lx, offset 0x%08lx)\n", index, offset); + WriteTrace(TraceRDP, TraceWarning, "uc8:moveword unknown (index: 0x%08lx, offset 0x%08lx)", index, offset); } } @@ -335,7 +316,7 @@ static void uc8_movemem() uint32_t addr = segoffset(rdp.cmd1); int ofs = (rdp.cmd0 >> 5) & 0x3FFF; - FRDP("uc8:movemem ofs:%d ", ofs); + WriteTrace(TraceRDP, TraceDebug, "uc8:movemem ofs:%d ", ofs); switch (idx) { @@ -357,7 +338,7 @@ static void uc8_movemem() rdp.update |= UPDATE_VIEWPORT; - FRDP("viewport scale(%d, %d), trans(%d, %d), from:%08lx\n", scale_x, scale_y, + WriteTrace(TraceRDP, TraceDebug, "viewport scale(%d, %d), trans(%d, %d), from:%08lx", scale_x, scale_y, trans_x, trans_y, a); } break; @@ -379,7 +360,7 @@ static void uc8_movemem() if (!dir_x && !dir_y) rdp.use_lookat = FALSE; } - FRDP("lookat_%d (%f, %f, %f)\n", n, rdp.lookat[n][0], rdp.lookat[n][1], rdp.lookat[n][2]); + WriteTrace(TraceRDP, TraceDebug, "lookat_%d (%f, %f, %f)", n, rdp.lookat[n][0], rdp.lookat[n][1], rdp.lookat[n][2]); return; } n -= 2; @@ -405,57 +386,51 @@ static void uc8_movemem() rdp.light[n].nonzero = gfx.RDRAM[(addr + 12) ^ 3]; rdp.light[n].ca = (float)rdp.light[n].nonzero / 16.0f; //rdp.light[n].la = rdp.light[n].ca * 1.0f; -#ifdef EXTREME_LOGGING - FRDP("light: n: %d, pos: x: %f, y: %f, z: %f, w: %f, ca: %f\n", + WriteTrace(TraceRDP, TraceVerbose, "light: n: %d, pos: x: %f, y: %f, z: %f, w: %f, ca: %f", n, rdp.light[n].x, rdp.light[n].y, rdp.light[n].z, rdp.light[n].w, rdp.light[n].ca); -#endif - FRDP("light: n: %d, r: %f, g: %f, b: %f. dir: x: %.3f, y: %.3f, z: %.3f\n", + WriteTrace(TraceRDP, TraceDebug, "light: n: %d, r: %f, g: %f, b: %f. dir: x: %.3f, y: %.3f, z: %.3f", n, rdp.light[n].r, rdp.light[n].g, rdp.light[n].b, rdp.light[n].dir_x, rdp.light[n].dir_y, rdp.light[n].dir_z); -#ifdef EXTREME_LOGGING for (int t = 0; t < 24; t++) { - FRDP ("light[%d] = 0x%04lx \n", t, ((uint16_t*)gfx.RDRAM)[(a+t)^1]); + WriteTrace(TraceRDP, TraceVerbose, "light[%d] = 0x%04lx ", t, ((uint16_t*)gfx.RDRAM)[(a + t) ^ 1]); } -#endif } break; case 14: //Normales { uc8_normale_addr = segoffset(rdp.cmd1); - FRDP("Normale - addr: %08lx\n", uc8_normale_addr); -#ifdef EXTREME_LOGGING + WriteTrace(TraceRDP, TraceVerbose, "Normale - addr: %08lx", uc8_normale_addr); int i; for (i = 0; i < 32; i++) { - char x = ((char*)gfx.RDRAM)[uc8_normale_addr + ((i<<1) + 0)^3]; - char y = ((char*)gfx.RDRAM)[uc8_normale_addr + ((i<<1) + 1)^3]; - FRDP("#%d x = %d, y = %d\n", i, x, y); + char x = ((char*)gfx.RDRAM)[uc8_normale_addr + ((i << 1) + 0) ^ 3]; + char y = ((char*)gfx.RDRAM)[uc8_normale_addr + ((i << 1) + 1) ^ 3]; + WriteTrace(TraceRDP, TraceVerbose, "#%d x = %d, y = %d", i, x, y); } uint32_t a = uc8_normale_addr >> 1; for (i = 0; i < 32; i++) { - FRDP ("n[%d] = 0x%04lx \n", i, ((uint16_t*)gfx.RDRAM)[(a+i)^1]); + WriteTrace(TraceRDP, TraceVerbose, "n[%d] = 0x%04lx ", i, ((uint16_t*)gfx.RDRAM)[(a + i) ^ 1]); } -#endif } break; default: - FRDP("uc8:movemem unknown (%d)\n", idx); - } + WriteTrace(TraceRDP, TraceDebug, "uc8:movemem unknown (%d)", idx); } +} static void uc8_tri4() //by Gugaman Apr 19 2002 { if (rdp.skip_drawing) { - LRDP("uc8:tri4. skipped\n"); + WriteTrace(TraceRDP, TraceDebug, "uc8:tri4. skipped"); return; } - FRDP("uc8:tri4 (#%d - #%d), %d-%d-%d, %d-%d-%d, %d-%d-%d, %d-%d-%d\n", + WriteTrace(TraceRDP, TraceDebug, "uc8:tri4 (#%d - #%d), %d-%d-%d, %d-%d-%d, %d-%d-%d, %d-%d-%d", rdp.tri_n, rdp.tri_n + 3, ((rdp.cmd0 >> 23) & 0x1F), diff --git a/Source/Glide64/ucode09.h b/Source/Glide64/ucode09.h index 9e8bffe68..b0771601e 100644 --- a/Source/Glide64/ucode09.h +++ b/Source/Glide64/ucode09.h @@ -126,7 +126,7 @@ static void uc9_draw_object(uint8_t * addr, uint32_t type) vsize = 16; break; default: - FRDP_E("Unknown geometric primitive type %u.\n", type); + WriteTrace(TraceRDP, TraceWarning, "Unknown geometric primitive type %u.", type); textured = vnum = vsize = 0; break; } @@ -153,12 +153,12 @@ static void uc9_draw_object(uint8_t * addr, uint32_t type) v.ov = ((short*)addr)[5 ^ 1]; v.w = Calc_invw(((int*)addr)[3]) / 31.0f; v.oow = 1.0f / v.w; - FRDP("v%d - sx: %f, sy: %f ou: %f, ov: %f, w: %f, r=%d, g=%d, b=%d, a=%d\n", i, v.sx / rdp.scale_x, v.sy / rdp.scale_y, v.ou*rdp.tiles[rdp.cur_tile].s_scale, v.ov*rdp.tiles[rdp.cur_tile].t_scale, v.w, v.r, v.g, v.b, v.a); + WriteTrace(TraceRDP, TraceDebug, "v%d - sx: %f, sy: %f ou: %f, ov: %f, w: %f, r=%d, g=%d, b=%d, a=%d", i, v.sx / rdp.scale_x, v.sy / rdp.scale_y, v.ou*rdp.tiles[rdp.cur_tile].s_scale, v.ov*rdp.tiles[rdp.cur_tile].t_scale, v.w, v.r, v.g, v.b, v.a); } else { v.oow = v.w = 1.0f; - FRDP("v%d - sx: %f, sy: %f r=%d, g=%d, b=%d, a=%d\n", i, v.sx / rdp.scale_x, v.sy / rdp.scale_y, v.r, v.g, v.b, v.a); + WriteTrace(TraceRDP, TraceDebug, "v%d - sx: %f, sy: %f r=%d, g=%d, b=%d, a=%d", i, v.sx / rdp.scale_x, v.sy / rdp.scale_y, v.r, v.g, v.b, v.a); } addr += vsize; } @@ -171,13 +171,13 @@ static void uc9_draw_object(uint8_t * addr, uint32_t type) }; if (vnum == 3) { - FRDP("uc9:Tri #%d, #%d\n", rdp.tri_n, rdp.tri_n + 1); + WriteTrace(TraceRDP, TraceDebug, "uc9:Tri #%d, #%d", rdp.tri_n, rdp.tri_n + 1); draw_tri(pV, 0); rdp.tri_n++; } else { - FRDP("uc9:Quad #%d, #%d\n", rdp.tri_n, rdp.tri_n + 1); + WriteTrace(TraceRDP, TraceDebug, "uc9:Quad #%d, #%d", rdp.tri_n, rdp.tri_n + 1); draw_tri(pV, 0); draw_tri(pV + 1, 0); rdp.tri_n += 2; @@ -237,7 +237,7 @@ static uint32_t uc9_load_object(uint32_t zHeader, uint32_t * rdpcmds) static void uc9_object() { - LRDP("uc9:object\n"); + WriteTrace(TraceRDP, TraceDebug, "uc9:object"); uint32_t rdpcmds[3] = { 0, 0, 0 }; uint32_t cmd1 = rdp.cmd1; uint32_t zHeader = segoffset(rdp.cmd0); @@ -250,7 +250,7 @@ static void uc9_object() static void uc9_mix() { - LRDP("uc9:mix IGNORED\n"); + WriteTrace(TraceRDP, TraceDebug, "uc9:mix IGNORED"); } static void uc9_fmlight() @@ -258,7 +258,7 @@ static void uc9_fmlight() int mid = rdp.cmd0 & 0xFF; rdp.num_lights = 1 + ((rdp.cmd1 >> 12) & 0xFF); uint32_t a = -1024 + (rdp.cmd1 & 0xFFF); - FRDP("uc9:fmlight matrix: %d, num: %d, dmem: %04lx\n", mid, rdp.num_lights, a); + WriteTrace(TraceRDP, TraceDebug, "uc9:fmlight matrix: %d, num: %d, dmem: %04lx", mid, rdp.num_lights, a); M44 *m = NULL; switch (mid) { @@ -273,7 +273,7 @@ static void uc9_fmlight() break; default: m = NULL; /* allowing segfaults to debug in case of PJGlide64 bugs */ - FRDP_E("Invalid FM light matrix ID %u.\n", mid); + WriteTrace(TraceRDP, TraceWarning, "Invalid FM light matrix ID %u.", mid); break; } @@ -281,7 +281,7 @@ static void uc9_fmlight() rdp.light[rdp.num_lights].g = (float)(((uint8_t*)gfx.DMEM)[(a + 1) ^ 3]) / 255.0f; rdp.light[rdp.num_lights].b = (float)(((uint8_t*)gfx.DMEM)[(a + 2) ^ 3]) / 255.0f; rdp.light[rdp.num_lights].a = 1.0f; - FRDP("ambient light: r: %.3f, g: %.3f, b: %.3f\n", rdp.light[rdp.num_lights].r, rdp.light[rdp.num_lights].g, rdp.light[rdp.num_lights].b); + WriteTrace(TraceRDP, TraceDebug, "ambient light: r: %.3f, g: %.3f, b: %.3f", rdp.light[rdp.num_lights].r, rdp.light[rdp.num_lights].g, rdp.light[rdp.num_lights].b); a += 8; uint32_t i; for (i = 0; i < rdp.num_lights; i++) @@ -293,13 +293,13 @@ static void uc9_fmlight() rdp.light[i].dir_x = (float)(((char*)gfx.DMEM)[(a + 8) ^ 3]) / 127.0f; rdp.light[i].dir_y = (float)(((char*)gfx.DMEM)[(a + 9) ^ 3]) / 127.0f; rdp.light[i].dir_z = (float)(((char*)gfx.DMEM)[(a + 10) ^ 3]) / 127.0f; - FRDP("light: n: %d, r: %.3f, g: %.3f, b: %.3f, x: %.3f, y: %.3f, z: %.3f\n", + WriteTrace(TraceRDP, TraceDebug, "light: n: %d, r: %.3f, g: %.3f, b: %.3f, x: %.3f, y: %.3f, z: %.3f", i, rdp.light[i].r, rdp.light[i].g, rdp.light[i].b, rdp.light[i].dir_x, rdp.light[i].dir_y, rdp.light[i].dir_z); // TransformVector(&rdp.light[i].dir_x, rdp.light_vector[i], *m); InverseTransformVector(&rdp.light[i].dir_x, rdp.light_vector[i], *m); NormalizeVector(rdp.light_vector[i]); - FRDP("light vector: n: %d, x: %.3f, y: %.3f, z: %.3f\n", + WriteTrace(TraceRDP, TraceDebug, "light vector: n: %d, x: %.3f, y: %.3f, z: %.3f", i, rdp.light_vector[i][0], rdp.light_vector[i][1], rdp.light_vector[i][2]); a += 24; } @@ -330,7 +330,7 @@ static void uc9_light() uint32_t tdest = -1024 + (rdp.cmd1 & 0xFFF); int use_material = (csrs != 0x0ff0); tdest >>= 1; - FRDP("uc9:light n: %d, colsrs: %04lx, normales: %04lx, coldst: %04lx, texdst: %04lx\n", num, csrs, nsrs, cdest, tdest); + WriteTrace(TraceRDP, TraceDebug, "uc9:light n: %d, colsrs: %04lx, normales: %04lx, coldst: %04lx, texdst: %04lx", num, csrs, nsrs, cdest, tdest); VERTEX v; for (uint32_t i = 0; i < num; i++) { @@ -360,22 +360,22 @@ static void uc9_light() static void uc9_mtxtrnsp() { - LRDP("uc9:mtxtrnsp - ignored\n"); + WriteTrace(TraceRDP, TraceDebug, "uc9:mtxtrnsp - ignored"); /* - LRDP("uc9:mtxtrnsp "); + WriteTrace(TraceRDP, TraceDebug, "uc9:mtxtrnsp "); M44 *s; switch (rdp.cmd1&0xF) { case 4: s = (M44*)rdp.model; - LRDP("Model\n"); + WriteTrace(TraceRDP, TraceDebug, "Model"); break; case 6: s = (M44*)rdp.proj; - LRDP("Proj\n"); + WriteTrace(TraceRDP, TraceDebug, "Proj"); break; case 8: s = (M44*)rdp.combined; - LRDP("Comb\n"); + WriteTrace(TraceRDP, TraceDebug, "Comb"); break; } float m = *s[1][0]; @@ -392,7 +392,7 @@ static void uc9_mtxtrnsp() static void uc9_mtxcat() { - LRDP("uc9:mtxcat "); + WriteTrace(TraceRDP, TraceDebug, "uc9:mtxcat "); M44 *s = NULL; M44 *t = NULL; uint32_t S = rdp.cmd0 & 0xF; @@ -401,36 +401,36 @@ static void uc9_mtxcat() switch (S) { case 4: s = (M44*)rdp.model; - LRDP("Model * "); + WriteTrace(TraceRDP, TraceDebug, "Model * "); break; case 6: s = (M44*)rdp.proj; - LRDP("Proj * "); + WriteTrace(TraceRDP, TraceDebug, "Proj * "); break; case 8: s = (M44*)rdp.combined; - LRDP("Comb * "); + WriteTrace(TraceRDP, TraceDebug, "Comb * "); break; default: - FRDP_E("Invalid mutex S-coordinate: %u\n", S); + WriteTrace(TraceRDP, TraceWarning, "Invalid mutex S-coordinate: %u", S); s = NULL; /* intentional segfault to alert for bugs in PJGlide64 (cxd4) */ break; } switch (T) { case 4: t = (M44*)rdp.model; - LRDP("Model -> "); + WriteTrace(TraceRDP, TraceDebug, "Model -> "); break; case 6: t = (M44*)rdp.proj; - LRDP("Proj -> "); + WriteTrace(TraceRDP, TraceDebug, "Proj -> "); break; case 8: - LRDP("Comb -> "); + WriteTrace(TraceRDP, TraceDebug, "Comb -> "); t = (M44*)rdp.combined; break; default: - FRDP_E("Invalid mutex T-coordinate: %u\n", T); + WriteTrace(TraceRDP, TraceWarning, "Invalid mutex T-coordinate: %u", T); t = NULL; /* intentional segfault to alert for bugs in PJGlide64 (cxd4) */ break; } @@ -440,31 +440,29 @@ static void uc9_mtxcat() switch (D) { case 4: memcpy(rdp.model, m, 64);; - LRDP("Model\n"); + WriteTrace(TraceRDP, TraceDebug, "Model"); break; case 6: memcpy(rdp.proj, m, 64);; - LRDP("Proj\n"); + WriteTrace(TraceRDP, TraceDebug, "Proj"); break; case 8: memcpy(rdp.combined, m, 64);; - LRDP("Comb\n"); + WriteTrace(TraceRDP, TraceDebug, "Comb"); break; } -#ifdef EXTREME_LOGGING - FRDP ("\nmodel\n{%f,%f,%f,%f}\n", rdp.model[0][0], rdp.model[0][1], rdp.model[0][2], rdp.model[0][3]); - FRDP ("{%f,%f,%f,%f}\n", rdp.model[1][0], rdp.model[1][1], rdp.model[1][2], rdp.model[1][3]); - FRDP ("{%f,%f,%f,%f}\n", rdp.model[2][0], rdp.model[2][1], rdp.model[2][2], rdp.model[2][3]); - FRDP ("{%f,%f,%f,%f}\n", rdp.model[3][0], rdp.model[3][1], rdp.model[3][2], rdp.model[3][3]); - FRDP ("\nproj\n{%f,%f,%f,%f}\n", rdp.proj[0][0], rdp.proj[0][1], rdp.proj[0][2], rdp.proj[0][3]); - FRDP ("{%f,%f,%f,%f}\n", rdp.proj[1][0], rdp.proj[1][1], rdp.proj[1][2], rdp.proj[1][3]); - FRDP ("{%f,%f,%f,%f}\n", rdp.proj[2][0], rdp.proj[2][1], rdp.proj[2][2], rdp.proj[2][3]); - FRDP ("{%f,%f,%f,%f}\n", rdp.proj[3][0], rdp.proj[3][1], rdp.proj[3][2], rdp.proj[3][3]); - FRDP ("\ncombined\n{%f,%f,%f,%f}\n", rdp.combined[0][0], rdp.combined[0][1], rdp.combined[0][2], rdp.combined[0][3]); - FRDP("{%f,%f,%f,%f}\n", rdp.combined[1][0], rdp.combined[1][1], rdp.combined[1][2], rdp.combined[1][3]); - FRDP("{%f,%f,%f,%f}\n", rdp.combined[2][0], rdp.combined[2][1], rdp.combined[2][2], rdp.combined[2][3]); - FRDP("{%f,%f,%f,%f}\n", rdp.combined[3][0], rdp.combined[3][1], rdp.combined[3][2], rdp.combined[3][3]); -#endif + WriteTrace(TraceRDP, TraceVerbose, "\nmodel\n{%f,%f,%f,%f}", rdp.model[0][0], rdp.model[0][1], rdp.model[0][2], rdp.model[0][3]); + WriteTrace(TraceRDP, TraceVerbose, "{%f,%f,%f,%f}", rdp.model[1][0], rdp.model[1][1], rdp.model[1][2], rdp.model[1][3]); + WriteTrace(TraceRDP, TraceVerbose, "{%f,%f,%f,%f}", rdp.model[2][0], rdp.model[2][1], rdp.model[2][2], rdp.model[2][3]); + WriteTrace(TraceRDP, TraceVerbose, "{%f,%f,%f,%f}", rdp.model[3][0], rdp.model[3][1], rdp.model[3][2], rdp.model[3][3]); + WriteTrace(TraceRDP, TraceVerbose, "\nproj\n{%f,%f,%f,%f}", rdp.proj[0][0], rdp.proj[0][1], rdp.proj[0][2], rdp.proj[0][3]); + WriteTrace(TraceRDP, TraceVerbose, "{%f,%f,%f,%f}", rdp.proj[1][0], rdp.proj[1][1], rdp.proj[1][2], rdp.proj[1][3]); + WriteTrace(TraceRDP, TraceVerbose, "{%f,%f,%f,%f}", rdp.proj[2][0], rdp.proj[2][1], rdp.proj[2][2], rdp.proj[2][3]); + WriteTrace(TraceRDP, TraceVerbose, "{%f,%f,%f,%f}", rdp.proj[3][0], rdp.proj[3][1], rdp.proj[3][2], rdp.proj[3][3]); + WriteTrace(TraceRDP, TraceVerbose, "\ncombined\n{%f,%f,%f,%f}", rdp.combined[0][0], rdp.combined[0][1], rdp.combined[0][2], rdp.combined[0][3]); + WriteTrace(TraceRDP, TraceVerbose, "{%f,%f,%f,%f}", rdp.combined[1][0], rdp.combined[1][1], rdp.combined[1][2], rdp.combined[1][3]); + WriteTrace(TraceRDP, TraceVerbose, "{%f,%f,%f,%f}", rdp.combined[2][0], rdp.combined[2][1], rdp.combined[2][2], rdp.combined[2][3]); + WriteTrace(TraceRDP, TraceVerbose, "{%f,%f,%f,%f}", rdp.combined[3][0], rdp.combined[3][1], rdp.combined[3][2], rdp.combined[3][3]); } typedef struct { @@ -484,7 +482,7 @@ static void uc9_mult_mpmtx() int num = 1 + ((rdp.cmd1 >> 24) & 0xFF); int src = -1024 + ((rdp.cmd1 >> 12) & 0xFFF); int dst = -1024 + (rdp.cmd1 & 0xFFF); - FRDP("uc9:mult_mpmtx from: %04lx to: %04lx n: %d\n", src, dst, num); + WriteTrace(TraceRDP, TraceDebug, "uc9:mult_mpmtx from: %04lx to: %04lx n: %d", src, dst, num); short * saddr = (short*)(gfx.DMEM + src); zSortVDest * daddr = (zSortVDest*)(gfx.DMEM + dst); int idx = 0; @@ -528,38 +526,38 @@ static void uc9_mult_mpmtx() daddr[i] = v; //memcpy(gfx.DMEM+dst+sizeof(zSortVDest)*i, &v, sizeof(zSortVDest)); - // FRDP("v%d x: %d, y: %d, z: %d -> sx: %d, sy: %d, w: %d, xi: %d, yi: %d, wi: %d, fog: %d\n", i, sx, sy, sz, v.sx, v.sy, v.invw, v.xi, v.yi, v.wi, v.fog); - FRDP("v%d x: %d, y: %d, z: %d -> sx: %04lx, sy: %04lx, invw: %08lx - %f, xi: %04lx, yi: %04lx, wi: %04lx, fog: %04lx\n", i, sx, sy, sz, v.sx, v.sy, v.invw, w, v.xi, v.yi, v.wi, v.fog); + // WriteTrace(TraceRDP, TraceDebug, "v%d x: %d, y: %d, z: %d -> sx: %d, sy: %d, w: %d, xi: %d, yi: %d, wi: %d, fog: %d", i, sx, sy, sz, v.sx, v.sy, v.invw, v.xi, v.yi, v.wi, v.fog); + WriteTrace(TraceRDP, TraceDebug, "v%d x: %d, y: %d, z: %d -> sx: %04lx, sy: %04lx, invw: %08lx - %f, xi: %04lx, yi: %04lx, wi: %04lx, fog: %04lx", i, sx, sy, sz, v.sx, v.sy, v.invw, w, v.xi, v.yi, v.wi, v.fog); } } static void uc9_link_subdl() { - LRDP("uc9:link_subdl IGNORED\n"); + WriteTrace(TraceRDP, TraceDebug, "uc9:link_subdl IGNORED"); } static void uc9_set_subdl() { - LRDP("uc9:set_subdl IGNORED\n"); + WriteTrace(TraceRDP, TraceDebug, "uc9:set_subdl IGNORED"); } static void uc9_wait_signal() { - LRDP("uc9:wait_signal IGNORED\n"); + WriteTrace(TraceRDP, TraceDebug, "uc9:wait_signal IGNORED"); } static void uc9_send_signal() { - LRDP("uc9:send_signal IGNORED\n"); + WriteTrace(TraceRDP, TraceDebug, "uc9:send_signal IGNORED"); } void uc9_movemem() { - LRDP("uc9:movemem\n"); + WriteTrace(TraceRDP, TraceDebug, "uc9:movemem"); int idx = rdp.cmd0 & 0x0E; int ofs = ((rdp.cmd0 >> 6) & 0x1ff) << 3; int len = (1 + ((rdp.cmd0 >> 15) & 0x1ff)) << 3; - FRDP("uc9:movemem ofs: %d, len: %d. ", ofs, len); + WriteTrace(TraceRDP, TraceDebug, "uc9:movemem ofs: %d, len: %d. ", ofs, len); int flag = rdp.cmd0 & 0x01; uint32_t addr = segoffset(rdp.cmd1); switch (idx) @@ -568,13 +566,13 @@ void uc9_movemem() if (flag == 0) { int dmem_addr = (idx << 3) + ofs; - FRDP("Load to DMEM. %08lx -> %08lx\n", addr, dmem_addr); + WriteTrace(TraceRDP, TraceDebug, "Load to DMEM. %08lx -> %08lx", addr, dmem_addr); memcpy(gfx.DMEM + dmem_addr, gfx.RDRAM + addr, len); } else { int dmem_addr = (idx << 3) + ofs; - FRDP("Load from DMEM. %08lx -> %08lx\n", dmem_addr, addr); + WriteTrace(TraceRDP, TraceDebug, "Load from DMEM. %08lx -> %08lx", dmem_addr, addr); memcpy(gfx.RDRAM + addr, gfx.DMEM + dmem_addr, len); } break; @@ -588,38 +586,36 @@ void uc9_movemem() switch (idx) { case 4: // model matrix - LRDP("Modelview load\n"); + WriteTrace(TraceRDP, TraceDebug, "Modelview load"); modelview_load(m); break; case 6: // projection matrix - LRDP("Projection load\n"); + WriteTrace(TraceRDP, TraceDebug, "Projection load"); projection_load(m); break; case 8: // projection matrix - LRDP("Combined load\n"); + WriteTrace(TraceRDP, TraceDebug, "Combined load"); rdp.update &= ~UPDATE_MULT_MAT; memcpy(rdp.combined, m, 64);; break; } -#ifdef EXTREME_LOGGING - FRDP ("{%f,%f,%f,%f}\n", m[0][0], m[0][1], m[0][2], m[0][3]); - FRDP ("{%f,%f,%f,%f}\n", m[1][0], m[1][1], m[1][2], m[1][3]); - FRDP ("{%f,%f,%f,%f}\n", m[2][0], m[2][1], m[2][2], m[2][3]); - FRDP ("{%f,%f,%f,%f}\n", m[3][0], m[3][1], m[3][2], m[3][3]); - FRDP ("\nmodel\n{%f,%f,%f,%f}\n", rdp.model[0][0], rdp.model[0][1], rdp.model[0][2], rdp.model[0][3]); - FRDP ("{%f,%f,%f,%f}\n", rdp.model[1][0], rdp.model[1][1], rdp.model[1][2], rdp.model[1][3]); - FRDP ("{%f,%f,%f,%f}\n", rdp.model[2][0], rdp.model[2][1], rdp.model[2][2], rdp.model[2][3]); - FRDP ("{%f,%f,%f,%f}\n", rdp.model[3][0], rdp.model[3][1], rdp.model[3][2], rdp.model[3][3]); - FRDP ("\nproj\n{%f,%f,%f,%f}\n", rdp.proj[0][0], rdp.proj[0][1], rdp.proj[0][2], rdp.proj[0][3]); - FRDP ("{%f,%f,%f,%f}\n", rdp.proj[1][0], rdp.proj[1][1], rdp.proj[1][2], rdp.proj[1][3]); - FRDP("{%f,%f,%f,%f}\n", rdp.proj[2][0], rdp.proj[2][1], rdp.proj[2][2], rdp.proj[2][3]); - FRDP("{%f,%f,%f,%f}\n", rdp.proj[3][0], rdp.proj[3][1], rdp.proj[3][2], rdp.proj[3][3]); -#endif + WriteTrace(TraceRDP, TraceVerbose, "{%f,%f,%f,%f}", m[0][0], m[0][1], m[0][2], m[0][3]); + WriteTrace(TraceRDP, TraceVerbose, "{%f,%f,%f,%f}", m[1][0], m[1][1], m[1][2], m[1][3]); + WriteTrace(TraceRDP, TraceVerbose, "{%f,%f,%f,%f}", m[2][0], m[2][1], m[2][2], m[2][3]); + WriteTrace(TraceRDP, TraceVerbose, "{%f,%f,%f,%f}", m[3][0], m[3][1], m[3][2], m[3][3]); + WriteTrace(TraceRDP, TraceVerbose, "\nmodel\n{%f,%f,%f,%f}", rdp.model[0][0], rdp.model[0][1], rdp.model[0][2], rdp.model[0][3]); + WriteTrace(TraceRDP, TraceVerbose, "{%f,%f,%f,%f}", rdp.model[1][0], rdp.model[1][1], rdp.model[1][2], rdp.model[1][3]); + WriteTrace(TraceRDP, TraceVerbose, "{%f,%f,%f,%f}", rdp.model[2][0], rdp.model[2][1], rdp.model[2][2], rdp.model[2][3]); + WriteTrace(TraceRDP, TraceVerbose, "{%f,%f,%f,%f}", rdp.model[3][0], rdp.model[3][1], rdp.model[3][2], rdp.model[3][3]); + WriteTrace(TraceRDP, TraceVerbose, "\nproj\n{%f,%f,%f,%f}", rdp.proj[0][0], rdp.proj[0][1], rdp.proj[0][2], rdp.proj[0][3]); + WriteTrace(TraceRDP, TraceVerbose, "{%f,%f,%f,%f}", rdp.proj[1][0], rdp.proj[1][1], rdp.proj[1][2], rdp.proj[1][3]); + WriteTrace(TraceRDP, TraceVerbose, "{%f,%f,%f,%f}", rdp.proj[2][0], rdp.proj[2][1], rdp.proj[2][2], rdp.proj[2][3]); + WriteTrace(TraceRDP, TraceVerbose, "{%f,%f,%f,%f}", rdp.proj[3][0], rdp.proj[3][1], rdp.proj[3][2], rdp.proj[3][3]); } break; case 10: - LRDP("Othermode - IGNORED\n"); + WriteTrace(TraceRDP, TraceDebug, "Othermode - IGNORED"); break; case 12: // VIEWPORT @@ -659,14 +655,14 @@ void uc9_movemem() rdp.geom_mode |= 0x0200; - FRDP("viewport scale(%d, %d, %d), trans(%d, %d, %d), from:%08lx\n", scale_x, scale_y, scale_z, + WriteTrace(TraceRDP, TraceDebug, "viewport scale(%d, %d, %d), trans(%d, %d, %d), from:%08lx", scale_x, scale_y, scale_z, trans_x, trans_y, trans_z, a); - FRDP("fog: multiplier: %f, offset: %f\n", rdp.fog_multiplier, rdp.fog_offset); + WriteTrace(TraceRDP, TraceDebug, "fog: multiplier: %f, offset: %f", rdp.fog_multiplier, rdp.fog_offset); } break; default: - FRDP("** UNKNOWN %d\n", idx); + WriteTrace(TraceRDP, TraceDebug, "** UNKNOWN %d", idx); } } diff --git a/Source/Glide64/ucode09rdp.h b/Source/Glide64/ucode09rdp.h index 27a3e6f67..587b55ad5 100644 --- a/Source/Glide64/ucode09rdp.h +++ b/Source/Glide64/ucode09rdp.h @@ -44,7 +44,7 @@ void uc9_rpdcmd() { uint32_t a = segoffset(rdp.cmd1) >> 2; - FRDP("uc9:rdpcmd addr: %08lx\n", a); + WriteTrace(TraceRDP, TraceDebug, "uc9:rdpcmd addr: %08lx", a); if (a) { rdp.LLE = 1; diff --git a/Source/Glide64/ucodeFB.h b/Source/Glide64/ucodeFB.h index 59661d3ea..bfb2571e2 100644 --- a/Source/Glide64/ucodeFB.h +++ b/Source/Glide64/ucodeFB.h @@ -69,7 +69,7 @@ static void fb_bg_copy() uint8_t imageFmt = ((uint8_t *)gfx.RDRAM)[(((addr + 11) << 1) + 0) ^ 3]; uint8_t imageSiz = ((uint8_t *)gfx.RDRAM)[(((addr + 11) << 1) + 1) ^ 3]; uint32_t imagePtr = segoffset(((uint32_t*)gfx.RDRAM)[(addr + 8) >> 1]); - FRDP("fb_bg_copy. fmt: %d, size: %d, imagePtr %08lx, main_ci: %08lx, cur_ci: %08lx \n", imageFmt, imageSiz, imagePtr, rdp.main_ci, rdp.frame_buffers[rdp.ci_count - 1].addr); + WriteTrace(TraceRDP, TraceDebug, "fb_bg_copy. fmt: %d, size: %d, imagePtr %08lx, main_ci: %08lx, cur_ci: %08lx ", imageFmt, imageSiz, imagePtr, rdp.main_ci, rdp.frame_buffers[rdp.ci_count - 1].addr); if (status == ci_main) { @@ -82,7 +82,7 @@ static void fb_bg_copy() { rdp.copy_ci_index = rdp.ci_count - 1; rdp.frame_buffers[rdp.copy_ci_index].status = ci_copy; - FRDP("rdp.frame_buffers[%d].status = ci_copy\n", rdp.copy_ci_index); + WriteTrace(TraceRDP, TraceDebug, "rdp.frame_buffers[%d].status = ci_copy", rdp.copy_ci_index); if (rdp.frame_buffers[rdp.copy_ci_index].addr != rdp.main_ci_bg) { @@ -91,11 +91,11 @@ static void fb_bg_copy() } else { - LRDP("motion blur!\n"); + WriteTrace(TraceRDP, TraceDebug, "motion blur!"); rdp.motionblur = TRUE; } - FRDP("Detect FB usage. texture addr is inside framebuffer: %08lx - %08lx \n", imagePtr, rdp.main_ci); + WriteTrace(TraceRDP, TraceDebug, "Detect FB usage. texture addr is inside framebuffer: %08lx - %08lx ", imagePtr, rdp.main_ci); } else if (imagePtr == rdp.zimg) { @@ -105,7 +105,7 @@ static void fb_bg_copy() rdp.tmpzimg = rdp.frame_buffers[rdp.ci_count - 1].addr; if (!rdp.copy_zi_index) rdp.copy_zi_index = rdp.ci_count - 1; - FRDP("rdp.frame_buffers[%d].status = ci_zcopy\n", rdp.copy_ci_index); + WriteTrace(TraceRDP, TraceDebug, "rdp.frame_buffers[%d].status = ci_zcopy", rdp.copy_ci_index); } } } @@ -123,7 +123,7 @@ static void fb_setscissor() if (cur_fb.height == 0 || (cur_fb.width >= rdp.scissor_o.lr_x - 1 && cur_fb.width <= rdp.scissor_o.lr_x + 1)) cur_fb.height = rdp.scissor_o.lr_y; } - FRDP("fb_setscissor. lr_x = %d, lr_y = %d, fb_width = %d, fb_height = %d\n", rdp.scissor_o.lr_x, rdp.scissor_o.lr_y, cur_fb.width, cur_fb.height); + WriteTrace(TraceRDP, TraceDebug, "fb_setscissor. lr_x = %d, lr_y = %d, fb_width = %d, fb_height = %d", rdp.scissor_o.lr_x, rdp.scissor_o.lr_y, cur_fb.width, cur_fb.height); } } @@ -159,7 +159,7 @@ static void fb_rect() uint32_t lr_y = minval(rdp.scissor_o.lr_y, (rdp.cmd0 & 0xFFF) >> 2); if (rdp.frame_buffers[rdp.ci_count - 1].height < lr_y) { - FRDP("fb_rect. ul_x: %d, lr_x: %d, fb_height: %d -> %d\n", ul_x, lr_x, rdp.frame_buffers[rdp.ci_count - 1].height, lr_y); + WriteTrace(TraceRDP, TraceDebug, "fb_rect. ul_x: %d, lr_x: %d, fb_height: %d -> %d", ul_x, lr_x, rdp.frame_buffers[rdp.ci_count - 1].height, lr_y); rdp.frame_buffers[rdp.ci_count - 1].height = lr_y; } } @@ -183,7 +183,7 @@ static void fb_settextureimage() uint32_t addr = segoffset(rdp.cmd1); if (tex_format == 0) { - FRDP("fb_settextureimage. fmt: %d, size: %d, imagePtr %08lx, main_ci: %08lx, cur_ci: %08lx \n", ((rdp.cmd0 >> 21) & 0x07), ((rdp.cmd0 >> 19) & 0x03), addr, rdp.main_ci, rdp.frame_buffers[rdp.ci_count - 1].addr); + WriteTrace(TraceRDP, TraceDebug, "fb_settextureimage. fmt: %d, size: %d, imagePtr %08lx, main_ci: %08lx, cur_ci: %08lx ", ((rdp.cmd0 >> 21) & 0x07), ((rdp.cmd0 >> 19) & 0x03), addr, rdp.main_ci, rdp.frame_buffers[rdp.ci_count - 1].addr); if (cur_fb.status == ci_main) { rdp.main_ci_last_tex_addr = addr; @@ -201,7 +201,7 @@ static void fb_settextureimage() cur_fb.status = ci_copy_self; rdp.scale_x = rdp.scale_x_bak; rdp.scale_y = rdp.scale_y_bak; - FRDP("rdp.frame_buffers[%d].status = ci_copy_self\n", rdp.ci_count - 1); + WriteTrace(TraceRDP, TraceDebug, "rdp.frame_buffers[%d].status = ci_copy_self", rdp.ci_count - 1); } else { @@ -209,11 +209,11 @@ static void fb_settextureimage() { rdp.copy_ci_index = rdp.ci_count - 1; cur_fb.status = ci_copy; - FRDP("rdp.frame_buffers[%d].status = ci_copy\n", rdp.copy_ci_index); + WriteTrace(TraceRDP, TraceDebug, "rdp.frame_buffers[%d].status = ci_copy", rdp.copy_ci_index); if ((rdp.main_ci_last_tex_addr >= cur_fb.addr) && (rdp.main_ci_last_tex_addr < (cur_fb.addr + cur_fb.width*cur_fb.height*cur_fb.size))) { - LRDP("motion blur!\n"); + WriteTrace(TraceRDP, TraceDebug, "motion blur!"); rdp.motionblur = TRUE; } else @@ -226,17 +226,17 @@ static void fb_settextureimage() { rdp.copy_ci_index = rdp.ci_count - 1; cur_fb.status = ci_aux_copy; - FRDP("rdp.frame_buffers[%d].status = ci_aux_copy\n", rdp.copy_ci_index); + WriteTrace(TraceRDP, TraceDebug, "rdp.frame_buffers[%d].status = ci_aux_copy", rdp.copy_ci_index); rdp.scale_x = 1.0f; rdp.scale_y = 1.0f; } else { cur_fb.status = ci_aux; - FRDP("rdp.frame_buffers[%d].status = ci_aux\n", rdp.copy_ci_index); + WriteTrace(TraceRDP, TraceDebug, "rdp.frame_buffers[%d].status = ci_aux", rdp.copy_ci_index); } } - FRDP("Detect FB usage. texture addr is inside framebuffer: %08lx - %08lx \n", addr, rdp.main_ci); + WriteTrace(TraceRDP, TraceDebug, "Detect FB usage. texture addr is inside framebuffer: %08lx - %08lx ", addr, rdp.main_ci); } ///* else if ((cur_fb.status != ci_main) && (addr >= rdp.zimg && addr < rdp.zimg_end)) @@ -244,7 +244,7 @@ static void fb_settextureimage() cur_fb.status = ci_zcopy; if (!rdp.copy_zi_index) rdp.copy_zi_index = rdp.ci_count - 1; - FRDP("fb_settextureimage. rdp.frame_buffers[%d].status = ci_zcopy\n", rdp.ci_count - 1); + WriteTrace(TraceRDP, TraceDebug, "fb_settextureimage. rdp.frame_buffers[%d].status = ci_zcopy", rdp.ci_count - 1); } //*/ else if ((rdp.maincimg[0].width > 64) && (addr >= rdp.maincimg[0].addr) && (addr < (rdp.maincimg[0].addr + rdp.maincimg[0].width*rdp.maincimg[0].height * 2))) @@ -252,20 +252,20 @@ static void fb_settextureimage() if (cur_fb.status != ci_main) { cur_fb.status = ci_old_copy; - FRDP("rdp.frame_buffers[%d].status = ci_old_copy 1, addr:%08lx\n", rdp.ci_count - 1, rdp.last_drawn_ci_addr); + WriteTrace(TraceRDP, TraceDebug, "rdp.frame_buffers[%d].status = ci_old_copy 1, addr:%08lx", rdp.ci_count - 1, rdp.last_drawn_ci_addr); } rdp.read_previous_ci = TRUE; - LRDP("read_previous_ci = TRUE\n"); + WriteTrace(TraceRDP, TraceDebug, "read_previous_ci = TRUE"); } else if ((addr >= rdp.last_drawn_ci_addr) && (addr < (rdp.last_drawn_ci_addr + rdp.maincimg[0].width*rdp.maincimg[0].height * 2))) { if (cur_fb.status != ci_main) { cur_fb.status = ci_old_copy; - FRDP("rdp.frame_buffers[%d].status = ci_old_copy 2, addr:%08lx\n", rdp.ci_count - 1, rdp.last_drawn_ci_addr); + WriteTrace(TraceRDP, TraceDebug, "rdp.frame_buffers[%d].status = ci_old_copy 2, addr:%08lx", rdp.ci_count - 1, rdp.last_drawn_ci_addr); } rdp.read_previous_ci = TRUE; - LRDP("read_previous_ci = TRUE\n"); + WriteTrace(TraceRDP, TraceDebug, "read_previous_ci = TRUE"); } } else if (fb_hwfbe_enabled && (cur_fb.status == ci_main)) @@ -275,14 +275,14 @@ static void fb_settextureimage() rdp.copy_ci_index = rdp.ci_count - 1; rdp.black_ci_index = rdp.ci_count - 1; cur_fb.status = ci_copy_self; - FRDP("rdp.frame_buffers[%d].status = ci_copy_self\n", rdp.ci_count - 1); + WriteTrace(TraceRDP, TraceDebug, "rdp.frame_buffers[%d].status = ci_copy_self", rdp.ci_count - 1); } } } if (cur_fb.status == ci_unknown) { cur_fb.status = ci_aux; - FRDP("fb_settextureimage. rdp.frame_buffers[%d].status = ci_aux\n", rdp.ci_count - 1); + WriteTrace(TraceRDP, TraceDebug, "fb_settextureimage. rdp.frame_buffers[%d].status = ci_aux", rdp.ci_count - 1); } } @@ -291,7 +291,7 @@ static void fb_loadtxtr() if (rdp.frame_buffers[rdp.ci_count - 1].status == ci_unknown) { rdp.frame_buffers[rdp.ci_count - 1].status = ci_aux; - FRDP("rdp.frame_buffers[%d].status = ci_aux\n", rdp.ci_count - 1); + WriteTrace(TraceRDP, TraceDebug, "rdp.frame_buffers[%d].status = ci_aux", rdp.ci_count - 1); } } @@ -299,17 +299,17 @@ static void fb_setdepthimage() { rdp.zimg = segoffset(rdp.cmd1) & BMASK; rdp.zimg_end = rdp.zimg + rdp.ci_width*rdp.ci_height * 2; - FRDP("fb_setdepthimage. addr %08lx - %08lx\n", rdp.zimg, rdp.zimg_end); + WriteTrace(TraceRDP, TraceDebug, "fb_setdepthimage. addr %08lx - %08lx", rdp.zimg, rdp.zimg_end); if (rdp.zimg == rdp.main_ci) //strange, but can happen { rdp.frame_buffers[rdp.main_ci_index].status = ci_unknown; if (rdp.main_ci_index < rdp.ci_count) { rdp.frame_buffers[rdp.main_ci_index].status = ci_zimg; - FRDP("rdp.frame_buffers[%d].status = ci_zimg\n", rdp.main_ci_index); + WriteTrace(TraceRDP, TraceDebug, "rdp.frame_buffers[%d].status = ci_zimg", rdp.main_ci_index); rdp.main_ci_index++; rdp.frame_buffers[rdp.main_ci_index].status = ci_main; - FRDP("rdp.frame_buffers[%d].status = ci_main\n", rdp.main_ci_index); + WriteTrace(TraceRDP, TraceDebug, "rdp.frame_buffers[%d].status = ci_main", rdp.main_ci_index); rdp.main_ci = rdp.frame_buffers[rdp.main_ci_index].addr; rdp.main_ci_end = rdp.main_ci + (rdp.frame_buffers[rdp.main_ci_index].width * rdp.frame_buffers[rdp.main_ci_index].height * rdp.frame_buffers[rdp.main_ci_index].size); for (int i = rdp.main_ci_index + 1; i < rdp.ci_count; i++) @@ -318,7 +318,7 @@ static void fb_setdepthimage() if (fb.addr == rdp.main_ci) { fb.status = ci_main; - FRDP("rdp.frame_buffers[%d].status = ci_main\n", i); + WriteTrace(TraceRDP, TraceDebug, "rdp.frame_buffers[%d].status = ci_main", i); } } } @@ -333,7 +333,7 @@ static void fb_setdepthimage() if ((fb.addr == rdp.zimg) && (fb.status == ci_aux || fb.status == ci_useless)) { fb.status = ci_zimg; - FRDP("rdp.frame_buffers[%d].status = ci_zimg\n", i); + WriteTrace(TraceRDP, TraceDebug, "rdp.frame_buffers[%d].status = ci_zimg", i); } } } @@ -361,19 +361,19 @@ static void fb_setcolorimage() if (rdp.frame_buffers[0].addr == rdp.cimg) rdp.frame_buffers[0].height = rdp.scissor_o.lr_y; */ - FRDP("fb_setcolorimage. width: %d, height: %d, fmt: %d, size: %d, addr %08lx\n", cur_fb.width, cur_fb.height, cur_fb.format, cur_fb.size, cur_fb.addr); + WriteTrace(TraceRDP, TraceDebug, "fb_setcolorimage. width: %d, height: %d, fmt: %d, size: %d, addr %08lx", cur_fb.width, cur_fb.height, cur_fb.format, cur_fb.size, cur_fb.addr); if (rdp.cimg == rdp.zimg) { cur_fb.status = ci_zimg; rdp.zimg_end = rdp.zimg + cur_fb.width*rdp.scissor_o.lr_y * 2; - FRDP("rdp.frame_buffers[%d].status = ci_zimg\n", rdp.ci_count); + WriteTrace(TraceRDP, TraceDebug, "rdp.frame_buffers[%d].status = ci_zimg", rdp.ci_count); } else if (rdp.cimg == rdp.tmpzimg) { cur_fb.status = ci_zcopy; if (!rdp.copy_zi_index) rdp.copy_zi_index = rdp.ci_count - 1; - FRDP("rdp.frame_buffers[%d].status = ci_zcopy\n", rdp.ci_count); + WriteTrace(TraceRDP, TraceDebug, "rdp.frame_buffers[%d].status = ci_zcopy", rdp.ci_count); } else if (rdp.main_ci != 0) { @@ -383,7 +383,7 @@ static void fb_setcolorimage() rdp.main_ci_index = rdp.ci_count; rdp.main_ci_end = rdp.cimg + ((cur_fb.width * cur_fb.height) << cur_fb.size >> 1); cur_fb.status = ci_main; - FRDP("rdp.frame_buffers[%d].status = ci_main\n", rdp.ci_count); + WriteTrace(TraceRDP, TraceDebug, "rdp.frame_buffers[%d].status = ci_main", rdp.ci_count); } else // status is not known yet { @@ -398,7 +398,7 @@ static void fb_setcolorimage() rdp.main_ci_end = rdp.cimg + ((cur_fb.width * cur_fb.height) << cur_fb.size >> 1); rdp.main_ci_index = rdp.ci_count; cur_fb.status = ci_main; - FRDP("rdp.frame_buffers[%d].status = ci_main\n", rdp.ci_count); + WriteTrace(TraceRDP, TraceDebug, "rdp.frame_buffers[%d].status = ci_main", rdp.ci_count); } else { @@ -411,7 +411,7 @@ static void fb_setcolorimage() { rdp.frame_buffers[rdp.ci_count - 1].status = ci_aux; rdp.frame_buffers[rdp.ci_count - 1].changed = 0; - FRDP("rdp.frame_buffers[%d].status = ci_aux\n", rdp.ci_count - 1); + WriteTrace(TraceRDP, TraceDebug, "rdp.frame_buffers[%d].status = ci_aux", rdp.ci_count - 1); } else { @@ -427,7 +427,7 @@ static void fb_setcolorimage() } } //*/ - FRDP("rdp.frame_buffers[%d].status = %s\n", rdp.ci_count - 1, CIStatus[rdp.frame_buffers[rdp.ci_count - 1].status]); + WriteTrace(TraceRDP, TraceDebug, "rdp.frame_buffers[%d].status = %s", rdp.ci_count - 1, CIStatus[rdp.frame_buffers[rdp.ci_count - 1].status]); } } if (cur_fb.status == ci_main)