Support configuratable screen offset and remove resolved TODOs
This commit is contained in:
parent
ee78193bfd
commit
40c7dea1f0
|
@ -27,6 +27,9 @@ struct DefaultConfiguration {
|
||||||
static constexpr GPU::PositionU16 CLUT_load_pos();
|
static constexpr GPU::PositionU16 CLUT_load_pos();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// Offsets the default origin of the screen by the specified value
|
||||||
|
static constexpr auto DisplayDefaultOffset;
|
||||||
|
|
||||||
struct Periphery {
|
struct Periphery {
|
||||||
// Turns on the second controller port and enables multi tap support
|
// Turns on the second controller port and enables multi tap support
|
||||||
static constexpr bool include_portB();
|
static constexpr bool include_portB();
|
||||||
|
@ -36,6 +39,8 @@ struct DefaultConfiguration {
|
||||||
```
|
```
|
||||||
### `CustomConfiguration` macros
|
### `CustomConfiguration` macros
|
||||||
```c++
|
```c++
|
||||||
#define __USE_DEBUG_COLOR__ // Turns on colored rectangles during boot (off by default)
|
// Turns on colored rectangles during boot (off by default)
|
||||||
#define __SUPPORT_PS3__ // Turns on PS3 support (on by default)
|
#define __USE_DEBUG_COLOR__
|
||||||
|
// Turns on PS3 support (on by default)
|
||||||
|
#define __SUPPORT_PS3__
|
||||||
```
|
```
|
|
@ -164,7 +164,6 @@ namespace JabyEngine {
|
||||||
Interrupt::Type complete_irq;
|
Interrupt::Type complete_irq;
|
||||||
};
|
};
|
||||||
|
|
||||||
// TODO: Seems they all need to be ACK? Can we remove this?
|
|
||||||
static constexpr Desc GetStat{0x01, Interrupt::Type::Acknowledge};
|
static constexpr Desc GetStat{0x01, Interrupt::Type::Acknowledge};
|
||||||
static constexpr Desc SetLoc{0x02, Interrupt::Type::Acknowledge};
|
static constexpr Desc SetLoc{0x02, Interrupt::Type::Acknowledge};
|
||||||
static constexpr Desc Play{0x03, Interrupt::Type::Acknowledge};
|
static constexpr Desc Play{0x03, Interrupt::Type::Acknowledge};
|
||||||
|
|
|
@ -13,6 +13,8 @@ namespace JabyEngine {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static constexpr auto DisplayDefaultOffset = GPU::PositionI16::create(0, 0);
|
||||||
|
|
||||||
struct Periphery {
|
struct Periphery {
|
||||||
static constexpr bool include_portB() {
|
static constexpr bool include_portB() {
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -36,19 +36,6 @@ namespace JabyEngine {
|
||||||
Interrupt::enable_irq(Interrupt::CDROM);
|
Interrupt::enable_irq(Interrupt::CDROM);
|
||||||
Interrupt::ack_irq(Interrupt::CDROM);
|
Interrupt::ack_irq(Interrupt::CDROM);
|
||||||
SysCall::ExitCriticalSection();
|
SysCall::ExitCriticalSection();
|
||||||
|
|
||||||
// TODO: Do we need this at all?!
|
|
||||||
/*__debug_boot_color_at(::JabyEngine::GPU::Color24::Red(), DebugX, DebugY, DebugScale);
|
|
||||||
CD_IO::PortIndex0::change_to();
|
|
||||||
|
|
||||||
__debug_boot_color_at(::JabyEngine::GPU::Color24::Green(), DebugX, DebugY, DebugScale);
|
|
||||||
Command::send(CD_IO::Command::GetStat);
|
|
||||||
__debug_boot_color_at(::JabyEngine::GPU::Color24::Blue(), DebugX, DebugY, DebugScale);
|
|
||||||
Command::send(CD_IO::Command::GetStat);
|
|
||||||
__debug_boot_color_at(::JabyEngine::GPU::Color24::Yellow(), DebugX, DebugY, DebugScale);
|
|
||||||
Command::send(CD_IO::Command::Init);*/
|
|
||||||
|
|
||||||
//Command::send(CD_IO::Command::Demute);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,6 @@
|
||||||
namespace JabyEngine {
|
namespace JabyEngine {
|
||||||
namespace boot {
|
namespace boot {
|
||||||
namespace DMA {
|
namespace DMA {
|
||||||
// TODO: Do we want all of this? So far it didn't help
|
|
||||||
void setup() {
|
void setup() {
|
||||||
static constexpr auto EnableDMA = DMA_IO::DPCR::from(DMA_IO::DPCR::SPU.turn_on(3), DMA_IO::DPCR::GPU.turn_on(3), DMA_IO::DPCR::CDROM.turn_on(3));
|
static constexpr auto EnableDMA = DMA_IO::DPCR::from(DMA_IO::DPCR::SPU.turn_on(3), DMA_IO::DPCR::GPU.turn_on(3), DMA_IO::DPCR::CDROM.turn_on(3));
|
||||||
|
|
||||||
|
|
|
@ -84,12 +84,17 @@ namespace JabyEngine {
|
||||||
}
|
}
|
||||||
|
|
||||||
void Display :: set_offset(int16_t x, int16_t y) {
|
void Display :: set_offset(int16_t x, int16_t y) {
|
||||||
// TODO: Apply these in a better way or never?
|
// Does not matter really - The original offset is good enough
|
||||||
static constexpr auto PS3_CorrectionX = 0; // 2
|
#ifdef __ADJUST_PS3_SCREEN_OFFSET__
|
||||||
static constexpr auto PS3_CorrectionY = 0; // 1
|
static constexpr auto PS3_CorrectionX = 2;
|
||||||
|
static constexpr auto PS3_CorrectionY = 1;
|
||||||
x += internal::Display::DisplayRange.x;
|
#else
|
||||||
y += internal::Display::DisplayRange.y;
|
static constexpr auto PS3_CorrectionX = 0;
|
||||||
|
static constexpr auto PS3_CorrectionY = 0;
|
||||||
|
#endif // __ADJUST_PS3_SCREEN_OFFSET__
|
||||||
|
|
||||||
|
x += (internal::Display::DisplayRange.x + Configuration::DisplayDefaultOffset.x);
|
||||||
|
y += (internal::Display::DisplayRange.y + Configuration::DisplayDefaultOffset.y);
|
||||||
|
|
||||||
GPU_IO::GP1.write(GPU_IO::Command::HorizontalDisplayRange((x << 3), (x + Display::Width + PS3_CorrectionX) << 3));
|
GPU_IO::GP1.write(GPU_IO::Command::HorizontalDisplayRange((x << 3), (x + Display::Width + PS3_CorrectionX) << 3));
|
||||||
GPU_IO::GP1.write(GPU_IO::Command::VerticalDisplayRange(y, y + Display::Height + PS3_CorrectionY));
|
GPU_IO::GP1.write(GPU_IO::Command::VerticalDisplayRange(y, y + Display::Height + PS3_CorrectionY));
|
||||||
|
|
|
@ -57,7 +57,6 @@ static void* cplx_memset(void* dst, int val, size_t len) {
|
||||||
}
|
}
|
||||||
|
|
||||||
extern "C" {
|
extern "C" {
|
||||||
// TODO: Speed measure
|
|
||||||
void* memset(void* dest, int val, size_t len) {
|
void* memset(void* dest, int val, size_t len) {
|
||||||
return simple_memset(dest, val, len);
|
return simple_memset(dest, val, len);
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,8 +30,6 @@ pub fn create_audio_for_vec(audio_samples: &Vec<AudioSample>) -> Vec<Audio> {
|
||||||
let mut samples = &audio_samples[0..audio_samples.len()];
|
let mut samples = &audio_samples[0..audio_samples.len()];
|
||||||
let mut parsed_samples = Vec::new();
|
let mut parsed_samples = Vec::new();
|
||||||
|
|
||||||
// TODO: When asking to the LOC of a track, the PS1 does not consider the sector count and just returns (min:seconds);
|
|
||||||
// psxcdgen_ex has to make sure that songs start at sector 0
|
|
||||||
for _ in 0..samples_to_parse {
|
for _ in 0..samples_to_parse {
|
||||||
let mut audio = Audio::new();
|
let mut audio = Audio::new();
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue