mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2024-11-14 13:27:45 -07:00
bunch of comments/unions in VI. No more UnknownVIRegs[0x1000]! :p some other misc stuff
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@3302 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
parent
39b16ffafa
commit
7b43951b7e
@ -69,12 +69,14 @@ void CBoot::EmulatedBIOS(bool _bDebug)
|
|||||||
Memory::Write_U32(0x4c000064, 0x80000800); // write default FPU Handler: rfi
|
Memory::Write_U32(0x4c000064, 0x80000800); // write default FPU Handler: rfi
|
||||||
Memory::Write_U32(0x4c000064, 0x80000C00); // write default Syscall Handler: rfi
|
Memory::Write_U32(0x4c000064, 0x80000C00); // write default Syscall Handler: rfi
|
||||||
Memory::Write_U32(0xc2339f3d, 0x8000001C); // game disc
|
Memory::Write_U32(0xc2339f3d, 0x8000001C); // game disc
|
||||||
Memory::Write_U32(0x0D15EA5E, 0x80000020); // funny magic word for normal boot
|
Memory::Write_U32(0x0D15EA5E, 0x80000020); // booted from bootrom. 0xE5207C22 = booted from jtag
|
||||||
Memory::Write_U32(0x01800000, 0x80000028); // Physical Memory Size
|
Memory::Write_U32(0x01800000, 0x80000028); // Physical Memory Size
|
||||||
|
|
||||||
// On any of the production boards, ikaruga fails to read the memcard the first time. It succeeds on the second time though.
|
// On any of the production boards, ikaruga fails to read the memcard the first time. It succeeds on the second time though.
|
||||||
// And (only sometimes?) with 0x00000003, the loading picture in the bottom right will become corrupt and
|
// And (only sometimes?) with 0x00000003, the loading picture in the bottom right will become corrupt and
|
||||||
// the emu will slow to 7mhz...I don't think it ever actually progresses
|
// the emu will slow to 7mhz...I don't think it ever actually progresses
|
||||||
|
// This seems to be caused by the initialization of the memcard going amiss (remember, this uses a dsp program!)
|
||||||
|
// so, probably some fault with dsp timing/emulation in general (endless dsp interrupts...)
|
||||||
Memory::Write_U32(0x10000006, 0x8000002C); // Console type - DevKit (retail ID == 0x00000003) see yagcd 4.2.1.1.2
|
Memory::Write_U32(0x10000006, 0x8000002C); // Console type - DevKit (retail ID == 0x00000003) see yagcd 4.2.1.1.2
|
||||||
|
|
||||||
Memory::Write_U32(((1 & 0x3f) << 26) | 2, 0x81300000); // HLE OSReport for Apploader
|
Memory::Write_U32(((1 & 0x3f) << 26) | 2, 0x81300000); // HLE OSReport for Apploader
|
||||||
@ -83,7 +85,7 @@ void CBoot::EmulatedBIOS(bool _bDebug)
|
|||||||
// but it seems like the size can be variable. Compare with yagcd chap 13.
|
// but it seems like the size can be variable. Compare with yagcd chap 13.
|
||||||
//
|
//
|
||||||
PowerPC::ppcState.gpr[1] = 0x816ffff0; // StackPointer
|
PowerPC::ppcState.gpr[1] = 0x816ffff0; // StackPointer
|
||||||
u32 iAppLoaderOffset = 0x2440; // 0x1c40 (what is 0x1c40?)
|
u32 iAppLoaderOffset = 0x2440; // 0x1c40 - 2MB lower...perhaps used on early GCMs? MYSTERY OLD COMMENT
|
||||||
u32 iAppLoaderEntry = VolumeHandler::Read32(iAppLoaderOffset + 0x10);
|
u32 iAppLoaderEntry = VolumeHandler::Read32(iAppLoaderOffset + 0x10);
|
||||||
u32 iAppLoaderSize = VolumeHandler::Read32(iAppLoaderOffset + 0x14);
|
u32 iAppLoaderSize = VolumeHandler::Read32(iAppLoaderOffset + 0x14);
|
||||||
if ((iAppLoaderEntry == (u32)-1) || (iAppLoaderSize == (u32)-1))
|
if ((iAppLoaderEntry == (u32)-1) || (iAppLoaderSize == (u32)-1))
|
||||||
|
@ -381,7 +381,6 @@ THREAD_RETURN EmuThread(void *pArg)
|
|||||||
VideoInitialize.pSysMessage = Host_SysMessage;
|
VideoInitialize.pSysMessage = Host_SysMessage;
|
||||||
VideoInitialize.pRequestWindowSize = NULL; //Callback_VideoRequestWindowSize;
|
VideoInitialize.pRequestWindowSize = NULL; //Callback_VideoRequestWindowSize;
|
||||||
VideoInitialize.pCopiedToXFB = Callback_VideoCopiedToXFB;
|
VideoInitialize.pCopiedToXFB = Callback_VideoCopiedToXFB;
|
||||||
VideoInitialize.pVIRegs = VideoInterface::m_UVIUnknownRegs;
|
|
||||||
VideoInitialize.pPeekMessages = NULL;
|
VideoInitialize.pPeekMessages = NULL;
|
||||||
VideoInitialize.pUpdateFPSDisplay = NULL;
|
VideoInitialize.pUpdateFPSDisplay = NULL;
|
||||||
VideoInitialize.pCPFifo = (SCPFifoStruct*)&CommandProcessor::fifo;
|
VideoInitialize.pCPFifo = (SCPFifoStruct*)&CommandProcessor::fifo;
|
||||||
|
@ -131,7 +131,7 @@ union USIPoll
|
|||||||
unsigned EN2 : 1; // does not affect communication RAM transfers
|
unsigned EN2 : 1; // does not affect communication RAM transfers
|
||||||
unsigned EN1 : 1;
|
unsigned EN1 : 1;
|
||||||
unsigned EN0 : 1;
|
unsigned EN0 : 1;
|
||||||
unsigned Y : 10; // Polls per frame
|
unsigned Y : 8; // Polls per frame
|
||||||
unsigned X : 10; // Polls per X lines. begins at vsync, min 7, max depends on video mode
|
unsigned X : 10; // Polls per X lines. begins at vsync, min 7, max depends on video mode
|
||||||
unsigned : 6;
|
unsigned : 6;
|
||||||
};
|
};
|
||||||
@ -395,7 +395,11 @@ void Write32(const u32 _iValue, const u32 _iAddress)
|
|||||||
case SI_CHANNEL_3_IN_HI: g_Channel[3].m_InHi.Hex = _iValue; break;
|
case SI_CHANNEL_3_IN_HI: g_Channel[3].m_InHi.Hex = _iValue; break;
|
||||||
case SI_CHANNEL_3_IN_LO: g_Channel[3].m_InLo.Hex = _iValue; break;
|
case SI_CHANNEL_3_IN_LO: g_Channel[3].m_InLo.Hex = _iValue; break;
|
||||||
|
|
||||||
case SI_POLL:
|
case SI_POLL:
|
||||||
|
DEBUG_LOG(SERIALINTERFACE, "Poll: X=%03d Y=%03d %s%s%s%s%s%s%s%s",
|
||||||
|
g_Poll.X, g_Poll.Y,
|
||||||
|
g_Poll.EN0 ? "EN0 ":" ", g_Poll.EN1 ? "EN1 ":" ", g_Poll.EN2 ? "EN2 ":" ", g_Poll.EN3 ? "EN3 ":" ",
|
||||||
|
g_Poll.VBCPY0 ? "VBCPY0 ":" ", g_Poll.VBCPY1 ? "VBCPY1 ":" ", g_Poll.VBCPY2 ? "VBCPY2 ":" ", g_Poll.VBCPY3 ? "VBCPY3 ":" ");
|
||||||
g_Poll.Hex = _iValue;
|
g_Poll.Hex = _iValue;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -30,6 +30,10 @@ namespace VideoInterface
|
|||||||
INT_REG_3,
|
INT_REG_3,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// For BIOS HLE
|
||||||
|
void PreInit(bool _bNTSC);
|
||||||
|
void SetRegionReg(char _region);
|
||||||
|
|
||||||
void Init();
|
void Init();
|
||||||
void DoState(PointerWrap &p);
|
void DoState(PointerWrap &p);
|
||||||
|
|
||||||
@ -41,28 +45,20 @@ namespace VideoInterface
|
|||||||
|
|
||||||
void GenerateVIInterrupt(VIInterruptType _VIInterrupt);
|
void GenerateVIInterrupt(VIInterruptType _VIInterrupt);
|
||||||
|
|
||||||
// returns a pointer to the current visible framebuffer
|
// returns a pointer to the current visible xfb
|
||||||
u8* GetFrameBufferPointer();
|
u8* GetXFBPointerTop();
|
||||||
|
u8* GetXFBPointerBottom();
|
||||||
|
|
||||||
// pre init
|
// Update and draw framebuffer(s)
|
||||||
void PreInit(bool _bNTSC);
|
|
||||||
|
|
||||||
void SetRegionReg(char _region);
|
|
||||||
|
|
||||||
// VI Unknown Regs
|
|
||||||
extern u8 m_UVIUnknownRegs[0x1000];
|
|
||||||
|
|
||||||
// ??????
|
|
||||||
void Update();
|
void Update();
|
||||||
|
|
||||||
|
|
||||||
// UpdateInterrupts: check if we have to generate a new VI Interrupt
|
// UpdateInterrupts: check if we have to generate a new VI Interrupt
|
||||||
void UpdateInterrupts();
|
void UpdateInterrupts();
|
||||||
|
|
||||||
// ??????
|
// Change values pertaining to video mode
|
||||||
void UpdateTiming();
|
void UpdateTiming();
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif // _VIDEOINTERFACE_H
|
||||||
|
|
||||||
|
|
||||||
|
@ -69,7 +69,6 @@ typedef struct
|
|||||||
TKeyPressed pKeyPress;
|
TKeyPressed pKeyPress;
|
||||||
|
|
||||||
SCPFifoStruct *pCPFifo;
|
SCPFifoStruct *pCPFifo;
|
||||||
unsigned char *pVIRegs;
|
|
||||||
void *pMemoryBase;
|
void *pMemoryBase;
|
||||||
bool bWii;
|
bool bWii;
|
||||||
bool bUseDualCore;
|
bool bUseDualCore;
|
||||||
|
Loading…
Reference in New Issue
Block a user