mirror of
https://github.com/mupen64plus/mupen64plus-oldsvn.git
synced 2025-04-02 10:52:35 -04:00
119 lines
4.2 KiB
C
119 lines
4.2 KiB
C
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
|
* Mupen64plus - debug.c *
|
|
* Mupen64Plus homepage: http://code.google.com/p/mupen64plus/ *
|
|
* Copyright (C) 2002 Hacktarux *
|
|
* *
|
|
* This program is free software; you can redistribute it and/or modify *
|
|
* it under the terms of the GNU General Public License as published by *
|
|
* the Free Software Foundation; either version 2 of the License, or *
|
|
* (at your option) any later version. *
|
|
* *
|
|
* This program is distributed in the hope that it will be useful, *
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
|
* GNU General Public License for more details. *
|
|
* *
|
|
* You should have received a copy of the GNU General Public License *
|
|
* along with this program; if not, write to the *
|
|
* Free Software Foundation, Inc., *
|
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
|
|
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
|
|
|
#include <stdio.h>
|
|
|
|
#include "assemble.h"
|
|
|
|
#include "../r4300.h"
|
|
#include "../macros.h"
|
|
#include "../recomph.h"
|
|
|
|
#include "../../memory/memory.h"
|
|
|
|
void debug(void)
|
|
{
|
|
#ifdef COMPARE_CORE
|
|
compare_core();
|
|
#endif
|
|
//if (Count > 0x8000000)
|
|
//printf("PC->addr:%x:%x\n",(int)PC->addr,
|
|
/*(int)SP_DMEM[(PC->addr - 0xa4000000)/4]*/
|
|
//(int)rdram[(PC->addr & 0xFFFFFF)/4]);
|
|
//printf("count:%x\n", (int)(Count));
|
|
/*if (debug_count + Count >= 0x80000000)
|
|
printf("debug : %x: %x\n",
|
|
(unsigned int)(PC->addr),
|
|
(unsigned int)rdram[(PC->addr&0xFFFFFF)/4]);*/
|
|
/*if (debug_count + Count >= 0x8000000) {
|
|
printf("debug : %x\n", (unsigned int)(PC->addr));
|
|
if (0x8018ddd8>actual->debut && 0x8018ddd8<actual->fin) {
|
|
printf("ff: %x\n", //rdram[0x18ddd8/4]
|
|
actual->code[actual->block[(0x8018ddd8-actual->debut)/4].local_addr]);
|
|
getchar();
|
|
}
|
|
}*/
|
|
//if (debug_count + Count >= 0x8000000) actual->code[(PC+1)->local_addr] = 0xC3;
|
|
//if ((debug_count + Count) >= 0x5f66c82)
|
|
//if ((debug_count + Count) >= 0x5f61bc0)
|
|
/*if ((debug_count + Count) == 0xf203ae0)
|
|
{
|
|
int j;
|
|
for (j=0; j<NBR_BLOCKS; j++)
|
|
{
|
|
if (aux[j].debut) {
|
|
printf("deb:%x\n", aux[j].debut);
|
|
printf("fin:%x\n", aux[j].fin);
|
|
printf("valide:%x\n", aux[j].valide);
|
|
getchar();
|
|
}
|
|
}
|
|
}
|
|
if ((debug_count + Count) >= 0xf203ae0)
|
|
{
|
|
int j;
|
|
printf ("inst:%x\n",
|
|
(unsigned int)rdram[(PC->addr&0xFFFFFF)/4]);
|
|
printf ("PC=%x\n", (unsigned int)((PC+1)->addr));
|
|
for (j=0; j<16; j++)
|
|
printf ("reg[%d]:%x%x reg[%d]:%x%x\n",
|
|
j,
|
|
(unsigned int)(reg[j] >> 32),
|
|
(unsigned int)reg[j],
|
|
j+16,
|
|
(unsigned int)(reg[j+16] >> 32),
|
|
(unsigned int)reg[j+16]);
|
|
printf("hi:%x%x lo:%x%x\n",
|
|
(unsigned int)(hi >> 32),
|
|
(unsigned int)hi,
|
|
(unsigned int)(lo >> 32),
|
|
(unsigned int)lo);
|
|
printf("apres %d instructions soit %x\n",
|
|
(unsigned int)(debug_count+Count),
|
|
(unsigned int)(debug_count+Count));
|
|
getchar();
|
|
}*/
|
|
}
|
|
|
|
//static void dyna_stop() {}
|
|
|
|
void stop_it(void)
|
|
{
|
|
if (dynacore)
|
|
{
|
|
stop = 1;
|
|
/**return_address = (unsigned int)dyna_stop;
|
|
asm("mov return_address, %%esp \n"
|
|
"ret \n"
|
|
:
|
|
:
|
|
: "memory");*/
|
|
/*int i;
|
|
for (i=0; i<0x100000; i++)
|
|
{
|
|
if (((unsigned int)(EPC) >= blocks[i]->start)
|
|
&& ((unsigned int)(EPC) < blocks[i]->end))
|
|
blocks[i]->code[blocks[i]->block[(EPC - blocks[i]->start)/4].local_addr] = 0xC3;
|
|
}*/
|
|
}
|
|
else stop=1;
|
|
}
|
|
|