Fixed some more RSP instructions, fix CI (hopefully)
This commit is contained in:
6
.github/workflows/build.yml
vendored
6
.github/workflows/build.yml
vendored
@@ -26,8 +26,7 @@ jobs:
|
||||
- name: Collect artifacts
|
||||
run: |
|
||||
mkdir upload
|
||||
cp -r resources upload
|
||||
cp build/natsukashii upload
|
||||
cp -r build/{natsukashii,resources} upload
|
||||
- name: Upload artifacts
|
||||
uses: actions/upload-artifact@v2
|
||||
with:
|
||||
@@ -63,8 +62,7 @@ jobs:
|
||||
- name: Collect artifacts
|
||||
run: |
|
||||
mkdir upload
|
||||
cp -r resources upload
|
||||
cp build/natsukashii.exe upload
|
||||
cp -r build/{natsukashii.exe,resources} upload
|
||||
- name: Upload artifacts
|
||||
uses: actions/upload-artifact@v2
|
||||
with:
|
||||
|
||||
@@ -53,4 +53,7 @@ elseif(${CMAKE_BUILD_TYPE} MATCHES Debug)
|
||||
target_compile_options(natsukashii PRIVATE -march=native -g)
|
||||
endif()
|
||||
|
||||
file(COPY ${PROJECT_SOURCE_DIR}/../resources/ DESTINATION ${PROJECT_BINARY_DIR}/resources/)
|
||||
file(REMOVE ${PROJECT_BINARY_DIR}/resources/mario.png ${PROJECT_BINARY_DIR}/resources/shader.frag ${PROJECT_BINARY_DIR}/resources/shader.vert)
|
||||
|
||||
target_link_libraries(natsukashii PRIVATE ${SDL2_LIBRARIES} ${LIBRARIES} capstone-static nfd parallel-rdp imgui fmt::fmt nlohmann_json::nlohmann_json)
|
||||
@@ -101,10 +101,10 @@ void Core::UpdateController(const u8* state) {
|
||||
bool DRIGHT = GET_BUTTON(gamepad, SDL_CONTROLLER_BUTTON_DPAD_RIGHT);
|
||||
bool L = GET_BUTTON(gamepad, SDL_CONTROLLER_BUTTON_LEFTSHOULDER);
|
||||
bool R = GET_BUTTON(gamepad, SDL_CONTROLLER_BUTTON_RIGHTSHOULDER);
|
||||
bool CUP = GET_AXIS(gamepad, SDL_CONTROLLER_AXIS_RIGHTY) == 32767;
|
||||
bool CDOWN = GET_AXIS(gamepad, SDL_CONTROLLER_AXIS_RIGHTY) == -32767;
|
||||
bool CLEFT = GET_AXIS(gamepad, SDL_CONTROLLER_AXIS_RIGHTX) == -32767;
|
||||
bool CRIGHT = GET_AXIS(gamepad, SDL_CONTROLLER_AXIS_RIGHTX) == 32767;
|
||||
bool CUP = GET_AXIS(gamepad, SDL_CONTROLLER_AXIS_RIGHTY) <= -128;
|
||||
bool CDOWN = GET_AXIS(gamepad, SDL_CONTROLLER_AXIS_RIGHTY) >= 127;
|
||||
bool CLEFT = GET_AXIS(gamepad, SDL_CONTROLLER_AXIS_RIGHTX) <= -128;
|
||||
bool CRIGHT = GET_AXIS(gamepad, SDL_CONTROLLER_AXIS_RIGHTX) >= 127;
|
||||
|
||||
controller.b1 = (A << 7) | (B << 6) | (Z << 5) | (START << 4) |
|
||||
(DUP << 3) | (DDOWN << 2) | (DLEFT << 1) | DRIGHT;
|
||||
|
||||
@@ -964,10 +964,15 @@ void RSP::vmacf(u32 instr) {
|
||||
VPR vte = GetVTE(vpr[VT(instr)], E2(instr));
|
||||
|
||||
for(int i = 0; i < 8; i++) {
|
||||
s32 prod = vs.selement[i] * vte.selement[i];
|
||||
s64 accDelta = prod * 2;
|
||||
s16 op1 = vte.element[i];
|
||||
s16 op2 = vs.element[i];
|
||||
s32 prod = op1 * op2;
|
||||
|
||||
s64 accDelta = prod;
|
||||
accDelta *= 2;
|
||||
s64 accum = GetACC(i) + accDelta;
|
||||
SetACC(i, accum);
|
||||
accum = GetACC(i);
|
||||
|
||||
s16 result = signedClamp(accum >> 16);
|
||||
vd.element[i] = result;
|
||||
@@ -1001,7 +1006,7 @@ void RSP::veq(u32 instr) {
|
||||
VPR vte = GetVTE(vpr[VT(instr)], e);
|
||||
|
||||
for(int i = 0; i < 8; i++) {
|
||||
vcc.l.element[i] = vco.h.element[i] || (vs.element[i] == vte.element[i]) ? 0xffff : 0;
|
||||
vcc.l.element[i] = (vco.h.element[i] == 0) && (vs.element[i] == vte.element[i]) ? 0xffff : 0;
|
||||
acc.l.element[i] = vcc.l.element[i] ? vs.element[i] : vte.element[i];
|
||||
vd.element[i] = acc.l.element[i];
|
||||
vcc.h.element[i] = vco.h.element[i] = vco.l.element[i] = 0;
|
||||
@@ -1267,6 +1272,8 @@ void RSP::vmrg(u32 instr) {
|
||||
for(int i = 0; i < 8; i++) {
|
||||
acc.l.element[i] = vcc.l.element[i] ? vs.element[i] : vte.element[i];
|
||||
vd.element[i] = acc.l.element[i];
|
||||
|
||||
vco.l.element[i] = vco.h.element[i] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user