– Some code runs. [Insert any game name here] doesn’t.
– Asserts! Crashes! Hangs! Blank screens!
Xenia Git Changelog:
* Adding tests for broken rlwnm and rliwnm. Not yet fixed.
* Fixing mullw.
* Faster clearing of heaps to speed up tests.
* Marking some memory instructions as kM.
* More gracefully handle killed threads. Still needs some UI love.
* Updating to the latest capstone. Fixes #440.
* Avoid duplicate object handle assignment on creation.
* Better trap message.
* Formatting all code. Too gnarly to rebase properly.
* Assign XModule path on load rather than in the constructor
* Mark XThreads as running before calling Execute
* Use a 64-bit bitmap rather than a 32-bit bitmap.
* Update TLS comments
* Compensate for static TLS when accessing dynamic TLS.
* XThread acquire mutants on restore
* XFile setup async_event_ in the restore constructor
* Fix XSemaphores saving/restoring a bad counter
* BitMap: Change the size param to the number of entries (bits)
* Store thread TLS in guest memory rather than using host APIs
* Threadsafe bitmap class
* Register user-modules with the kernel in UserModule::Restore
* Remove modules from the object table if they fail to load.
* Fixup UserModule::LoadFromFile to use new vfs API
* Non-const ByteStream::data()
* Make XObject::GetWaitHandle a protected function
* debugger: Don’t feed the stack walker an XThread’s wait handle
* Fix VFS files not having correct paths recorded.
* XMutant Save/Restore
* Call XObject::WaitCallback on successful waits
* XamLoaderLaunchData: Fix incorrect return values when launch data is not present.
* X64CodeCache: Add a couple of overflow debug asserts
* KernelState::TerminateTitle – Release the global lock in smaller regions / No need for an argument specifying if called from guest
* XFile Save/Restore
* REBASE: fixing xthread instruction decoding.
* Remove vfs dependency on kernel, implement I/O completion ports
* XThread: Only need to retain a pointer to our object – not a handle.
* XThread free stack on destruction
* XThread: Special case save/restore for threads no longer running.
* Fix XThread::StepIntoBranch not properly stepping into blr/bctr
* Save/Restore the guest clock in XThreads
* XModule log on save/restore
* Fix infinite loop in StepToSafePoint after stepping to an address once
* Don’t update the dispatch header in KetSetEvent/KeResetEvent (threading issues)
* Fix RingBuffer::EndRead not detecting a split read (where second length == 0)
* XSemaphore Save/Restore
* Save/Restore XThreads before any other kernel objects
* Rewrite Rtl critical section implementation (and implement full waiters)
* XThread: Update the PC when we step out of an export!
* Fix AudioSystem Restore and cleanup some code
* AudioSystem Save/Restore
* XThread – Fix unconditional conditional branch check
* AudioSystem – switch to a free flag for free clients rather than a queue.
* GraphicsSystem Save/Restore
* Fix not assigning write access to WriteCombine pages on restore.
* X64Backend: Take a reference of the pair rather than a copy (and formatting)
* Add (temporary) shortcuts to save(F7)/restore(F8) to a file called “test.sav”
* Make KernelState::TerminateTitle try to terminate XThreads safely.
* Install false-branch breakpoint only if the opcode is conditional.
* XThread::StepToSafePoint – Handle cases where the thread hasn’t started yet.
* Make the processor automatically generate any ungenerated functions when installing a breakpoint.
* memory: Write no access pages to the savefile.
* Hold the global lock while restoring from a file.
* NativeList getters/setters
* Can’t call constructors from other constructors
* Processor breakpoints: Change iterators to C++11 syntax where necessary
* NotifyListener Save/Restore
* XObject no kernel state constructor
* NativeList default constructor
* Fix xam_net.cc
* XModule Save/Restore
* No need to double-retain Ke* objects, as having them in the object table is enough.
* Retain objects when restored into the object table.
* Remove ~NotifyListener call to UnregisterNotifyListener (as it’s impossible for this to occur)
* Fix incorrect double-retaining of objects on restore.
* Use TLS to store the current thread.
* XObject::host_object -> XObject::is_host_object
* Use c_str() when passing a string to sprintf!
* XEvent write signaled state
* XThread::set_name – Use more efficient xe::format_string instead of a StringBuffer
* Remove dead code from UserModule (how did this even get here?)
* MappedMemory: Support opening empty files (and extending them) / remapping files / Truncate on close
* Remove unused XboxkrnlModule::LaunchModule
* XThread Save: Handle emulated instructions/MMIO/etc that call out of guest code
* Fix the assert on no restore handler found
* XEvent Save/Restore (TODO: Write signaled state)
* ObjectTable Save/Restore (and overloads/PurgeAllObjects/GetAllObjects)
* REBASE: Fixing Memory::Reset().
* memory Save/Restore
* emulator.cc savestates
Change UserModule::Launch to be non-blocking (returns the main thread)
* Stash handles rather than native pointers in Ke* objects.
* XThread Save/Restore
* REBASE: Fix vector out of range access.
* XObject savestate setup (Save/Restore, tracks all handles, tracks if host object)
* Fix CaptureStackTrace with null out_stack_hash
* KernelState::Save/Restore (and misc. changes)
* RawModule::SetAddressRange – Notify the backend about this range.
* ExecuteRaw: Pass in 0xBC… magic so Xenia will return to the guest caller.
* Remove Function::Call extern handler shortcut (as we need old behavior for savestates)
* Uninstall the X64 backend exception callback on exit.
* Flag mfmsr/mtmsr/mtmsrd as context-synchronizing instructions
* XObject Save/Restore
* ByteStream class
* Track export data on kernel trampolines as well.
* Fix NtWaitForMultipleObjectsEx definition
* Export kBlocking tag
* Track export data on Guest Functions
* Remove processor dependency on XThread for breakpoints
* Cleanup ThreadState and XThread
* Automatically install any CPU breakpoints in any newly-defined functions if necessary.
* Fix incorrect backend breakpoints implementation
* cpu::Processor now tracks a pointer to the emulator.
Changed the breakpoint lock to a recursive mutex.
* Allow breakpoint addresses to be changed after creation
* Processor breakpoint support
* Possible fix for failing to create files.
* Adding finer-grained instruction classification.