Commit graph

300 commits

Author SHA1 Message Date
StrikerX3
7d51dd13c1 Refine ATA channel methods
Moved files around
2018-12-03 19:56:13 -02:00
StrikerX3
fa769c1212 Restructure ATA implementation 2018-12-03 19:33:57 -02:00
StrikerX3
7be0a89e32 IRQ assertion level is better represented by a bool
Improve documentation on ATA emulation
2018-12-03 18:55:56 -02:00
StrikerX3
685c764f2e Fix compilation error
Namespaces are annoying...
2018-12-03 17:14:22 -02:00
StrikerX3
db01ec0263 Begin structuring the ATA emulator 2018-12-03 16:27:17 -02:00
StrikerX3
9d0c3c8518 Stub ATA device 2018-12-03 12:56:41 -02:00
StrikerX3
26d6f9d529 Write 0 on unimplemented reads 2018-12-03 12:56:33 -02:00
StrikerX3
9f0baa2ef0 Reduce log verbosity 2018-12-03 12:56:12 -02:00
StrikerX3
e1c24c52b9 Sync OHCI code up to Cxbx-R commit 169806b2
This is the latest OHCI related code. Nothing related to SDL2 was ported. Needs major improvements.
2018-12-03 01:58:23 -02:00
StrikerX3
b81de821a9 HostBridgeDevice::PCIMMIORead: zero out values 2018-12-02 23:45:03 -02:00
StrikerX3
e1540cb2d4 Allow expanding RAM to 128 MiB on retail systems
This allows modified BIOSes to use the extra RAM
2018-12-02 23:44:36 -02:00
StrikerX3
931ed595e0 Fix SMC revision retrieval 2018-12-02 23:02:03 -02:00
StrikerX3
8e9539f8a9 Refactored CPU modules
Moved eveything related to modules to a new namespace: openxbox::modules. Likewise, all CPU module source code now belongs to the openxbox::modules::cpu namespace.

CPU code has been moved to openxbox::cpu.

CPU module capabilities are now exported by libraries. Users can check for optional features.
2018-12-02 21:53:50 -02:00
StrikerX3
8015b4a1d7 Remove unused label 2018-12-02 21:48:28 -02:00
StrikerX3
664f3b9ec9 Implemented status codes for CPU modules
Added methods to read/write registers in bulk
Made CPU single stepping an optional operation
2018-12-02 19:21:44 -02:00
StrikerX3
f53bcee8cd Use proper status codes for initialization operations 2018-12-02 17:06:10 -02:00
StrikerX3
3525d85329 Reorganized initialization and cleanup code
With this, using the Xbox class is much easier and less error-prone.

Also removed XBE related code since we can't load an XBE into the guest just yet
2018-12-02 16:40:13 -02:00
StrikerX3
e9100ca189 Preinitialize settings within Xbox
Settings can now be modified by getting a pointer to the OpenXBOXSettings struct embedded in the Xbox class
2018-12-02 16:22:16 -02:00
StrikerX3
c7f61099c9 Improved/simplified interrupt handling
Will no longer skip interrupts, but runs the risk of overloading the CPU with interrupt work or creating a long queue of outstanding interrupt requests
2018-12-02 16:20:55 -02:00
StrikerX3
090755d21d Make dumping stack and disassembly on exit optional 2018-12-02 16:01:30 -02:00
StrikerX3
de834a3438 Clarify kernel detection message
Previously it would seem that the emulator was extracting and decrypting the kernel itself, which is not the case
2018-12-02 15:43:49 -02:00
StrikerX3
5df763cfa7 Extract and log kernel version 2018-12-02 15:40:19 -02:00
StrikerX3
da92a7f38f Add option to stop emulation on bug checks
This will only work on original or modified Microsoft kernels
2018-12-02 15:28:16 -02:00
StrikerX3
30c0a1204c Always log fatal errors 2018-12-02 15:06:31 -02:00
StrikerX3
55bdef212b Configurable SMC fatal error code handling
One toggle enables fatal error logging, the other causes the emulator to stop when a fatal error is detected
2018-12-02 15:04:30 -02:00
StrikerX3
68f388a219 Reduce log clutter 2018-12-02 15:03:32 -02:00
StrikerX3
810b55a984 Allow Super I/O to be enabled on retail systems
Some modified BIOSes run on retail systems and include the kernel debugger that uses the serial port for communication. Having this as an option is very useful, as specifying a debug kit modifies hardware in a way that might be incompatible with those BIOSes.

The Super I/O hardware is always enabled on debug kits.
2018-12-02 14:52:07 -02:00
StrikerX3
9c24a77856 SMBus: handle word reads/writes correctly 2018-12-02 14:41:15 -02:00
StrikerX3
a1adbaad4a Fix NVAPU initialization 2018-12-02 14:40:57 -02:00
StrikerX3
e10b25cd02 Start fixing SMBus 2018-12-02 14:27:26 -02:00
StrikerX3
4d8d77451c Parse LED sequences correctly
Don't stop emulation when a fatal error occurs (for now)
2018-12-02 13:57:34 -02:00
StrikerX3
d35fd70a2f Parse fatal error codes sent to the SMC
Stop emulation upon hitting a fatal error

Fix kernel executable header parsing; should consistently find the kernel thunk table now
2018-12-02 12:57:06 -02:00
StrikerX3
a74ac1d986 MCPX ROM should only replace the last 512 bytes of x86 address space 2018-12-02 10:38:48 -02:00
StrikerX3
00b5e62d08 Replicate ROM even if MCPX is not enabled 2018-12-02 02:12:12 -02:00
StrikerX3
e047a6c9bb Let the LPC device handle ROM
When the LPC PCI configuration is changed to disable the MCPX ROM, it will restore the original BIOS image automatically
2018-12-02 01:53:09 -02:00
StrikerX3
19a2ca6870 Move IOMapper to common module 2018-12-02 01:50:09 -02:00
StrikerX3
04bcf0970b Include util.h in precompiled header 2018-12-02 01:49:51 -02:00
StrikerX3
22ab117688 Fix small typo 2018-12-02 01:49:31 -02:00
StrikerX3
7920ed9431 IDE controller PCI BAR for I/O is 4, not 0 2018-12-01 18:58:11 -02:00
StrikerX3
df1fb0680f Should not check PCI_COMMAND when mapping I/O 2018-12-01 18:57:39 -02:00
StrikerX3
84f770ece0 Properly initialize NV2A structs 2018-12-01 18:56:54 -02:00
StrikerX3
4d7ee3cf0d Properly initialize NV2A structs 2018-12-01 18:56:34 -02:00
StrikerX3
5113f68040 Add support for guest breakpoints 2018-12-01 17:00:38 -02:00
StrikerX3
cfbe210eb2 Dump CPU registers and stack on a bug check 2018-12-01 15:57:45 -02:00
StrikerX3
7ea044a01a Stubbed APU I/O functions 2018-12-01 15:57:19 -02:00
StrikerX3
23c736e434 Added some debugging helpers 2018-12-01 12:52:26 -02:00
StrikerX3
678918a172 Stubbed I/O and MMIO handlers for all devices 2018-12-01 12:52:07 -02:00
StrikerX3
9767740735 Simplify ISA bus IRQ initialization 2018-12-01 11:14:59 -02:00
StrikerX3
b2620af07c Log spew unimplemented SMC functions 2018-12-01 11:13:24 -02:00
StrikerX3
11ebc970f7 Fix i8259 slave IRQ mapping
This fixes hangs early on during kernel initialization
2018-12-01 11:13:06 -02:00