void GBDisassemble::refresh() { if(gbRom == NULL) return; int h = m_list.GetItemHeight(0); RECT r; m_list.GetClientRect(&r); count = (r.bottom - r.top+1)/h; m_list.ResetContent(); if(!emulating || theApp.cartridgeType != 1) return; char disasm[80]; u16 addr = address; int i; int sel = -1; for(i = 0; i < count; i++) { if(addr == PC.W) sel = i; addr += gbDis(disasm, addr); m_list.InsertString(-1, CString(disasm)); } lastAddress = addr-1; if(sel != -1) m_list.SetCurSel(sel); TCHAR buffer[80]; _stprintf(buffer, _T("%04x"), AF.W); GetDlgItem(IDC_R0)->SetWindowText(buffer); _stprintf(buffer, _T("%04x"), BC.W); GetDlgItem(IDC_R1)->SetWindowText(buffer); _stprintf(buffer, _T("%04x"), DE.W); GetDlgItem(IDC_R2)->SetWindowText(buffer); _stprintf(buffer, _T("%04x"), HL.W); GetDlgItem(IDC_R3)->SetWindowText(buffer); _stprintf(buffer, _T("%04x"), SP.W); GetDlgItem(IDC_R4)->SetWindowText(buffer); _stprintf(buffer, _T("%04x"), PC.W); GetDlgItem(IDC_R5)->SetWindowText(buffer); _stprintf(buffer, _T("%04x"), IFF); GetDlgItem(IDC_R6)->SetWindowText(buffer); _stprintf(buffer, _T("%04x"), register_LY); GetDlgItem(IDC_LY)->SetWindowText(buffer); m_z = (AF.B.B0 & 0x80) != 0; m_n = (AF.B.B0 & 0x40) != 0; m_h = (AF.B.B0 & 0x20) != 0; m_c = (AF.B.B0 & 0x10) != 0; UpdateData(FALSE); }
void RefillListEv(wxCommandEvent& ev) { // what an unsafe calling convention // examination of gbDis shows that max len is 26 chars // (e.g. 0xe2) char buf[30]; uint16_t addr = dis->topaddr; dis->strings.clear(); dis->addrs.clear(); dis->back_size = 1; for (int i = 0; i < dis->nlines; i++) { dis->addrs.push_back(addr); addr += gbDis(buf, addr); dis->strings.push_back(wxString(buf, wxConvLibc)); } dis->Refill(); }
void GBDisassemble::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) { char buffer[80]; switch(nSBCode) { case SB_LINEDOWN: address += gbDis(buffer, address); break; case SB_LINEUP: address--; break; case SB_PAGEDOWN: address = lastAddress; break; case SB_PAGEUP: address -= count; break; } refresh(); CDialog::OnVScroll(nSBCode, nPos, pScrollBar); }