Skip to content

Instantly share code, notes, and snippets.

View Subv's full-sized avatar

Sebastian Valle Subv

  • Barranquilla, Colombia
View GitHub Profile
SUCCESS: [SDMC] Opening archive
SUCCESS: [SDMC] Creating and deleting file
SUCCESS: [SDMC] Renaming file
SUCCESS: [SDMC] Writing and reading file
SUCCESS: [SDMC] Creating and deleting directory
SUCCESS: [SDMC] Renaming directory
SUCCESS: [SDMC] Closing archive
SUCCESS: [Integer] ADD
SUCCESS: [Integer] SUB
diff --git a/src/core/hle/service/y2r_u.cpp b/src/core/hle/service/y2r_u.cpp
index 6607965..a8299c2 100644
--- a/src/core/hle/service/y2r_u.cpp
+++ b/src/core/hle/service/y2r_u.cpp
@@ -69,6 +69,7 @@ const Interface::FunctionInfo FunctionTable[] = {
Interface::Interface() {
completion_event = Kernel::Event::Create(RESETTYPE_ONESHOT, "Y2R:Completed");
+ completion_event->Signal();
diff --git a/src/core/hle/service/apt/apt.cpp b/src/core/hle/service/apt/apt.cpp
index 5971f86..d2917f7 100644
--- a/src/core/hle/service/apt/apt.cpp
+++ b/src/core/hle/service/apt/apt.cpp
@@ -43,7 +43,7 @@ void Initialize(Service::Interface* self) {
// TODO(bunnei): Check if these events are cleared/signaled every time Initialize is called.
notification_event->Clear();
- pause_event->Signal(); // Fire start event
+ pause_event->Clear();
#define ASSERT_REG_POSITION(field_name, position) static_assert(offsetof(Regs, field_name) == position * 4, "Field "#field_name" has invalid position")
ASSERT_REG_POSITION(trigger_irq, 0x10);
ASSERT_REG_POSITION(cull_mode, 0x40);
ASSERT_REG_POSITION(viewport_size_x, 0x41);
ASSERT_REG_POSITION(viewport_size_y, 0x43);
ASSERT_REG_POSITION(viewport_depth_range, 0x4d);
ASSERT_REG_POSITION(viewport_depth_far_plane, 0x4e);
ASSERT_REG_POSITION(vs_output_attributes[0], 0x50);
ASSERT_REG_POSITION(vs_output_attributes[1], 0x51);
#define ASSERT_REG_POSITION(field_name, position) static_assert(offsetof(Regs, field_name) == position * 4, "Field "#field_name" has invalid position")
#ifdef _MSC_VER
#define ASSERT_REG_POSITION_ARRAY(field_name, index, position) static_assert(std::is_array<decltype(Regs::field_name)>::value, "Field is not an array"); static_assert(offsetof(Regs, field_name) + index * sizeof(Regs().field_name[0]) == 4 * position, "Field "#field_name" error")
#else
#define ASSERT_REG_POSITION_ARRAY(field_name, index, position) ASSERT_REG_POSITION(field_name[index], position)
#endif
ASSERT_REG_POSITION(trigger_irq, 0x10);
ASSERT_REG_POSITION(cull_mode, 0x40);
[ 807.168725] Core.ARM11 <Warning> core\arm\interpreter\armsupp.cpp:WriteCP15Register:455: Cache operations are not fully implemented.
[ 807.168725] Kernel.SVC <Trace> core\hle\svc.cpp:SVC::SendSyncRequest:128: called handle=0x00100032(gsp::Gpu)
[ 807.168725] Service <Trace> core\hle\service\service.cpp:Service::Interface::SyncRequest:81: function 'TriggerCmdReqQueue': port=gsp::Gpu
[ 807.187739] Kernel.SVC <Trace> core\hle\svc.cpp:SVC::WaitSynchronization1:146: called handle=0x00108033(Event:Unknown), nanoseconds=-1
[ 807.187739] Kernel.SVC <Trace> core\hle\svc.cpp:SVC::ClearEvent:508: called event=0x00108033
[ 807.187739] Kernel.SVC <Trace> core\hle\svc.cpp:SVC::WaitSynchronization1:146: called handle=0x00108033(Event:Unknown), nanoseconds=-1
[ 807.188749] Kernel.SVC <Trace> core\hle\svc.cpp:SVC::ArbitrateAddress:280: called handle=0x00000001, address=0x0038CCA4, type=0x00000001, value=0x00000000
[ 807.196729] Kernel.SVC <Trace> core\hle\svc.cpp:SVC::ClearEvent:508: called event=0x000D002A
[ 807.198746] Ker
diff --git a/src/video_core/vertex_shader.cpp b/src/video_core/vertex_shader.cpp
index e8d8651..ccd4b09 100644
--- a/src/video_core/vertex_shader.cpp
+++ b/src/video_core/vertex_shader.cpp
@@ -164,9 +164,12 @@ static void ProcessShaderCode(VertexShaderState& state) {
// For now, we just abort in this situation.
ASSERT_MSG(!is_inverted, "Bad condition...");
- const int address_offset = (instr.common.address_register_index == 0)
+ int address_offset = (instr.common.address_register_index == 0)
@@ -154,6 +154,10 @@ static void ProcessShaderCode(VertexShaderState& state) {
return &state.temporary_registers[source_reg.GetIndex()].x;
case RegisterType::FloatUniform:
if (source_reg.GetIndex() >= 96) {
LOG_CRITICAL(HW_GPU, "Trying to load too much %u", source_reg.GetIndex());
return dummy_vec4_float24;
}
return &shader_uniforms.f[source_reg.GetIndex()].x;
Hello World!
Successfully read input file
Initialization done, starting playback now
Initial playback GPU state setup done
Writing 0x00000001 to register
0x004018f0 <-- Command List Trigger
Waiting for operation to finish..
Writing 0x03000000 to register 0x00400c00
Writing 0x04339ed0 to register 0x00400c04
@@ -164,9 +164,12 @@ static void ProcessShaderCode(VertexShaderState& state) {
// For now, we just abort in this situation.
ASSERT_MSG(!is_inverted, "Bad condition...");
const int address_offset = (instr.common.address_register_index == 0)
int address_offset = (instr.common.address_register_index == 0)
? 0 : state.address_registers[instr.common.address_register_index - 1];
+ if (address_offset < -95 || address_offset > 95)
+ address_offset = 0;