Adding audio stub methods.
This commit is contained in:
parent
ca22980dc0
commit
ebef2aef36
|
@ -104,13 +104,20 @@ bool AudioSystem::HandlesRegister(uint32_t addr) {
|
||||||
return (addr & 0xFFFF0000) == 0x7FEA0000;
|
return (addr & 0xFFFF0000) == 0x7FEA0000;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// free60 may be useful here, however it looks like it's using a different
|
||||||
|
// piece of hardware:
|
||||||
|
// https://github.com/Free60Project/libxenon/blob/master/libxenon/drivers/xenon_sound/sound.c
|
||||||
|
|
||||||
uint64_t AudioSystem::ReadRegister(uint32_t addr) {
|
uint64_t AudioSystem::ReadRegister(uint32_t addr) {
|
||||||
uint32_t r = addr & 0xFFFF;
|
uint32_t r = addr & 0xFFFF;
|
||||||
XELOGAPU("ReadRegister(%.4X)", r);
|
XELOGAPU("ReadRegister(%.4X)", r);
|
||||||
|
// 1800h is read on startup and stored -- context? buffers?
|
||||||
|
// 1818h is read during a lock?
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void AudioSystem::WriteRegister(uint32_t addr, uint64_t value) {
|
void AudioSystem::WriteRegister(uint32_t addr, uint64_t value) {
|
||||||
uint32_t r = addr & 0xFFFF;
|
uint32_t r = addr & 0xFFFF;
|
||||||
XELOGAPU("WriteRegister(%.4X, %.8X)", r, value);
|
XELOGAPU("WriteRegister(%.4X, %.8X)", r, value);
|
||||||
|
// 1804h is written to with 0x02000000 and 0x03000000 around a lock operation
|
||||||
}
|
}
|
|
@ -7,6 +7,8 @@
|
||||||
'kernel_state.h',
|
'kernel_state.h',
|
||||||
'object_table.cc',
|
'object_table.cc',
|
||||||
'object_table.h',
|
'object_table.h',
|
||||||
|
'xboxkrnl_audio.cc',
|
||||||
|
'xboxkrnl_audio.h',
|
||||||
'xboxkrnl_debug.cc',
|
'xboxkrnl_debug.cc',
|
||||||
'xboxkrnl_debug.h',
|
'xboxkrnl_debug.h',
|
||||||
'xboxkrnl_hal.cc',
|
'xboxkrnl_hal.cc',
|
||||||
|
|
|
@ -0,0 +1,83 @@
|
||||||
|
/**
|
||||||
|
******************************************************************************
|
||||||
|
* Xenia : Xbox 360 Emulator Research Project *
|
||||||
|
******************************************************************************
|
||||||
|
* Copyright 2013 Ben Vanik. All rights reserved. *
|
||||||
|
* Released under the BSD license - see LICENSE in the root for more details. *
|
||||||
|
******************************************************************************
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <xenia/kernel/xboxkrnl/xboxkrnl_audio.h>
|
||||||
|
|
||||||
|
#include <xenia/apu/apu.h>
|
||||||
|
#include <xenia/kernel/shim_utils.h>
|
||||||
|
#include <xenia/kernel/xboxkrnl/kernel_state.h>
|
||||||
|
#include <xenia/kernel/xboxkrnl/xboxkrnl_private.h>
|
||||||
|
|
||||||
|
|
||||||
|
using namespace xe;
|
||||||
|
using namespace xe::apu;
|
||||||
|
using namespace xe::kernel;
|
||||||
|
using namespace xe::kernel::xboxkrnl;
|
||||||
|
|
||||||
|
|
||||||
|
namespace xe {
|
||||||
|
namespace kernel {
|
||||||
|
namespace xboxkrnl {
|
||||||
|
|
||||||
|
|
||||||
|
SHIM_CALL XMACreateContext_shim(
|
||||||
|
xe_ppc_state_t* ppc_state, KernelState* state) {
|
||||||
|
uint32_t context_ptr = SHIM_GET_ARG_32(0);
|
||||||
|
|
||||||
|
XELOGD(
|
||||||
|
"XMACreateContext(%.8X)",
|
||||||
|
context_ptr);
|
||||||
|
|
||||||
|
// TODO(benvanik): allocate and return -- see if size required or just dummy?
|
||||||
|
|
||||||
|
SHIM_SET_RETURN(X_ERROR_ACCESS_DENIED);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
SHIM_CALL XMAReleaseContext_shim(
|
||||||
|
xe_ppc_state_t* ppc_state, KernelState* state) {
|
||||||
|
uint32_t context_ptr = SHIM_GET_ARG_32(0);
|
||||||
|
|
||||||
|
XELOGD(
|
||||||
|
"XMAReleaseContext(%.8X)",
|
||||||
|
context_ptr);
|
||||||
|
|
||||||
|
// TODO(benvanik): free
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
} // namespace xboxkrnl
|
||||||
|
} // namespace kernel
|
||||||
|
} // namespace xe
|
||||||
|
|
||||||
|
|
||||||
|
void xe::kernel::xboxkrnl::RegisterAudioExports(
|
||||||
|
ExportResolver* export_resolver, KernelState* state) {
|
||||||
|
SHIM_SET_MAPPING("xboxkrnl.exe", XMACreateContext, state);
|
||||||
|
// SHIM_SET_MAPPING("xboxkrnl.exe", XMAInitializeContext, state);
|
||||||
|
SHIM_SET_MAPPING("xboxkrnl.exe", XMAReleaseContext, state);
|
||||||
|
// SHIM_SET_MAPPING("xboxkrnl.exe", XMAEnableContext, state);
|
||||||
|
// SHIM_SET_MAPPING("xboxkrnl.exe", XMADisableContext, state);
|
||||||
|
// SHIM_SET_MAPPING("xboxkrnl.exe", XMAGetOutputBufferWriteOffset, state);
|
||||||
|
// SHIM_SET_MAPPING("xboxkrnl.exe", XMASetOutputBufferReadOffset, state);
|
||||||
|
// SHIM_SET_MAPPING("xboxkrnl.exe", XMAGetOutputBufferReadOffset, state);
|
||||||
|
// SHIM_SET_MAPPING("xboxkrnl.exe", XMASetOutputBufferValid, state);
|
||||||
|
// SHIM_SET_MAPPING("xboxkrnl.exe", XMAIsOutputBufferValid, state);
|
||||||
|
// SHIM_SET_MAPPING("xboxkrnl.exe", XMASetInputBuffer0Valid, state);
|
||||||
|
// SHIM_SET_MAPPING("xboxkrnl.exe", XMAIsInputBuffer0Valid, state);
|
||||||
|
// SHIM_SET_MAPPING("xboxkrnl.exe", XMASetInputBuffer1Valid, state);
|
||||||
|
// SHIM_SET_MAPPING("xboxkrnl.exe", XMAIsInputBuffer1Valid, state);
|
||||||
|
// SHIM_SET_MAPPING("xboxkrnl.exe", XMASetInputBuffer0, state);
|
||||||
|
// SHIM_SET_MAPPING("xboxkrnl.exe", XMASetInputBuffer1, state);
|
||||||
|
// SHIM_SET_MAPPING("xboxkrnl.exe", XMAGetPacketMetadata, state);
|
||||||
|
// SHIM_SET_MAPPING("xboxkrnl.exe", XMABlockWhileInUse, state);
|
||||||
|
// SHIM_SET_MAPPING("xboxkrnl.exe", XMASetLoopData, state);
|
||||||
|
// SHIM_SET_MAPPING("xboxkrnl.exe", XMASetInputBufferReadOffset, state);
|
||||||
|
// SHIM_SET_MAPPING("xboxkrnl.exe", XMAGetInputBufferReadOffset, state);
|
||||||
|
}
|
|
@ -0,0 +1,29 @@
|
||||||
|
/**
|
||||||
|
******************************************************************************
|
||||||
|
* Xenia : Xbox 360 Emulator Research Project *
|
||||||
|
******************************************************************************
|
||||||
|
* Copyright 2013 Ben Vanik. All rights reserved. *
|
||||||
|
* Released under the BSD license - see LICENSE in the root for more details. *
|
||||||
|
******************************************************************************
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef XENIA_KERNEL_XBOXKRNL_AUDIO_H_
|
||||||
|
#define XENIA_KERNEL_XBOXKRNL_AUDIO_H_
|
||||||
|
|
||||||
|
#include <xenia/common.h>
|
||||||
|
#include <xenia/core.h>
|
||||||
|
|
||||||
|
#include <xenia/xbox.h>
|
||||||
|
|
||||||
|
|
||||||
|
namespace xe {
|
||||||
|
namespace kernel {
|
||||||
|
namespace xboxkrnl {
|
||||||
|
|
||||||
|
|
||||||
|
} // namespace xboxkrnl
|
||||||
|
} // namespace kernel
|
||||||
|
} // namespace xe
|
||||||
|
|
||||||
|
|
||||||
|
#endif // XENIA_KERNEL_XBOXKRNL_AUDIO_H_
|
|
@ -29,6 +29,7 @@ class KernelState;
|
||||||
extern KernelState* shared_kernel_state_;
|
extern KernelState* shared_kernel_state_;
|
||||||
|
|
||||||
// Registration functions, one per file.
|
// Registration functions, one per file.
|
||||||
|
void RegisterAudioExports(ExportResolver* export_resolver, KernelState* state);
|
||||||
void RegisterDebugExports(ExportResolver* export_resolver, KernelState* state);
|
void RegisterDebugExports(ExportResolver* export_resolver, KernelState* state);
|
||||||
void RegisterHalExports(ExportResolver* export_resolver, KernelState* state);
|
void RegisterHalExports(ExportResolver* export_resolver, KernelState* state);
|
||||||
void RegisterIoExports(ExportResolver* export_resolver, KernelState* state);
|
void RegisterIoExports(ExportResolver* export_resolver, KernelState* state);
|
||||||
|
|
Loading…
Reference in New Issue