dspspy: just some more cleanup

git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@3420 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
Shawn Hoffman 2009-06-13 05:53:07 +00:00
parent b304332469
commit c1b18457c4
2 changed files with 46 additions and 38 deletions

View File

@ -53,7 +53,7 @@ void CON_Printf(int x, int y, const char* fmt, ...)
printf("\x1b[%d;%dH%s", y, x, tmpbuf); printf("\x1b[%d;%dH%s", y, x, tmpbuf);
} }
void CON_SetColor(u8 foreground, u8 background = 0) void CON_SetColor(u8 foreground, u8 background = CON_BLACK)
{ {
u8 bright = foreground & CON_BRIGHT ? 1 : 0; u8 bright = foreground & CON_BRIGHT ? 1 : 0;
@ -63,4 +63,10 @@ void CON_SetColor(u8 foreground, u8 background = 0)
printf("\x1b[%d;%d;%dm", 30+foreground, bright, 40+background); printf("\x1b[%d;%d;%dm", 30+foreground, bright, 40+background);
} }
void CON_Clear()
{
// Escape code to clear the whole screen.
printf("\x1b[2J");
}
#endif #endif

View File

@ -139,7 +139,7 @@ void print_reg_block(int x, int y, int sel, const u16 *regs, const u16 *compare_
{ {
// Do not even display the loop stack registers. // Do not even display the loop stack registers.
const int reg = j * 8 + i; const int reg = j * 8 + i;
CON_SetColor(sel == reg ? CON_BRIGHT_YELLOW : CON_GREEN, CON_BLACK); CON_SetColor(sel == reg ? CON_BRIGHT_YELLOW : CON_GREEN);
CON_Printf(x + j * 8, i + y, "%02x ", reg); CON_Printf(x + j * 8, i + y, "%02x ", reg);
if (j != 1 || i < 4) if (j != 1 || i < 4)
{ {
@ -147,15 +147,15 @@ void print_reg_block(int x, int y, int sel, const u16 *regs, const u16 *compare_
for (int k = 0; k < 4; k++) for (int k = 0; k < 4; k++)
{ {
if (sel == reg && k == small_cursor_x && ui_mode == UIM_EDIT_REG) if (sel == reg && k == small_cursor_x && ui_mode == UIM_EDIT_REG)
CON_SetColor(CON_BRIGHT_CYAN, color1); CON_SetColor(CON_BRIGHT_CYAN);
else else
CON_SetColor(color1, CON_BLACK); CON_SetColor(color1);
CON_Printf(x + 3 + j * 8 + k, i + y, "%01x", (regs[reg] >> ((3 - k) * 4)) & 0xf); CON_Printf(x + 3 + j * 8 + k, i + y, "%01x", (regs[reg] >> ((3 - k) * 4)) & 0xf);
} }
} }
} }
} }
CON_SetColor(CON_WHITE, CON_BLACK); CON_SetColor(CON_WHITE);
CON_Printf(x+2, y+9, "ACC0: %02x %04x %04x", regs[DSP_REG_ACH0]&0xff, regs[DSP_REG_ACM0], regs[DSP_REG_ACL0]); CON_Printf(x+2, y+9, "ACC0: %02x %04x %04x", regs[DSP_REG_ACH0]&0xff, regs[DSP_REG_ACM0], regs[DSP_REG_ACL0]);
CON_Printf(x+2, y+10, "ACC1: %02x %04x %04x", regs[DSP_REG_ACH1]&0xff, regs[DSP_REG_ACM1], regs[DSP_REG_ACL1]); CON_Printf(x+2, y+10, "ACC1: %02x %04x %04x", regs[DSP_REG_ACH1]&0xff, regs[DSP_REG_ACM1], regs[DSP_REG_ACL1]);
@ -171,7 +171,7 @@ void print_regs(int _step, int _dsp_steps)
print_reg_block(0, 2, _step == 0 ? cursor_reg : -1, regs, regs2); print_reg_block(0, 2, _step == 0 ? cursor_reg : -1, regs, regs2);
print_reg_block(33, 2, -1, regs2, regs); print_reg_block(33, 2, -1, regs2, regs);
CON_SetColor(CON_WHITE, CON_BLACK); CON_SetColor(CON_WHITE);
CON_Printf(33, 17, "%i / %i ", _step + 1, _dsp_steps); CON_Printf(33, 17, "%i / %i ", _step + 1, _dsp_steps);
return; return;
@ -179,9 +179,9 @@ void print_regs(int _step, int _dsp_steps)
static int count = 0; static int count = 0;
int x = 0, y = 16; int x = 0, y = 16;
if (count > 2) if (count > 2)
printf("\x1b[2J"); // Clear CON_Clear();
count = 0; count = 0;
CON_SetColor(CON_WHITE, CON_BLACK); CON_SetColor(CON_WHITE);
for (int i = 0x0; i < 0xf70 ; i++) for (int i = 0x0; i < 0xf70 ; i++)
{ {
if (dspbufC[i] != mem_dump[i]) if (dspbufC[i] != mem_dump[i])
@ -365,38 +365,48 @@ void dump_all_ucodes(void)
} }
} }
void init_video(void) // Shove common, un-dsp-ish init things here
void InitGeneral()
{ {
// Initialise the video system
VIDEO_Init(); VIDEO_Init();
switch (VIDEO_GetCurrentTvMode())
{
case VI_NTSC:
rmode = &TVNtsc480IntDf;
break;
case VI_PAL:
rmode = &TVPal528IntDf;
break;
case VI_MPAL:
rmode = &TVMpal480IntDf;
break;
default:
rmode = &TVNtsc480IntDf;
break;
}
xfb = SYS_AllocateFramebuffer(rmode); // This function initialises the attached controllers
PAD_Init();
#ifdef HW_RVL
WPAD_Init();
#endif
// Obtain the preferred video mode from the system
// This will correspond to the settings in the Wii menu
rmode = VIDEO_GetPreferredMode(NULL);
// Allocate memory for the display in the uncached region
xfb = MEM_K0_TO_K1(SYS_AllocateFramebuffer(rmode));
// Set up the video registers with the chosen mode
VIDEO_Configure(rmode); VIDEO_Configure(rmode);
// Tell the video hardware where our display memory is
VIDEO_SetNextFramebuffer(xfb); VIDEO_SetNextFramebuffer(xfb);
// Make the display visible
VIDEO_SetBlack(FALSE); VIDEO_SetBlack(FALSE);
// Flush the video register changes to the hardware
VIDEO_Flush(); VIDEO_Flush();
// Wait for Video setup to complete
VIDEO_WaitVSync(); VIDEO_WaitVSync();
if (rmode->viTVMode & VI_NON_INTERLACE)
VIDEO_WaitVSync();
// Initialise the console, required for printf
CON_Init(xfb, 20, 64, rmode->fbWidth, rmode->xfbHeight, rmode->fbWidth * VI_DISPLAY_PIX_SZ);
// Initialize FAT so we can write to SD.
fatInit(8, false);
} }
int main() int main()
{ {
init_video(); InitGeneral();
CON_Init(xfb, 20, 64, rmode->fbWidth, rmode->xfbHeight, rmode->fbWidth * 2);
ui_mode = UIM_SEL; ui_mode = UIM_SEL;
@ -411,15 +421,6 @@ int main()
// Initialize DSP. // Initialize DSP.
real_dsp.Init(); real_dsp.Init();
// Initialize FAT so we can write to SD.
fatInit(8, false);
// Both GC and Wii controls.
PAD_Init();
#ifdef HW_RVL
WPAD_Init();
#endif
int show_step = 0; int show_step = 0;
while (true) while (true)
@ -480,7 +481,7 @@ int main()
if(curUcode == NUM_UCODES) if(curUcode == NUM_UCODES)
curUcode = 0; curUcode = 0;
// Reset step counters for since we're in a new ucode. // Reset step counters since we're in a new ucode.
show_step = 0; show_step = 0;
dsp_steps = 0; dsp_steps = 0;
@ -541,7 +542,8 @@ int main()
} }
#ifdef HW_RVL #ifdef HW_RVL
// Probably could offer to save to memcard (sd gecko) but i dont have one so meh // Probably could offer to save to sd gecko or something on gc...
// The future is web-based reporting ;)
if (WPAD_ButtonsDown(0) & WPAD_BUTTON_2) if (WPAD_ButtonsDown(0) & WPAD_BUTTON_2)
{ {
dump_all_ucodes(); dump_all_ucodes();