2020-12-05 13:08:24 +01:00
|
|
|
#include "stdafx.h"
|
2016-03-21 20:43:03 +01:00
|
|
|
#include "Emu/Cell/PPUModule.h"
|
2017-03-19 21:15:04 +01:00
|
|
|
#include "Emu/Cell/lv2/sys_spu.h"
|
2013-09-28 04:36:57 +02:00
|
|
|
|
2018-08-25 14:39:00 +02:00
|
|
|
LOG_CHANNEL(cellOvis);
|
2013-09-28 04:36:57 +02:00
|
|
|
|
|
|
|
|
// Return Codes
|
2020-07-16 12:14:57 +02:00
|
|
|
enum CellOvisError : u32
|
2013-09-28 04:36:57 +02:00
|
|
|
{
|
|
|
|
|
CELL_OVIS_ERROR_INVAL = 0x80410402,
|
|
|
|
|
CELL_OVIS_ERROR_ABORT = 0x8041040C,
|
|
|
|
|
CELL_OVIS_ERROR_ALIGN = 0x80410410,
|
|
|
|
|
};
|
|
|
|
|
|
2025-04-05 21:50:45 +02:00
|
|
|
template <>
|
2020-07-16 12:14:57 +02:00
|
|
|
void fmt_class_string<CellOvisError>::format(std::string& out, u64 arg)
|
|
|
|
|
{
|
|
|
|
|
format_enum(out, arg, [](auto error)
|
|
|
|
|
{
|
2025-04-05 21:50:45 +02:00
|
|
|
switch (error)
|
|
|
|
|
{
|
|
|
|
|
STR_CASE(CELL_OVIS_ERROR_INVAL);
|
|
|
|
|
STR_CASE(CELL_OVIS_ERROR_ABORT);
|
|
|
|
|
STR_CASE(CELL_OVIS_ERROR_ALIGN);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return unknown;
|
|
|
|
|
});
|
2020-07-16 12:14:57 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
error_code cellOvisGetOverlayTableSize(vm::cptr<char> elf)
|
2013-09-28 04:36:57 +02:00
|
|
|
{
|
2016-08-11 01:29:59 +02:00
|
|
|
cellOvis.todo("cellOvisGetOverlayTableSize(elf=%s)", elf);
|
2013-09-28 04:36:57 +02:00
|
|
|
return CELL_OK;
|
|
|
|
|
}
|
|
|
|
|
|
2020-07-16 12:14:57 +02:00
|
|
|
error_code cellOvisInitializeOverlayTable(vm::ptr<void> ea_ovly_table, vm::cptr<char> elf)
|
2013-09-28 04:36:57 +02:00
|
|
|
{
|
2017-03-19 21:15:04 +01:00
|
|
|
cellOvis.todo("cellOvisInitializeOverlayTable(ea_ovly_table=*0x%x, elf=%s)", ea_ovly_table, elf);
|
2013-09-28 04:36:57 +02:00
|
|
|
return CELL_OK;
|
|
|
|
|
}
|
|
|
|
|
|
2017-04-13 17:35:49 +02:00
|
|
|
void cellOvisFixSpuSegments(vm::ptr<sys_spu_image> image)
|
2013-09-28 04:36:57 +02:00
|
|
|
{
|
2017-03-19 21:15:04 +01:00
|
|
|
cellOvis.todo("cellOvisFixSpuSegments(image=*0x%x)", image);
|
2013-09-28 04:36:57 +02:00
|
|
|
}
|
|
|
|
|
|
2017-03-19 21:15:04 +01:00
|
|
|
void cellOvisInvalidateOverlappedSegments(vm::ptr<sys_spu_segment> segs, vm::ptr<int> nsegs)
|
2013-09-28 04:36:57 +02:00
|
|
|
{
|
2017-03-19 21:15:04 +01:00
|
|
|
cellOvis.todo("cellOvisInvalidateOverlappedSegments(segs=*0x%x, nsegs=*0x%x)", segs, nsegs);
|
2013-09-28 04:36:57 +02:00
|
|
|
}
|
|
|
|
|
|
2016-03-21 20:43:03 +01:00
|
|
|
DECLARE(ppu_module_manager::cellOvis)("cellOvis", []()
|
2025-04-05 21:50:45 +02:00
|
|
|
{
|
|
|
|
|
REG_FUNC(cellOvis, cellOvisGetOverlayTableSize);
|
|
|
|
|
REG_FUNC(cellOvis, cellOvisInitializeOverlayTable);
|
|
|
|
|
REG_FUNC(cellOvis, cellOvisFixSpuSegments);
|
|
|
|
|
REG_FUNC(cellOvis, cellOvisInvalidateOverlappedSegments);
|
|
|
|
|
});
|