Save state
This commit is contained in:
@@ -72,7 +72,7 @@ namespace JabyEngine {
|
||||
#endif // __SUPPORT_PS3__
|
||||
|
||||
static void wait() {
|
||||
::JabyEngine::DMA_IO::GPU.wait();
|
||||
DMA_IO::GPU.wait();
|
||||
}
|
||||
|
||||
static void end() {
|
||||
@@ -101,7 +101,7 @@ namespace JabyEngine {
|
||||
}
|
||||
|
||||
static void start(uint16_t blockCount, uint16_t wordsPerBlock = 0x10) {
|
||||
typedef DMA_IO::BCR::SyncMode1 SyncMode1;
|
||||
using SyncMode1 = DMA_IO::BCR::SyncMode1;
|
||||
|
||||
#ifdef __SUPPORT_PS3__
|
||||
DMA_IO::GPU.set_adr(MADR);
|
||||
|
@@ -1,2 +1,43 @@
|
||||
#pragma once
|
||||
#include <PSX/System/IOPorts/dma_io.hpp>
|
||||
#include <PSX/SPU/spu.hpp>
|
||||
|
||||
namespace JabyEngine {
|
||||
namespace SPU {
|
||||
namespace internal {
|
||||
namespace DMA {
|
||||
static void wait() {
|
||||
DMA_IO::SPU.wait();
|
||||
}
|
||||
|
||||
static void end() {
|
||||
SPU_IO::ControlRegister.set_transfer_mode(SPU_IO::ControlRegister::Stop);
|
||||
}
|
||||
|
||||
namespace Receive {
|
||||
static void prepare() {
|
||||
SPU_IO::DataTransferControl.write(SPU_IO::DataTransferControl::NormalTransferMode());
|
||||
SPU_IO::ControlRegister.set_transfer_mode(SPU_IO::ControlRegister::Stop);
|
||||
SPU_IO::ControlRegister.set_transfer_mode(SPU_IO::ControlRegister::DMAWrite);
|
||||
}
|
||||
|
||||
static void set_src(SPU::SRAM_Adr adr) {
|
||||
DMA_IO::SPU.set_adr(adr);
|
||||
}
|
||||
|
||||
static void set_dst(SPU::SRAM_Adr adr) {
|
||||
SPU_IO::SRAMTransferAdr.write(adr);
|
||||
}
|
||||
|
||||
// Not adjusted yet
|
||||
static void start(uint16_t blockCount, uint16_t wordsPerBlock = 0x10) {
|
||||
using SyncMode1 = DMA_IO::BCR::SyncMode1;
|
||||
|
||||
DMA_IO::SPU.block_ctrl.write(DMA_IO::BCR::from(SyncMode1::BlockSize.with(wordsPerBlock), SyncMode1::BlockAmount.with(blockCount)));
|
||||
DMA_IO::SPU.channel_ctrl.write(DMA_IO::CHCHR::StartSPUReceive());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -1,3 +1,4 @@
|
||||
#include "../../../internal-include/SPU/spu_internal.hpp"
|
||||
#include <PSX/Auxiliary/big_endian.hpp>
|
||||
#include <PSX/File/file_processor_helper.hpp>
|
||||
#include <PSX/SPU/spu.hpp>
|
||||
@@ -38,15 +39,23 @@ namespace JabyEngine {
|
||||
}
|
||||
};
|
||||
|
||||
static Progress parse_sample(State::Configuration& config, VAGState& state) {
|
||||
// Load balancer?
|
||||
|
||||
}
|
||||
|
||||
static Progress parse_header(State::Configuration& config, VAGState& state) {
|
||||
if(config.data_bytes >= sizeof(VAGHeader)) {
|
||||
const auto& header = *reinterpret_cast<const VAGHeader*>(config.data_adr);
|
||||
|
||||
state.bytes_left = header.get_sample_size();
|
||||
state.adr = SPU::voice[state.voice_id].allocate(SPU_IO::SampleRate::from_HZ(header.get_sample_frequency()), state.bytes_left);
|
||||
state.adr = SPU::voice[state.voice_id].allocate(SPU_IO::SampleRate::from_HZ(header.get_sample_frequency()), state.bytes_left);
|
||||
|
||||
SPU::internal::DMA::Receive::prepare();
|
||||
SPU::internal::DMA::Receive::set_dst(state.adr);
|
||||
|
||||
// TODO: Parse samples
|
||||
return Progress::Error;
|
||||
config.processed(sizeof(VAGHeader));
|
||||
return Helper::exchange_and_execute_process_function(parse_sample, config, state);
|
||||
}
|
||||
|
||||
return Progress::InProgress;
|
||||
|
Reference in New Issue
Block a user