project64/Source/Project64/N64 System/C Core/r4300i Registers.cpp

1208 lines
39 KiB
C++

#include "stdafx.h"
/*
* Project 64 - A Nintendo 64 emulator.
*
* (c) Copyright 2001 zilmar (zilmar@emulation64.com) and
* Jabo (jabo@emulation64.com).
*
* pj64 homepage: www.pj64.net
*
* Permission to use, copy, modify and distribute Project64 in both binary and
* source form, for non-commercial purposes, is hereby granted without fee,
* providing that this license information and copyright notice appear with
* all copies and any derived work.
*
* This software is provided 'as-is', without any express or implied
* warranty. In no event shall the authors be held liable for any damages
* arising from the use of this software.
*
* Project64 is freeware for PERSONAL USE only. Commercial users should
* seek permission of the copyright holders first. Commercial use includes
* charging money for Project64 or software derived from Project64.
*
* The copyright holders request that bug fixes and improvements to the code
* should be forwarded to them so if they want them.
*
*/
void __cdecl UpdateCurrentR4300iRegisterPanel ( void ) {
}
#ifdef OLD_CODE
#if (!defined(EXTERNAL_RELEASE))
#include <windows.h>
#include <commctrl.h>
#include <stdio.h>
#include "main.h"
#include "CPU.h"
#include "r4300i Registers.h"
#define GeneralPurpose 1
#define ControlProcessor0 2
#define FloatingRegisters 3
#define SpecialRegister 4
#define RDRAMRegisters 5
#define SPRegisters 6
#define MIPSInterface 7
#define VideoInterface 8
#define AudioInterface 9
#define PeripheralInterface 10
#define RDRAMInterface 11
#define SerialInterface 12
#define IDC_TAB_CONTROL 1000
void Create_R4300i_Register_Window ( int );
void PaintR4300iAIPanel ( HWND );
void PaintR4300iCP0Panel ( HWND );
void PaintR4300iFPRPanel ( HWND );
void PaintR4300iGPRPanel ( HWND );
void PaintR4300iMIPanel ( HWND );
void PaintR4300iRDRamPanel ( HWND );
void PaintR4300iPIPanel ( HWND );
void PaintR4300iRIPanel ( HWND );/*
* Project 64 - A Nintendo 64 emulator.
*
* (c) Copyright 2001 zilmar (zilmar@emulation64.com) and
* Jabo (jabo@emulation64.com).
*
* pj64 homepage: www.pj64.net
*
* Permission to use, copy, modify and distribute Project64 in both binary and
* source form, for non-commercial purposes, is hereby granted without fee,
* providing that this license information and copyright notice appear with
* all copies and any derived work.
*
* This software is provided 'as-is', without any express or implied
* warranty. In no event shall the authors be held liable for any damages
* arising from the use of this software.
*
* Project64 is freeware for PERSONAL USE only. Commercial users should
* seek permission of the copyright holders first. Commercial use includes
* charging money for Project64 or software derived from Project64.
*
* The copyright holders request that bug fixes and improvements to the code
* should be forwarded to them so if they want them.
*
*/
void PaintR4300iSIPanel ( HWND );
void PaintR4300iSPPanel ( HWND );
void PaintR4300iSpecialPanel ( HWND );
void PaintR4300iMIPanel ( HWND );
void PaintR4300iVIPanel ( HWND );
void PaintR4300iRIPanel ( HWND );
void SetupR4300iAIPanel ( HWND );
void SetupR4300iCP0Panel ( HWND );
void SetupR4300iFPRPanel ( HWND );
void SetupR4300iGPRPanel ( HWND );
void SetupR4300iMIPanel ( HWND );
void SetupR4300iRDRamPanel ( HWND );
void SetupR4300iPIPanel ( HWND );
void SetupR4300iRIPanel ( HWND );
void SetupR4300iSIPanel ( HWND );
void SetupR4300iSPPanel ( HWND );
void SetupR4300iSpecialPanel ( HWND );
void SetupR4300iVIPanel ( HWND );
void SetupR4300iRegistersMain ( HWND );
void ShowR4300iRegisterPanel ( int );
LRESULT CALLBACK RefreshR4300iRegProc ( HWND, UINT, WPARAM, LPARAM );
LRESULT CALLBACK R4300i_Registers_Proc ( HWND, UINT, WPARAM, LPARAM );
HWND R4300i_Registers_hDlg, hTab, hStatic, hGPR[32], hCP0[32], hFPR[32], hSpecial[6],
hRDRam[10], hSP[10], hMI[4], hVI[14], hAI[6], hPI[13], hRI[8], hSI[4];
int InR4300iRegisterWindow = FALSE;
FARPROC r4300iRegRefreshProc;
void Create_R4300i_Register_Window ( int Child ) {
DWORD ThreadID;
if ( Child ) {
InR4300iRegisterWindow = TRUE;
DialogBox( hInst, "BLANK", NULL,(DLGPROC) R4300i_Registers_Proc );
InR4300iRegisterWindow = FALSE;
} else {
if (!InR4300iRegisterWindow) {
CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)Create_R4300i_Register_Window,
(LPVOID)TRUE,0, &ThreadID);
} else {
SetForegroundWindow(R4300i_Registers_hDlg);
}
}
}
void __cdecl Enter_R4300i_Register_Window ( void ) {
if (!HaveDebugger) { return; }
Create_R4300i_Register_Window ( FALSE );
}
void HideR4300iRegisterPanel ( int Panel) {
int count;
switch( Panel ) {
case GeneralPurpose:
for (count = 0; count < 32;count ++) { ShowWindow(hGPR[count],FALSE); }
break;
case ControlProcessor0:
for (count = 0; count < 32;count ++) { ShowWindow(hCP0[count],FALSE); }
break;
case FloatingRegisters:
for (count = 0; count < 32;count ++) { ShowWindow(hFPR[count],FALSE); }
break;
case SpecialRegister:
for (count = 0; count < 6;count ++) { ShowWindow(hSpecial[count],FALSE); }
break;
case RDRAMRegisters:
for (count = 0; count < 10;count ++) { ShowWindow(hRDRam[count],FALSE); }
break;
case SPRegisters:
for (count = 0; count < 10;count ++) { ShowWindow(hSP[count],FALSE); }
break;
case MIPSInterface:
for (count = 0; count < 4;count ++) { ShowWindow(hMI[count],FALSE); }
break;
case VideoInterface:
for (count = 0; count < 14;count ++) { ShowWindow(hVI[count],FALSE); }
break;
case AudioInterface:
for (count = 0; count < 6;count ++) { ShowWindow(hAI[count],FALSE); }
break;
case PeripheralInterface:
for (count = 0; count < 13;count ++) { ShowWindow(hPI[count],FALSE); }
break;
case RDRAMInterface:
for (count = 0; count < 13;count ++) { ShowWindow(hRI[count],FALSE); }
break;
case SerialInterface:
for (count = 0; count < 4;count ++) { ShowWindow(hSI[count],FALSE); }
break;
}
}
void PaintR4300iAIPanel (HWND hWnd) {
PAINTSTRUCT ps;
RECT rcBox;
HFONT hOldFont;
int OldBkMode;
BeginPaint( hWnd, &ps );
rcBox.left = 184;
rcBox.top = 44;
rcBox.right = 450;
rcBox.bottom = 250;
DrawEdge( ps.hdc, &rcBox, EDGE_ETCHED, BF_RECT );
hOldFont = SelectObject( ps.hdc,
GetStockObject(DEFAULT_GUI_FONT) );
OldBkMode = SetBkMode( ps.hdc, TRANSPARENT );
TextOut( ps.hdc, 207,66,"AI_DRAM_ADDR_REG:",17);
TextOut( ps.hdc, 207,96,"AI_LEN_REG:",11);
TextOut( ps.hdc, 207,126,"AI_CONTROL_REG:",15);
TextOut( ps.hdc, 207,156,"AI_STATUS_REG:",14);
TextOut( ps.hdc, 207,186,"AI_DACRATE_REG:",15);
TextOut( ps.hdc, 207,216,"AI_BITRATE_REG:",15);
SelectObject( ps.hdc,hOldFont );
SetBkMode( ps.hdc, OldBkMode );
EndPaint( hWnd, &ps );
}
void PaintR4300iCP0Panel (HWND hWnd) {
PAINTSTRUCT ps;
RECT rcBox;
HFONT hOldFont;
int OldBkMode;
BeginPaint( hWnd, &ps );
rcBox.left = 10;
rcBox.top = 34;
rcBox.right = 650;
rcBox.bottom = 270;
DrawEdge( ps.hdc, &rcBox, EDGE_ETCHED, BF_RECT );
hOldFont = SelectObject( ps.hdc,
GetStockObject(DEFAULT_GUI_FONT) );
OldBkMode = SetBkMode( ps.hdc, TRANSPARENT );
TextOut( ps.hdc, 55,49,"Index:",6);
TextOut( ps.hdc, 55,73,"Random:",7);
TextOut( ps.hdc, 55,97,"EntryLo0:",9);
TextOut( ps.hdc, 55,121,"EntryLo1:",9);
TextOut( ps.hdc, 55,145,"Context:",8);
TextOut( ps.hdc, 55,169,"PageMask:",9);
TextOut( ps.hdc, 55,193,"Wired:",6);
TextOut( ps.hdc, 55,217,"BadVaddr:",9);
TextOut( ps.hdc, 55,241,"Count:",6);
TextOut( ps.hdc, 260,49,"EntryHi:",8);
TextOut( ps.hdc, 260,73,"Compare:",8);
TextOut( ps.hdc, 260,97,"Status:",7);
TextOut( ps.hdc, 260,121,"Cause:",6);
TextOut( ps.hdc, 260,145,"EPC:",4);
TextOut( ps.hdc, 260,169,"PRId:",5);
TextOut( ps.hdc, 260,193,"Config:",7);
TextOut( ps.hdc, 260,217,"LLAddr:",7);
TextOut( ps.hdc, 455,49,"WatchLo:",8);
TextOut( ps.hdc, 455,73,"WatchHi:",8);
TextOut( ps.hdc, 455,97,"XContext:",9);
TextOut( ps.hdc, 455,121,"Parity Error:",13);
TextOut( ps.hdc, 455,145,"Cache Error:",12);
TextOut( ps.hdc, 455,169,"TagLo:",6);
TextOut( ps.hdc, 455,193,"TagHi:",6);
TextOut( ps.hdc, 455,217,"ErrorEPC:",9);
SelectObject( ps.hdc,hOldFont );
SetBkMode( ps.hdc, OldBkMode );
EndPaint( hWnd, &ps );
}
void PaintR4300iFPRPanel (HWND hWnd) {
PAINTSTRUCT ps;
RECT rcBox;
HFONT hOldFont;
int OldBkMode;
BeginPaint( hWnd, &ps );
rcBox.left = 10;
rcBox.top = 29;
rcBox.right = 650;
rcBox.bottom = 275;
DrawEdge( ps.hdc, &rcBox, EDGE_ETCHED, BF_RECT );
hOldFont = SelectObject( ps.hdc,
GetStockObject(DEFAULT_GUI_FONT) );
OldBkMode = SetBkMode( ps.hdc, TRANSPARENT );
TextOut( ps.hdc, 25,46," Reg 0:",7);
TextOut( ps.hdc, 25,66," Reg 1:",7);
TextOut( ps.hdc, 25,86," Reg 2:",7);
TextOut( ps.hdc, 25,106," Reg 3:",7);
TextOut( ps.hdc, 25,126," Reg 4:",7);
TextOut( ps.hdc, 25,146," Reg 5:",7);
TextOut( ps.hdc, 25,166," Reg 6:",7);
TextOut( ps.hdc, 25,186," Reg 7:",7);
TextOut( ps.hdc, 25,206," Reg 8:",7);
TextOut( ps.hdc, 25,226," Reg 9:",7);
TextOut( ps.hdc, 25,246,"Reg 10:",7);
TextOut( ps.hdc, 240,46,"Reg 11:",7);
TextOut( ps.hdc, 240,66,"Reg 12:",7);
TextOut( ps.hdc, 240,86,"Reg 13:",7);
TextOut( ps.hdc, 240,106,"Reg 14:",7);
TextOut( ps.hdc, 240,126,"Reg 15:",7);
TextOut( ps.hdc, 240,146,"Reg 16:",7);
TextOut( ps.hdc, 240,166,"Reg 17:",7);
TextOut( ps.hdc, 240,186,"Reg 18:",7);
TextOut( ps.hdc, 240,206,"Reg 19:",7);
TextOut( ps.hdc, 240,226,"Reg 20:",7);
TextOut( ps.hdc, 240,246,"Reg 21:",7);
TextOut( ps.hdc, 450,46,"Reg 22:",7);
TextOut( ps.hdc, 450,66,"Reg 23:",7);
TextOut( ps.hdc, 450,86,"Reg 24:",7);
TextOut( ps.hdc, 450,106,"Reg 25:",7);
TextOut( ps.hdc, 450,126,"Reg 26:",7);
TextOut( ps.hdc, 450,146,"Reg 27:",7);
TextOut( ps.hdc, 450,166,"Reg 28:",7);
TextOut( ps.hdc, 450,186,"Reg 29:",7);
TextOut( ps.hdc, 450,206,"Reg 30:",7);
TextOut( ps.hdc, 450,226,"Reg 31:",7);
SelectObject( ps.hdc,hOldFont );
SetBkMode( ps.hdc, OldBkMode );
EndPaint( hWnd, &ps );
}
void PaintR4300iGPRPanel (HWND hWnd) {
PAINTSTRUCT ps;
RECT rcBox;
HFONT hOldFont;
int OldBkMode;
BeginPaint( hWnd, &ps );
rcBox.left = 10;
rcBox.top = 29;
rcBox.right = 650;
rcBox.bottom = 275;
DrawEdge( ps.hdc, &rcBox, EDGE_ETCHED, BF_RECT );
hOldFont = SelectObject( ps.hdc,
GetStockObject(DEFAULT_GUI_FONT) );
OldBkMode = SetBkMode( ps.hdc, TRANSPARENT );
TextOut( ps.hdc, 20,46,"R0 - Reg 0:",11);
TextOut( ps.hdc, 20,66,"AT - Reg 1:",11);
TextOut( ps.hdc, 20,86,"V0 - Reg 2:",11);
TextOut( ps.hdc, 20,106,"V1 - Reg 3:",11);
TextOut( ps.hdc, 20,126,"A0 - Reg 4:",11);
TextOut( ps.hdc, 20,146,"A1 - Reg 5:",11);
TextOut( ps.hdc, 20,166,"A2 - Reg 6:",11);
TextOut( ps.hdc, 20,186,"A3 - Reg 7:",11);
TextOut( ps.hdc, 20,206,"T0 - Reg 8:",11);
TextOut( ps.hdc, 20,226,"T1 - Reg 9:",11);
TextOut( ps.hdc, 20,246,"T2 - Reg 10:",12);
TextOut( ps.hdc, 225,46,"T3 - Reg 11:",12);
TextOut( ps.hdc, 225,66,"T4 - Reg 12:",12);
TextOut( ps.hdc, 225,86,"T5 - Reg 13:",12);
TextOut( ps.hdc, 225,106,"T6 - Reg 14:",12);
TextOut( ps.hdc, 225,126,"T7 - Reg 15:",12);
TextOut( ps.hdc, 225,146,"S0 - Reg 16:",12);
TextOut( ps.hdc, 225,166,"S1 - Reg 17:",12);
TextOut( ps.hdc, 225,186,"S2 - Reg 18:",12);
TextOut( ps.hdc, 225,206,"S3 - Reg 19:",12);
TextOut( ps.hdc, 225,226,"S4 - Reg 20:",12);
TextOut( ps.hdc, 225,246,"S5 - Reg 21:",12);
TextOut( ps.hdc, 435,46,"S6 - Reg 22:",12);
TextOut( ps.hdc, 435,66,"S7 - Reg 23:",12);
TextOut( ps.hdc, 435,86,"T8 - Reg 24:",12);
TextOut( ps.hdc, 435,106,"T9 - Reg 25:",12);
TextOut( ps.hdc, 435,126,"K0 - Reg 26:",12);
TextOut( ps.hdc, 435,146,"K1 - Reg 27:",12);
TextOut( ps.hdc, 435,166,"GP - Reg 28:",12);
TextOut( ps.hdc, 435,186,"SP - Reg 29:",12);
TextOut( ps.hdc, 435,206,"S8 - Reg 30:",12);
TextOut( ps.hdc, 435,226,"RA - Reg 31:",12);
SelectObject( ps.hdc,hOldFont );
SetBkMode( ps.hdc, OldBkMode );
EndPaint( hWnd, &ps );
}
void PaintR4300iRDRamPanel (HWND hWnd) {
PAINTSTRUCT ps;
RECT rcBox;
HFONT hOldFont;
int OldBkMode;
BeginPaint( hWnd, &ps );
rcBox.left = 155;
rcBox.top = 34;
rcBox.right = 495;
rcBox.bottom = 270;
DrawEdge( ps.hdc, &rcBox, EDGE_ETCHED, BF_RECT );
hOldFont = SelectObject( ps.hdc,
GetStockObject(DEFAULT_GUI_FONT) );
OldBkMode = SetBkMode( ps.hdc, TRANSPARENT );
TextOut( ps.hdc, 190,56,"RDRAM_CONFIG_REG:",17);
TextOut( ps.hdc, 190,76,"RDRAM_DEVICE_ID_REG:",20);
TextOut( ps.hdc, 190,96,"RDRAM_DELAY_REG:",16);
TextOut( ps.hdc, 190,116,"RDRAM_MODE_REG:",15);
TextOut( ps.hdc, 190,136,"RDRAM_REF_INTERVAL_REG:",23);
TextOut( ps.hdc, 190,156,"RDRAM_REF_ROW_REG:",18);
TextOut( ps.hdc, 190,176,"RDRAM_RAS_INTERVAL_REG:",23);
TextOut( ps.hdc, 190,196,"RDRAM_MIN_INTERVAL_REG:",23);
TextOut( ps.hdc, 190,216,"RDRAM_ADDR_SELECT_REG:",22);
TextOut( ps.hdc, 190,236,"RDRAM_DEVICE_MANUF_REG:",23);
SelectObject( ps.hdc,hOldFont );
SetBkMode( ps.hdc, OldBkMode );
EndPaint( hWnd, &ps );
}
void PaintR4300iRIPanel (HWND hWnd) {
PAINTSTRUCT ps;
RECT rcBox;
HFONT hOldFont;
int OldBkMode;
BeginPaint( hWnd, &ps );
rcBox.left = 95;
rcBox.top = 64;
rcBox.right = 565;
rcBox.bottom = 215;
DrawEdge( ps.hdc, &rcBox, EDGE_ETCHED, BF_RECT );
hOldFont = SelectObject( ps.hdc,
GetStockObject(DEFAULT_GUI_FONT) );
OldBkMode = SetBkMode( ps.hdc, TRANSPARENT );
TextOut( ps.hdc, 110,86,"RI_MODE_REG:",12);
TextOut( ps.hdc, 110,116,"RI_CONFIG_REG:",14);
TextOut( ps.hdc, 110,146,"RI_CURRENT_LOAD_REG:",20);
TextOut( ps.hdc, 110,176,"RI_SELECT_REG:",14);
TextOut( ps.hdc, 360,86,"RI_REFRESH_REG:",15);
TextOut( ps.hdc, 360,116,"RI_LATENCY_REG:",15);
TextOut( ps.hdc, 360,146,"RI_RERROR_REG:",14);
TextOut( ps.hdc, 360,176,"RI_WERROR_REG:",14);
SelectObject( ps.hdc,hOldFont );
SetBkMode( ps.hdc, OldBkMode );
EndPaint( hWnd, &ps );
}
void PaintR4300iSIPanel (HWND hWnd) {
PAINTSTRUCT ps;
RECT rcBox;
HFONT hOldFont;
int OldBkMode;
BeginPaint( hWnd, &ps );
rcBox.left = 175;
rcBox.top = 64;
rcBox.right = 475;
rcBox.bottom = 210;
DrawEdge( ps.hdc, &rcBox, EDGE_ETCHED, BF_RECT );
hOldFont = SelectObject( ps.hdc,
GetStockObject(DEFAULT_GUI_FONT) );
OldBkMode = SetBkMode( ps.hdc, TRANSPARENT );
TextOut( ps.hdc, 200,86,"SI_DRAM_ADDR_REG:",17);
TextOut( ps.hdc, 200,116,"SI_PIF_ADDR_RD64B_REG:",22);
TextOut( ps.hdc, 200,146,"SI_PIF_ADDR_WR64B_REG:",22);
TextOut( ps.hdc, 200,176,"SI_STATUS_REG:",14);
SelectObject( ps.hdc,hOldFont );
SetBkMode( ps.hdc, OldBkMode );
EndPaint( hWnd, &ps );
}
void PaintR4300iSPPanel (HWND hWnd) {
PAINTSTRUCT ps;
RECT rcBox;
HFONT hOldFont;
int OldBkMode;
BeginPaint( hWnd, &ps );
rcBox.left = 95;
rcBox.top = 64;
rcBox.right = 565;
rcBox.bottom = 232;
DrawEdge( ps.hdc, &rcBox, EDGE_ETCHED, BF_RECT );
hOldFont = SelectObject( ps.hdc,
GetStockObject(DEFAULT_GUI_FONT) );
OldBkMode = SetBkMode( ps.hdc, TRANSPARENT );
TextOut( ps.hdc, 110,81,"SP_MEM_ADDR_REG:",16);
TextOut( ps.hdc, 110,111,"SP_DRAM_ADDR_REG:",17);
TextOut( ps.hdc, 110,141,"SP_RD_LEN_REG:",14);
TextOut( ps.hdc, 110,171,"SP_WR_LEN_REG:",14);
TextOut( ps.hdc, 110,201,"SP_STATUS_REG:",14);
TextOut( ps.hdc, 340,81,"SP_DMA_FULL_REG:",16);
TextOut( ps.hdc, 340,111,"SP_DMA_BUSY_REG:",16);
TextOut( ps.hdc, 340,141,"SP_SEMAPHORE_REG:",17);
TextOut( ps.hdc, 340,171,"SP_PC_REG:",10);
TextOut( ps.hdc, 340,201,"SP_IBIST_REG:",13);
SelectObject( ps.hdc,hOldFont );
SetBkMode( ps.hdc, OldBkMode );
EndPaint( hWnd, &ps );
}
void PaintR4300iSpecialPanel (HWND hWnd) {
PAINTSTRUCT ps;
RECT rcBox;
HFONT hOldFont;
int OldBkMode;
BeginPaint( hWnd, &ps );
rcBox.left = 155;
rcBox.top = 34;
rcBox.right = 495;
rcBox.bottom = 270;
DrawEdge( ps.hdc, &rcBox, EDGE_ETCHED, BF_RECT );
hOldFont = SelectObject( ps.hdc,
GetStockObject(DEFAULT_GUI_FONT) );
OldBkMode = SetBkMode( ps.hdc, TRANSPARENT );
TextOut( ps.hdc, 210,66,"Program Counter:",16);
TextOut( ps.hdc, 210,96,"Multi/Divide HI:",16);
TextOut( ps.hdc, 210,126,"Multi/Divide LO:",16);
TextOut( ps.hdc, 210,156,"Load/Link Bit:",14);
TextOut( ps.hdc, 210,186,"Implementation/Revision:",24);
TextOut( ps.hdc, 210,216,"Control/Status:",15);
SelectObject( ps.hdc,hOldFont );
SetBkMode( ps.hdc, OldBkMode );
EndPaint( hWnd, &ps );
}
void PaintR4300iMIPanel (HWND hWnd) {
PAINTSTRUCT ps;
RECT rcBox;
HFONT hOldFont;
int OldBkMode;
BeginPaint( hWnd, &ps );
rcBox.left = 175;
rcBox.top = 64;
rcBox.right = 475;
rcBox.bottom = 210;
DrawEdge( ps.hdc, &rcBox, EDGE_ETCHED, BF_RECT );
hOldFont = SelectObject( ps.hdc,
GetStockObject(DEFAULT_GUI_FONT) );
OldBkMode = SetBkMode( ps.hdc, TRANSPARENT );
TextOut( ps.hdc, 210,86,"MI_MODE_REG:",12);
TextOut( ps.hdc, 210,116,"MI_VERSION_REG:",15);
TextOut( ps.hdc, 210,146,"MI_INTR_REG:",12);
TextOut( ps.hdc, 210,176,"MI_INTR_MASK_REG:",17);
SelectObject( ps.hdc,hOldFont );
SetBkMode( ps.hdc, OldBkMode );
EndPaint( hWnd, &ps );
}
void PaintR4300iPIPanel (HWND hWnd) {
PAINTSTRUCT ps;
RECT rcBox;
HFONT hOldFont;
int OldBkMode;
BeginPaint( hWnd, &ps );
rcBox.left = 85;
rcBox.top = 34;
rcBox.right = 575;
rcBox.bottom = 270;
DrawEdge( ps.hdc, &rcBox, EDGE_ETCHED, BF_RECT );
hOldFont = SelectObject( ps.hdc, GetStockObject(DEFAULT_GUI_FONT) );
OldBkMode = SetBkMode( ps.hdc, TRANSPARENT );
TextOut( ps.hdc, 95,55,"PI_DRAM_ADDR_REG:",17);
TextOut( ps.hdc, 95,85,"PI_CART_ADDR_REG:",17);
TextOut( ps.hdc, 95,115,"PI_RD_LEN_REG:",14);
TextOut( ps.hdc, 95,145,"PI_WR_LEN_REG:",14);
TextOut( ps.hdc, 95,175,"PI_STATUS_REG:",14);
TextOut( ps.hdc, 95,205,"PI_DOMAIN1_REG:",15);
TextOut( ps.hdc, 95,235,"PI_BSD_DOM1_PWD_REG:",20);
TextOut( ps.hdc, 330,55,"PI_BSD_DOM1_PGS_REG:",20);
TextOut( ps.hdc, 330,85,"PI_BSD_DOM1_RLS_REG:",20);
TextOut( ps.hdc, 330,115,"PI_DOMAIN2_REG:",15);
TextOut( ps.hdc, 330,145,"PI_BSD_DOM2_PWD_REG:",20);
TextOut( ps.hdc, 330,175,"PI_BSD_DOM2_PGS_REG:",20);
TextOut( ps.hdc, 330,205,"PI_BSD_DOM2_RLS_REG:",20);
SelectObject( ps.hdc,hOldFont );
SetBkMode( ps.hdc, OldBkMode );
EndPaint( hWnd, &ps );
}
void PaintR4300iVIPanel (HWND hWnd) {
PAINTSTRUCT ps;
RECT rcBox;
HFONT hOldFont;
int OldBkMode;
BeginPaint( hWnd, &ps );
rcBox.left = 85;
rcBox.top = 34;
rcBox.right = 575;
rcBox.bottom = 270;
DrawEdge( ps.hdc, &rcBox, EDGE_ETCHED, BF_RECT );
hOldFont = SelectObject( ps.hdc,GetStockObject(DEFAULT_GUI_FONT) );
OldBkMode = SetBkMode( ps.hdc, TRANSPARENT );
TextOut( ps.hdc, 95,55,"VI_STATUS_REG:",14);
TextOut( ps.hdc, 95,85,"VI_DRAM_ADDR_REG:",17);
TextOut( ps.hdc, 95,115,"VI_WIDTH_REG:",13);
TextOut( ps.hdc, 95,145,"VI_INTR_REG:",12);
TextOut( ps.hdc, 95,175,"VI_V_CURRENT_LINE_REG:",22);
TextOut( ps.hdc, 95,205,"VI_TIMING_REG:",14);
TextOut( ps.hdc, 95,235,"VI_V_SYNC_REG:",14);
TextOut( ps.hdc, 345,55,"VI_H_SYNC_REG:",14);
TextOut( ps.hdc, 345,85,"VI_H_SYNC_LEAP_REG:",19);
TextOut( ps.hdc, 345,115,"VI_H_START_REG:",15);
TextOut( ps.hdc, 345,145,"VI_V_START_REG:",15);
TextOut( ps.hdc, 345,175,"VI_V_BURST_REG:",15);
TextOut( ps.hdc, 345,205,"VI_X_SCALE_REG:",15);
TextOut( ps.hdc, 345,235,"VI_Y_SCALE_REG:",15);
SelectObject( ps.hdc,hOldFont );
SetBkMode( ps.hdc, OldBkMode );
EndPaint( hWnd, &ps );
}
LRESULT CALLBACK R4300i_Registers_Proc (HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) {
static RECT rcDisp;
static int CurrentPanel = GeneralPurpose;
TC_ITEM item;
switch (uMsg) {
case WM_INITDIALOG:
R4300i_Registers_hDlg = hDlg;
SetupR4300iRegistersMain( hDlg );
break;
case WM_MOVE:
StoreCurrentWinPos("R4300i Registers",hDlg);
break;
case WM_SIZE:
GetClientRect( hDlg, &rcDisp);
TabCtrl_AdjustRect( hTab, FALSE, &rcDisp );
break;
case WM_NOTIFY:
switch (((NMHDR *)lParam)->code) {
case TCN_SELCHANGE:
InvalidateRect( hTab, &rcDisp, TRUE );
HideR4300iRegisterPanel (CurrentPanel);
item.mask = TCIF_PARAM;
TabCtrl_GetItem( hTab, TabCtrl_GetCurSel( hTab ), &item );
CurrentPanel = item.lParam;
InvalidateRect( hStatic, NULL, FALSE );
UpdateCurrentR4300iRegisterPanel();
ShowR4300iRegisterPanel ( CurrentPanel );
break;
}
break;
case WM_COMMAND:
switch (LOWORD(wParam)) {
case IDCANCEL:
CurrentPanel = GeneralPurpose;
EndDialog( hDlg, IDCANCEL );
break;
}
break;
default:
return FALSE;
}
return TRUE;
}
LRESULT CALLBACK RefreshR4300iRegProc ( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam ) {
int nSel;
TC_ITEM item;
switch( uMsg ) {
case WM_PAINT:
nSel = TabCtrl_GetCurSel( hTab );
if ( nSel > -1 ) {
item.mask = TCIF_PARAM;
TabCtrl_GetItem( hTab, nSel, &item );
switch( item.lParam ) {
case GeneralPurpose:
PaintR4300iGPRPanel (hWnd);
break;
case ControlProcessor0:
PaintR4300iCP0Panel (hWnd);
break;
case FloatingRegisters:
PaintR4300iFPRPanel (hWnd);
break;
case SpecialRegister:
PaintR4300iSpecialPanel (hWnd);
break;
case RDRAMRegisters:
PaintR4300iRDRamPanel (hWnd);
break;
case SPRegisters:
PaintR4300iSPPanel (hWnd);
break;
case MIPSInterface:
PaintR4300iMIPanel (hWnd);
break;
case VideoInterface:
PaintR4300iVIPanel (hWnd);
break;
case AudioInterface:
PaintR4300iAIPanel (hWnd);
break;
case PeripheralInterface:
PaintR4300iPIPanel (hWnd);
break;
case RDRAMInterface:
PaintR4300iRIPanel (hWnd);
break;
case SerialInterface:
PaintR4300iSIPanel (hWnd);
break;
}
}
break;
default:
return( (*r4300iRegRefreshProc)(hWnd, uMsg, wParam, lParam) );
}
return( FALSE );
}
void SetupR4300iAIPanel (HWND hDlg) {
int count;
for (count = 0; count < 6;count ++) {
hAI[count] = CreateWindowEx(WS_EX_CLIENTEDGE,"EDIT","", WS_CHILD |
ES_READONLY | WS_BORDER | WS_TABSTOP,342,(count*30) + 69,80,19,
hDlg,0,hInst, NULL );
SendMessage(hAI[count],WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT),0);
}
}
void SetupR4300iCP0Panel (HWND hDlg) {
int count, top;
for (count = 0;count < 32;count ++) { hCP0[count] = NULL; }
top = 53;
for (count = 0; count < 10;count ++) {
if (count == 7) { continue; }
hCP0[count] = CreateWindowEx(WS_EX_CLIENTEDGE,"EDIT","", WS_CHILD |
ES_READONLY | WS_BORDER | WS_TABSTOP,130,top,80,19,
hDlg,0,hInst, NULL );
SendMessage(hCP0[count],WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT),0);
top += 24;
}
top = 53;
for (count = 0; count < 8;count ++) {
hCP0[count + 10] = CreateWindowEx(WS_EX_CLIENTEDGE,"EDIT","", WS_CHILD |
ES_READONLY | WS_BORDER | WS_TABSTOP,330,top,80,19,
hDlg,0,hInst, NULL );
SendMessage(hCP0[count + 10],WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT),0);
top += 24;
}
top = 53;
for (count = 0; count < 13;count ++) {
if (count >= 3 && count <= 7 ) { continue; }
hCP0[count + 18] = CreateWindowEx(WS_EX_CLIENTEDGE,"EDIT","", WS_CHILD |
ES_READONLY | WS_BORDER | WS_TABSTOP,535,top,80,19,
hDlg,0,hInst, NULL );
SendMessage(hCP0[count + 18],WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT),0);
top += 24;
}
}
void SetupR4300iFPRPanel (HWND hDlg) {
int count;
for (count = 0; count < 11;count ++) {
hFPR[count] = CreateWindowEx(WS_EX_CLIENTEDGE,"EDIT","", WS_CHILD |
ES_READONLY | WS_BORDER | WS_TABSTOP,90,(count*20) + 50,135,19,
hDlg,0,hInst, NULL );
SendMessage(hFPR[count],WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT),0);
}
for (count = 0; count < 11;count ++) {
hFPR[count + 11] = CreateWindowEx(WS_EX_CLIENTEDGE,"EDIT","", WS_CHILD |
ES_READONLY | WS_BORDER | WS_TABSTOP,300,(count*20) + 50,135,19,
hDlg,0,hInst, NULL );
SendMessage(hFPR[ count + 11 ],WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT),0);
}
for (count = 0; count < 10;count ++) {
hFPR[count + 22] = CreateWindowEx(WS_EX_CLIENTEDGE,"EDIT","", WS_CHILD |
ES_READONLY | WS_BORDER | WS_TABSTOP,510,(count*20) + 50,135,19,
hDlg,0,hInst, NULL );
SendMessage(hFPR[ count + 22 ],WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT),0);
}
}
void SetupR4300iGPRPanel (HWND hDlg) {
int count;
for (count = 0; count < 11;count ++) {
hGPR[count] = CreateWindowEx(WS_EX_CLIENTEDGE,"EDIT","", WS_CHILD |
ES_READONLY | WS_BORDER | WS_TABSTOP,90,(count*20) + 50,135,19,
hDlg,0,hInst, NULL );
SendMessage(hGPR[count],WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT),0);
}
for (count = 0; count < 11;count ++) {
hGPR[count + 11] = CreateWindowEx(WS_EX_CLIENTEDGE,"EDIT","", WS_CHILD |
ES_READONLY | WS_BORDER | WS_TABSTOP,300,(count*20) + 50,135,19,
hDlg,0,hInst, NULL );
SendMessage(hGPR[ count + 11 ],WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT),0);
}
for (count = 0; count < 10;count ++) {
hGPR[count + 22] = CreateWindowEx(WS_EX_CLIENTEDGE,"EDIT","", WS_CHILD |
ES_READONLY | WS_BORDER | WS_TABSTOP,510,(count*20) + 50,135,19,
hDlg,0,hInst, NULL );
SendMessage(hGPR[ count + 22 ],WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT),0);
}
}
void SetupR4300iMIPanel (HWND hDlg) {
int count;
for (count = 0; count < 4;count ++) {
hMI[count] = CreateWindowEx(WS_EX_CLIENTEDGE,"EDIT","", WS_CHILD |
ES_READONLY | WS_BORDER | WS_TABSTOP,340,(count*30) + 89,80,19,
hDlg,0,hInst, NULL );
SendMessage(hMI[count],WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT),0);
}
}
void SetupR4300iPIPanel (HWND hDlg) {
int count;
for (count = 0; count < 7;count ++) {
hPI[count] = CreateWindowEx(WS_EX_CLIENTEDGE,"EDIT","", WS_CHILD |
ES_READONLY | WS_BORDER | WS_TABSTOP,245,(count*30) + 58,80,19,
hDlg,0,hInst, NULL );
SendMessage(hPI[count],WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT),0);
}
for (count = 0; count < 6;count ++) {
hPI[count + 7] = CreateWindowEx(WS_EX_CLIENTEDGE,"EDIT","", WS_CHILD |
ES_READONLY | WS_BORDER | WS_TABSTOP,480,(count*30) + 58,80,19,
hDlg,0,hInst, NULL );
SendMessage(hPI[count + 7],WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT),0);
}
}
void SetupR4300iRDRamPanel (HWND hDlg) {
int count;
for (count = 0; count < 10;count ++) {
hRDRam[count] = CreateWindowEx(WS_EX_CLIENTEDGE,"EDIT","", WS_CHILD |
ES_READONLY | WS_BORDER | WS_TABSTOP,375,(count*20) + 58,80,19,
hDlg,0,hInst, NULL );
SendMessage(hRDRam[count],WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT),0);
}
}
void SetupR4300iRIPanel (HWND hDlg) {
int count;
for (count = 0; count < 4;count ++) {
hRI[count] = CreateWindowEx(WS_EX_CLIENTEDGE,"EDIT","", WS_CHILD |
ES_READONLY | WS_BORDER | WS_TABSTOP,260,(count*30) + 90,80,19,
hDlg,0,hInst, NULL );
SendMessage(hRI[count],WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT),0);
}
for (count = 0; count < 4;count ++) {
hRI[count + 4] = CreateWindowEx(WS_EX_CLIENTEDGE,"EDIT","", WS_CHILD |
ES_READONLY | WS_BORDER | WS_TABSTOP,475,(count*30) + 90,80,19,
hDlg,0,hInst, NULL );
SendMessage(hRI[count + 4],WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT),0);
}
}
void SetupR4300iSIPanel (HWND hDlg) {
int count;
for (count = 0; count < 4;count ++) {
hSI[count] = CreateWindowEx(WS_EX_CLIENTEDGE,"EDIT","", WS_CHILD |
ES_READONLY | WS_BORDER | WS_TABSTOP,360,(count*30) + 89,80,19,
hDlg,0,hInst, NULL );
SendMessage(hSI[count],WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT),0);
}
}
void SetupR4300iSPPanel (HWND hDlg) {
int count;
for (count = 0; count < 5;count ++) {
hSP[count] = CreateWindowEx(WS_EX_CLIENTEDGE,"EDIT","", WS_CHILD |
ES_READONLY | WS_BORDER | WS_TABSTOP,250,(count*30) + 84,80,19,
hDlg,0,hInst, NULL );
SendMessage(hSP[count],WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT),0);
}
for (count = 0; count < 5;count ++) {
hSP[count + 5] = CreateWindowEx(WS_EX_CLIENTEDGE,"EDIT","", WS_CHILD |
ES_READONLY | WS_BORDER | WS_TABSTOP,475,(count*30) + 84,80,19,
hDlg,0,hInst, NULL );
SendMessage(hSP[ count + 5 ],WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT),0);
}
}
void SetupR4300iSpecialPanel (HWND hDlg) {
int count;
hSpecial[0] = CreateWindowEx(WS_EX_CLIENTEDGE,"EDIT","", WS_CHILD |
ES_READONLY | WS_BORDER | WS_TABSTOP,345,70,80,19,
hDlg,0,hInst, NULL );
hSpecial[1] = CreateWindowEx(WS_EX_CLIENTEDGE,"EDIT","", WS_CHILD |
ES_READONLY | WS_BORDER | WS_TABSTOP,345,100,135,19,
hDlg,0,hInst, NULL );
hSpecial[2] = CreateWindowEx(WS_EX_CLIENTEDGE,"EDIT","", WS_CHILD |
ES_READONLY | WS_BORDER | WS_TABSTOP,345,130,135,19,
hDlg,0,hInst, NULL );
hSpecial[3] = CreateWindowEx(WS_EX_CLIENTEDGE,"EDIT","", WS_CHILD |
ES_READONLY | WS_BORDER | WS_TABSTOP,345,160,34,19,
hDlg,0,hInst, NULL );
hSpecial[4] = CreateWindowEx(WS_EX_CLIENTEDGE,"EDIT","", WS_CHILD |
ES_READONLY | WS_BORDER | WS_TABSTOP,345,190,80,19,
hDlg,0,hInst, NULL );
hSpecial[5] = CreateWindowEx(WS_EX_CLIENTEDGE,"EDIT","", WS_CHILD |
ES_READONLY | WS_BORDER | WS_TABSTOP,345,220,80,19,
hDlg,0,hInst, NULL );
for (count = 0; count < 6;count ++) {
SendMessage(hSpecial[count],WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT),0);
}
}
void SetupR4300iVIPanel (HWND hDlg) {
int count;
for (count = 0; count < 7;count ++) {
hVI[count] = CreateWindowEx(WS_EX_CLIENTEDGE,"EDIT","", WS_CHILD |
ES_READONLY | WS_BORDER | WS_TABSTOP,250,(count*30) + 58,80,19,
hDlg,0,hInst, NULL );
SendMessage(hVI[count],WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT),0);
}
for (count = 0; count < 7;count ++) {
hVI[count + 7] = CreateWindowEx(WS_EX_CLIENTEDGE,"EDIT","", WS_CHILD |
ES_READONLY | WS_BORDER | WS_TABSTOP,480,(count*30) + 58,80,19,
hDlg,0,hInst, NULL );
SendMessage(hVI[count + 7],WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT),0);
}
}
void SetupR4300iRegistersMain (HWND hDlg) {
#define WindowWidth 675
#define WindowHeight 325
DWORD X, Y;
hTab = CreateWindowEx(0,WC_TABCONTROL,"", WS_TABSTOP | WS_CHILD | WS_VISIBLE,5,6,660,290,
hDlg,(HMENU)IDC_TAB_CONTROL,hInst,NULL );
if ( hTab ) {
TC_ITEM item;
SendMessage(hTab, WM_SETFONT, (WPARAM)GetStockObject( DEFAULT_GUI_FONT ), 0);
item.mask = TCIF_TEXT | TCIF_PARAM;
item.pszText = " General Purpose ";
item.lParam = GeneralPurpose;
TabCtrl_InsertItem( hTab,0, &item);
item.lParam = ControlProcessor0;
item.pszText = " Control Processor 0 ";
TabCtrl_InsertItem( hTab,1, &item);
item.lParam = FloatingRegisters;
item.pszText = " floating-point Registers ";
TabCtrl_InsertItem( hTab,2, &item);
item.lParam = SpecialRegister;
item.pszText = " Special Registers ";
TabCtrl_InsertItem( hTab,3, &item);
item.lParam = RDRAMRegisters;
item.pszText = " RDRAM Registers ";
TabCtrl_InsertItem( hTab,4, &item);
item.lParam = SPRegisters;
item.pszText = " SP Registers ";
TabCtrl_InsertItem( hTab,5, &item);
item.lParam = MIPSInterface;
item.pszText = " MIPS Interface ";
TabCtrl_InsertItem( hTab,6, &item);
item.lParam = VideoInterface ;
item.pszText = " Video Interface ";
TabCtrl_InsertItem( hTab,7, &item);
item.lParam = AudioInterface ;
item.pszText = " Audio Interface ";
TabCtrl_InsertItem( hTab,8, &item);
item.lParam = PeripheralInterface;
item.pszText = " Peripheral Interface ";
TabCtrl_InsertItem( hTab,9, &item);
item.lParam = RDRAMInterface;
item.pszText = " RDRAM Interface ";
TabCtrl_InsertItem( hTab,10, &item);
item.lParam = SerialInterface;
item.pszText = " Serial Interface ";
TabCtrl_InsertItem( hTab,11, &item);
}
SetupR4300iAIPanel ( hDlg );
SetupR4300iCP0Panel ( hDlg );
SetupR4300iFPRPanel ( hDlg );
SetupR4300iGPRPanel ( hDlg );
SetupR4300iMIPanel ( hDlg );
SetupR4300iRDRamPanel ( hDlg );
SetupR4300iPIPanel ( hDlg );
SetupR4300iRIPanel ( hDlg );
SetupR4300iSIPanel ( hDlg );
SetupR4300iSPPanel ( hDlg );
SetupR4300iSpecialPanel ( hDlg );
SetupR4300iVIPanel ( hDlg);
hStatic = CreateWindowEx(0,"STATIC","", WS_CHILD|WS_VISIBLE, 5,6,660,290,hDlg,0,hInst,NULL );
r4300iRegRefreshProc = (FARPROC)SetWindowLong( hStatic,GWL_WNDPROC,(long)RefreshR4300iRegProc);
ShowR4300iRegisterPanel ( GeneralPurpose );
UpdateCurrentR4300iRegisterPanel ();
SetWindowText(hDlg," R4300i Registers");
if ( !GetStoredWinPos( "R4300i Registers", &X, &Y ) ) {
X = (GetSystemMetrics( SM_CXSCREEN ) - WindowWidth) / 2;
Y = (GetSystemMetrics( SM_CYSCREEN ) - WindowHeight) / 2;
}
SetWindowPos(hDlg,NULL,X,Y,WindowWidth,WindowHeight, SWP_NOZORDER | SWP_SHOWWINDOW);
}
void ShowR4300iRegisterPanel ( int Panel) {
int count;
switch( Panel ) {
case GeneralPurpose:
for (count = 0; count < 32;count ++) { ShowWindow(hGPR[count],TRUE); }
break;
case ControlProcessor0:
for (count = 0; count < 32;count ++) { ShowWindow(hCP0[count],TRUE); }
break;
case FloatingRegisters:
for (count = 0; count < 32;count ++) { ShowWindow(hFPR[count],TRUE); }
break;
case SpecialRegister:
for (count = 0; count < 6;count ++) { ShowWindow(hSpecial[count],TRUE); }
break;
case RDRAMRegisters:
for (count = 0; count < 10;count ++) { ShowWindow(hRDRam[count],TRUE); }
break;
case SPRegisters:
for (count = 0; count < 10;count ++) { ShowWindow(hSP[count],TRUE); }
break;
case MIPSInterface:
for (count = 0; count < 4;count ++) { ShowWindow(hMI[count],TRUE); }
break;
case VideoInterface:
for (count = 0; count < 14;count ++) { ShowWindow(hVI[count],TRUE); }
break;
case AudioInterface:
for (count = 0; count < 6;count ++) { ShowWindow(hAI[count],TRUE); }
break;
case PeripheralInterface:
for (count = 0; count < 13;count ++) { ShowWindow(hPI[count],TRUE); }
break;
case RDRAMInterface:
for (count = 0; count < 8;count ++) { ShowWindow(hRI[count],TRUE); }
break;
case SerialInterface:
for (count = 0; count < 4;count ++) { ShowWindow(hSI[count],TRUE); }
break;
}
}
void __cdecl UpdateCurrentR4300iRegisterPanel ( void ) {
char RegisterValue[60], OldWinText[60];
int count, nSel;
TC_ITEM item;
if (!InR4300iRegisterWindow) { return; }
nSel = TabCtrl_GetCurSel( hTab );
if ( nSel > -1 ) {
item.mask = TCIF_PARAM;
TabCtrl_GetItem( hTab, nSel, &item );
switch( item.lParam ) {
case GeneralPurpose:
for (count = 0; count < 32;count ++) {
GetWindowText(hGPR[count],OldWinText,60);
sprintf(RegisterValue," 0x%08X - %08X",GPR[count].W[1],GPR[count].W[0]);
if ( strcmp( RegisterValue, OldWinText) != 0 ) {
SetWindowText(hGPR[count],RegisterValue);
}
}
break;
case ControlProcessor0:
for (count = 0; count < 32;count ++) {
GetWindowText(hCP0[count],OldWinText,60);
sprintf( RegisterValue," 0x%08X",CP0[count] );
if ( strcmp( RegisterValue, OldWinText) != 0 ) {
SetWindowText(hCP0[count],RegisterValue);
}
}
break;
case FloatingRegisters:
for (count = 0; count < 32;count ++) {
GetWindowText(hFPR[count],OldWinText,60);
sprintf(RegisterValue," 0x%08X - %08X",FPR[count].W[1],FPR[count].W[0]);
if ( strcmp( RegisterValue, OldWinText) != 0 ) {
SetWindowText(hFPR[count],RegisterValue);
}
}
break;
case SpecialRegister:
GetWindowText(hSpecial[0],OldWinText,60);
sprintf( RegisterValue," 0x%08X",PROGRAM_COUNTER );
if ( strcmp( RegisterValue, OldWinText) != 0 ) {
SetWindowText(hSpecial[0],RegisterValue);
}
GetWindowText(hSpecial[0],OldWinText,60);
sprintf(RegisterValue," 0x%08X - %08X",HI.W[1],HI.W[0]);
if ( strcmp( RegisterValue, OldWinText) != 0 ) {
SetWindowText(hSpecial[1],RegisterValue);
}
GetWindowText(hSpecial[0],OldWinText,60);
sprintf(RegisterValue," 0x%08X - %08X",LO.W[1],LO.W[0]);
if ( strcmp( RegisterValue, OldWinText) != 0 ) {
SetWindowText(hSpecial[2],RegisterValue);
}
GetWindowText(hSpecial[0],OldWinText,60);
sprintf(RegisterValue," 0x%08X",REVISION_REGISTER);
if ( strcmp( RegisterValue, OldWinText) != 0 ) {
SetWindowText(hSpecial[4],RegisterValue);
}
GetWindowText(hSpecial[0],OldWinText,60);
sprintf(RegisterValue," 0x%08X",FSTATUS_REGISTER);
if ( strcmp( RegisterValue, OldWinText) != 0 ) {
SetWindowText(hSpecial[5],RegisterValue);
}
break;
case RDRAMRegisters:
for (count = 0; count < 10;count ++) {
GetWindowText(hRDRam[count],OldWinText,60);
sprintf(RegisterValue," 0x%08X",RegRDRAM[count]);
if ( strcmp( RegisterValue, OldWinText) != 0 ) {
SetWindowText(hRDRam[count],RegisterValue);
}
}
break;
case SPRegisters:
for (count = 0; count < 10;count ++) {
GetWindowText(hSP[count],OldWinText,60);
sprintf(RegisterValue," 0x%08X",RegSP[count]);
if ( strcmp( RegisterValue, OldWinText) != 0 ) {
SetWindowText(hSP[count],RegisterValue);
}
}
break;
case MIPSInterface:
for (count = 0; count < 4;count ++) {
GetWindowText(hMI[count],OldWinText,60);
sprintf(RegisterValue," 0x%08X",RegMI[count]);
if ( strcmp( RegisterValue, OldWinText) != 0 ) {
SetWindowText(hMI[count],RegisterValue);
}
}
break;
case VideoInterface:
for (count = 0; count < 14;count ++) {
GetWindowText(hVI[count],OldWinText,60);
sprintf(RegisterValue," 0x%08X",RegVI[count]);
if ( strcmp( RegisterValue, OldWinText) != 0 ) {
SetWindowText(hVI[count],RegisterValue);
}
}
break;
case AudioInterface:
for (count = 0; count < 6;count ++) {
GetWindowText(hAI[count],OldWinText,60);
sprintf(RegisterValue," 0x%08X",RegAI[count]);
if ( strcmp( RegisterValue, OldWinText) != 0 ) {
SetWindowText(hAI[count],RegisterValue);
}
}
break;
case PeripheralInterface:
for (count = 0; count < 13;count ++) {
GetWindowText(hPI[count],OldWinText,60);
sprintf(RegisterValue," 0x%08X",RegPI[count]);
if ( strcmp( RegisterValue, OldWinText) != 0 ) {
SetWindowText(hPI[count],RegisterValue);
}
}
break;
case RDRAMInterface:
for (count = 0; count < 8;count ++) {
GetWindowText(hRI[count],OldWinText,60);
sprintf(RegisterValue," 0x%08X",RegRI[count]);
if ( strcmp( RegisterValue, OldWinText) != 0 ) {
SetWindowText(hRI[count],RegisterValue);
}
}
break;
case SerialInterface:
for (count = 0; count < 4;count ++) {
GetWindowText(hSI[count],OldWinText,60);
sprintf(RegisterValue," 0x%08X",RegSI[count]);
if ( strcmp( RegisterValue, OldWinText) != 0 ) {
SetWindowText(hSI[count],RegisterValue);
}
}
break;
}
}
}
#endif
#endif