diff --git a/Frameworks/lazyusf/lazyusf/audio.c b/Frameworks/lazyusf/lazyusf/audio.c index d3ba00a3b..6331dbb53 100644 --- a/Frameworks/lazyusf/lazyusf/audio.c +++ b/Frameworks/lazyusf/lazyusf/audio.c @@ -55,7 +55,7 @@ void AiLenChanged(usf_state_t * state) { length = AI_LEN_REG & 0x3FFF8; #ifdef DEBUG_INFO - fprintf(stderr, "Audio buffer queued from %08x for %d bytes\n", AI_DRAM_ADDR_REG, length); + fprintf(state->debug_log, "Audio DMA push: %d %d\n", AI_DRAM_ADDR_REG, length); #endif AddBuffer(state, state->RDRAM+address, length); diff --git a/Frameworks/lazyusf/lazyusf/cpu.c b/Frameworks/lazyusf/lazyusf/cpu.c index 1b1f0928d..ef32418ae 100644 --- a/Frameworks/lazyusf/lazyusf/cpu.c +++ b/Frameworks/lazyusf/lazyusf/cpu.c @@ -525,7 +525,7 @@ void RefreshScreen (usf_state_t * state){ void RunRsp (usf_state_t * state) { #ifdef DEBUG_INFO - fprintf(stderr, "RSP Task:"); + fprintf(state->debug_log, "RSP Task:"); #endif if ( ( SP_STATUS_REG & SP_STATUS_HALT ) == 0) { if ( ( SP_STATUS_REG & SP_STATUS_BROKE ) == 0 ) { @@ -541,7 +541,7 @@ void RunRsp (usf_state_t * state) { MI_INTR_REG |= 1; #ifdef DEBUG_INFO - fprintf(stderr, " DList - interrupts %d\n", MI_INTR_REG); + fprintf(state->debug_log, " DList - interrupts %d\n", MI_INTR_REG); #endif CheckInterrupts(state); @@ -552,7 +552,9 @@ void RunRsp (usf_state_t * state) { } break; case 2: { - fprintf(stderr, " AList"); +#ifdef DEBUG_INFO + fprintf(state->debug_log, " AList"); +#endif break; } break; @@ -565,7 +567,7 @@ void RunRsp (usf_state_t * state) { SP_STATUS_REG |= (0x0203 ); if ((SP_STATUS_REG & SP_STATUS_INTR_BREAK) != 0 ) { #ifdef DEBUG_INFO - fprintf(stderr, " - interrupt"); + fprintf(state->debug_log, " - interrupt"); #endif MI_INTR_REG |= 1; CheckInterrupts(state); @@ -573,7 +575,7 @@ void RunRsp (usf_state_t * state) { } } #ifdef DEBUG_INFO - fprintf(stderr, "\n"); + fprintf(state->debug_log, "\n"); #endif } diff --git a/Frameworks/lazyusf/lazyusf/exception.c b/Frameworks/lazyusf/lazyusf/exception.c index 502fc7b22..d44bfee4d 100644 --- a/Frameworks/lazyusf/lazyusf/exception.c +++ b/Frameworks/lazyusf/lazyusf/exception.c @@ -35,17 +35,17 @@ void CheckInterrupts ( usf_state_t * state ) { MI_INTR_REG |= (state->AudioIntrReg & MI_INTR_AI); #ifdef DEBUG_INFO if (MI_INTR_REG) - fprintf(stderr, "Interrupt %d - ", MI_INTR_REG); + fprintf(state->debug_log, "Interrupt %d - ", MI_INTR_REG); #endif if ((MI_INTR_MASK_REG & MI_INTR_REG) != 0) { #ifdef DEBUG_INFO - fprintf(stderr, "triggered\n"); + fprintf(state->debug_log, "triggered\n"); #endif FAKE_CAUSE_REGISTER |= CAUSE_IP2; } else { #ifdef DEBUG_INFO if (MI_INTR_REG) - fprintf(stderr, "masked\n"); + fprintf(state->debug_log, "masked\n"); #endif FAKE_CAUSE_REGISTER &= ~CAUSE_IP2; } diff --git a/Frameworks/lazyusf/lazyusf/interpreter_cpu.c b/Frameworks/lazyusf/lazyusf/interpreter_cpu.c index a1f76410e..75b2f73f9 100644 --- a/Frameworks/lazyusf/lazyusf/interpreter_cpu.c +++ b/Frameworks/lazyusf/lazyusf/interpreter_cpu.c @@ -720,13 +720,10 @@ void ExecuteInterpreterOpCode (usf_state_t * state) { #ifdef DEBUG_INFO { - static const char filler[] = " "; char opcode[256]; char arguments[256]; r4300_decode_op(state->Opcode.u.Hex, opcode, arguments, state->PROGRAM_COUNTER); - strcat(opcode, filler); - opcode[16] = '\0'; - fprintf(stderr, "%08x: %s %s\n", state->PROGRAM_COUNTER, opcode, arguments); + fprintf(state->debug_log, "%08x: %-16s %s\n", state->PROGRAM_COUNTER, opcode, arguments); } #endif @@ -753,7 +750,11 @@ void ExecuteInterpreterOpCode (usf_state_t * state) { state->PROGRAM_COUNTER += 4; break; case JUMP: - if (0 && state->cpu_hle_entry_count && + if ( +#ifdef DEBUG_INFO + 0 && +#endif + state->cpu_hle_entry_count && DoCPUHLE(state, state->JumpToLocation)) { state->PROGRAM_COUNTER = state->GPR[31].UW[0]; state->NextInstruction = NORMAL; diff --git a/Frameworks/lazyusf/lazyusf/usf.c b/Frameworks/lazyusf/lazyusf/usf.c index c2baeb9fc..547eabb1b 100644 --- a/Frameworks/lazyusf/lazyusf/usf.c +++ b/Frameworks/lazyusf/lazyusf/usf.c @@ -70,6 +70,10 @@ void usf_clear(void * state) //USF_STATE->PIF_Ram = 0; PreAllocate_Memory(USF_STATE); + +#ifdef DEBUG_INFO + USF_STATE->debug_log = fopen("/tmp/lazyusf.log", "w"); +#endif } void usf_set_compare(void * state, int enable) @@ -162,23 +166,23 @@ int usf_upload_section(void * state, const uint8_t * data, size_t size) return 0; } -static int usf_startup(void * state) +static int usf_startup(usf_state_t * state) { // Detect the Ramsize before the memory allocation - if(*(uint32_t*)(USF_STATE->savestatespace + 4) == 0x400000) { + if(get_le32(state->savestatespace + 4) == 0x400000) { void * savestate; - USF_STATE->RdramSize = 0x400000; - savestate = realloc(USF_STATE->savestatespace, 0x40275c); + state->RdramSize = 0x400000; + savestate = realloc(state->savestatespace, 0x40275c); if ( savestate ) - USF_STATE->savestatespace = savestate; - } else if(*(uint32_t*)(USF_STATE->savestatespace + 4) == 0x800000) - USF_STATE->RdramSize = 0x800000; + state->savestatespace = savestate; + } else if(get_le32(USF_STATE->savestatespace + 4) == 0x800000) + state->RdramSize = 0x800000; if ( !Allocate_Memory(state) ) return -1; - StartEmulationFromSave(USF_STATE, USF_STATE->savestatespace); + StartEmulationFromSave(state, USF_STATE->savestatespace); return 0; } @@ -244,4 +248,7 @@ void usf_restart(void * state) void usf_shutdown(void * state) { Release_Memory(USF_STATE); +#ifdef DEBUG_INFO + fclose(USF_STATE->debug_log); +#endif } diff --git a/Frameworks/lazyusf/lazyusf/usf_internal.h b/Frameworks/lazyusf/lazyusf/usf_internal.h index 9664f54e7..8d3eba76e 100644 --- a/Frameworks/lazyusf/lazyusf/usf_internal.h +++ b/Frameworks/lazyusf/lazyusf/usf_internal.h @@ -15,7 +15,9 @@ struct usf_state_helper typedef uint32_t RCPREG; #endif +#ifdef DEBUG_INFO #include +#endif struct usf_state { @@ -140,6 +142,10 @@ struct usf_state uint32_t cpu_hle_entry_count; _HLE_Entry * cpu_hle_entries; + +#ifdef DEBUG_INFO + FILE * debug_log; +#endif }; #define USF_STATE_HELPER ((usf_state_helper_t *)(state))