From c34e3246742754317d05d6117c2df3ca2d71e4e8 Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Thu, 6 Aug 2020 17:12:59 -0700 Subject: [PATCH 1/9] Qt: Add dummy English translation file (fixes #1469) --- CHANGES | 1 + src/platform/qt/SettingsView.cpp | 3 +++ src/platform/qt/ts/mgba-en.ts | 4 ++++ 3 files changed, 8 insertions(+) create mode 100644 src/platform/qt/ts/mgba-en.ts diff --git a/CHANGES b/CHANGES index 61fc9edc5..98dffa506 100644 --- a/CHANGES +++ b/CHANGES @@ -32,6 +32,7 @@ Other fixes: - Qt: Force OpenGL paint engine creation thread (fixes mgba.io/i/1642) - Qt: Fix static compilation in MinGW (fixes mgba.io/i/1769) - Qt: Fix a race condition in the frame inspector + - Qt: Add dummy English translation file (fixes mgba.io/i/1469) - SM83: Simplify register pair access on big endian - VFS: Fix directory node listing on some filesystems Misc: diff --git a/src/platform/qt/SettingsView.cpp b/src/platform/qt/SettingsView.cpp index 4eb99c55e..b0416133a 100644 --- a/src/platform/qt/SettingsView.cpp +++ b/src/platform/qt/SettingsView.cpp @@ -303,6 +303,9 @@ SettingsView::SettingsView(ConfigController* controller, InputController* inputC continue; } QLocale locale(name.remove(QString("%0-").arg(binaryName)).remove(".qm")); + if (locale.language() == QLocale::English) { + continue; + } m_ui.languages->addItem(locale.nativeLanguageName(), locale); if (locale.bcp47Name() == QLocale().bcp47Name()) { m_ui.languages->setCurrentIndex(m_ui.languages->count() - 1); diff --git a/src/platform/qt/ts/mgba-en.ts b/src/platform/qt/ts/mgba-en.ts new file mode 100644 index 000000000..bf4711add --- /dev/null +++ b/src/platform/qt/ts/mgba-en.ts @@ -0,0 +1,4 @@ + + + + From 38613b577024ee4941a6827dfbf0474659f3b4fc Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Fri, 7 Aug 2020 02:06:11 -0700 Subject: [PATCH 2/9] GBA BIOS: Make HLE BIOS calls interruptable (fixes #1711, fixes #1823) --- CHANGES | 1 + include/mgba/internal/gba/gba.h | 2 + include/mgba/internal/gba/serialize.h | 6 ++- src/gba/bios.c | 55 +++++++++++++++++++-------- src/gba/gba.c | 3 +- src/gba/hle-bios.c | 29 +++++++------- src/gba/hle-bios.s | 36 +++++++++++------- src/gba/serialize.c | 2 + 8 files changed, 87 insertions(+), 47 deletions(-) diff --git a/CHANGES b/CHANGES index 98dffa506..1a96d9d1f 100644 --- a/CHANGES +++ b/CHANGES @@ -15,6 +15,7 @@ Emulation fixes: - GBA BIOS: Implement dummy sound driver calls - GBA BIOS: Improve HLE BIOS timing - GBA BIOS: Fix reloading video registers after reset (fixes mgba.io/i/1808) + - GBA BIOS: Make HLE BIOS calls interruptable (fixes mgba.io/i/1711 and mgba.io/i/1823) - GBA DMA: Linger last DMA on bus (fixes mgba.io/i/301 and mgba.io/i/1320) - GBA Memory: Improve gamepak prefetch timing - GBA Memory: Stall on VRAM access in mode 2 (fixes mgba.io/i/190) diff --git a/include/mgba/internal/gba/gba.h b/include/mgba/internal/gba/gba.h index 931ae5b64..909a5174f 100644 --- a/include/mgba/internal/gba/gba.h +++ b/include/mgba/internal/gba/gba.h @@ -109,6 +109,8 @@ struct GBA { bool cpuBlocked; bool earlyExit; uint32_t dmaPC; + uint32_t biosStall; + int idleDetectionStep; int idleDetectionFailures; int32_t cachedRegisters[16]; diff --git a/include/mgba/internal/gba/serialize.h b/include/mgba/internal/gba/serialize.h index a8ea138e4..e9ef92cee 100644 --- a/include/mgba/internal/gba/serialize.h +++ b/include/mgba/internal/gba/serialize.h @@ -201,7 +201,8 @@ mLOG_DECLARE_CATEGORY(GBA_STATE); * | bit 1: POSTFLG * | bit 2: Is IRQ pending? * 0x00320 - 0x00323: Next IRQ event - * 0x00324 - 0x003FF: Reserved (leave zero) + * 0x00324 - 0x00327: Interruptable BIOS stall cycles + * 0x00328 - 0x003FF: Reserved (leave zero) * 0x00400 - 0x007FF: I/O memory * 0x00800 - 0x00BFF: Palette * 0x00C00 - 0x00FFF: OAM @@ -334,8 +335,9 @@ struct GBASerializedState { uint32_t lastPrefetchedPc; GBASerializedMiscFlags miscFlags; uint32_t nextIrq; + int32_t biosStall; - uint32_t reserved[55]; + uint32_t reserved[54]; uint16_t io[SIZE_IO >> 1]; uint16_t pram[SIZE_PALETTE_RAM >> 1]; diff --git a/src/gba/bios.c b/src/gba/bios.c index 911fd77bc..57e57ea0f 100644 --- a/src/gba/bios.c +++ b/src/gba/bios.c @@ -298,10 +298,10 @@ static void _Div(struct GBA* gba, int32_t num, int32_t denom) { if (loops < 1) { loops = 1; } - cpu->cycles += 4 /* prologue */ + 13 * loops + 7 /* epilogue */; + gba->biosStall = 4 /* prologue */ + 13 * loops + 7 /* epilogue */; } -static int16_t _ArcTan(int32_t i, int32_t* r1, int32_t* r3, int32_t* cycles) { +static int16_t _ArcTan(int32_t i, int32_t* r1, int32_t* r3, uint32_t* cycles) { int currentCycles = 37; currentCycles += _mulWait(i * i); int32_t a = -((i * i) >> 14); @@ -325,11 +325,11 @@ static int16_t _ArcTan(int32_t i, int32_t* r1, int32_t* r3, int32_t* cycles) { if (r3) { *r3 = b; } - *cycles += currentCycles; + *cycles = currentCycles; return (i * b) >> 16; } -static int16_t _ArcTan2(int32_t x, int32_t y, int32_t* r1, int32_t* cycles) { +static int16_t _ArcTan2(int32_t x, int32_t y, int32_t* r1, uint32_t* cycles) { if (!y) { if (x >= 0) { return 0; @@ -363,9 +363,9 @@ static int16_t _ArcTan2(int32_t x, int32_t y, int32_t* r1, int32_t* cycles) { } } -static int32_t _Sqrt(uint32_t x, int32_t* cycles) { +static int32_t _Sqrt(uint32_t x, uint32_t* cycles) { if (!x) { - *cycles += 53; + *cycles = 53; return 0; } int32_t currentCycles = 15; @@ -412,7 +412,7 @@ static int32_t _Sqrt(uint32_t x, int32_t* cycles) { break; } } - *cycles += currentCycles; + *cycles = currentCycles; return bound; } @@ -422,6 +422,9 @@ void GBASwi16(struct ARMCore* cpu, int immediate) { immediate, cpu->gprs[0], cpu->gprs[1], cpu->gprs[2], cpu->gprs[3]); switch (immediate) { + case 0xF0: // Used for internal stall counting + cpu->gprs[4] = gba->biosStall; + return; case 0xFA: GBAPrintFlush(gba); return; @@ -431,6 +434,8 @@ void GBASwi16(struct ARMCore* cpu, int immediate) { ARMRaiseSWI(cpu); return; } + + bool useStall = false; switch (immediate) { case GBA_SWI_SOFT_RESET: _SoftReset(gba); @@ -452,19 +457,24 @@ void GBASwi16(struct ARMCore* cpu, int immediate) { ARMRaiseSWI(cpu); return; case GBA_SWI_DIV: + useStall = true; _Div(gba, cpu->gprs[0], cpu->gprs[1]); break; case GBA_SWI_DIV_ARM: + useStall = true; _Div(gba, cpu->gprs[1], cpu->gprs[0]); break; case GBA_SWI_SQRT: - cpu->gprs[0] = _Sqrt(cpu->gprs[0], &cpu->cycles); + useStall = true; + cpu->gprs[0] = _Sqrt(cpu->gprs[0], &gba->biosStall); break; case GBA_SWI_ARCTAN: - cpu->gprs[0] = _ArcTan(cpu->gprs[0], &cpu->gprs[1], &cpu->gprs[3], &cpu->cycles); + useStall = true; + cpu->gprs[0] = _ArcTan(cpu->gprs[0], &cpu->gprs[1], &cpu->gprs[3], &gba->biosStall); break; case GBA_SWI_ARCTAN2: - cpu->gprs[0] = (uint16_t) _ArcTan2(cpu->gprs[0], cpu->gprs[1], &cpu->gprs[1], &cpu->cycles); + useStall = true; + cpu->gprs[0] = (uint16_t) _ArcTan2(cpu->gprs[0], cpu->gprs[1], &cpu->gprs[1], &gba->biosStall); cpu->gprs[3] = 0x170; break; case GBA_SWI_CPU_SET: @@ -589,12 +599,25 @@ void GBASwi16(struct ARMCore* cpu, int immediate) { default: mLOG(GBA_BIOS, STUB, "Stub software interrupt: %02X", immediate); } - gba->cpu->cycles += 45 + cpu->memory.activeNonseqCycles16 /* 8 bit load for SWI # */; - // Return cycles - if (gba->cpu->executionMode == MODE_ARM) { - gba->cpu->cycles += cpu->memory.activeNonseqCycles32 + cpu->memory.activeSeqCycles32; - } else { - gba->cpu->cycles += cpu->memory.activeNonseqCycles16 + cpu->memory.activeSeqCycles16; + if (useStall) { + if (gba->biosStall >= 18) { + gba->biosStall -= 18; + gba->cpu->cycles += gba->biosStall & 3; + gba->biosStall &= ~3; + ARMRaiseSWI(cpu); + } else { + gba->cpu->cycles += gba->biosStall; + useStall = false; + } + } + if (!useStall) { + gba->cpu->cycles += 45 + cpu->memory.activeNonseqCycles16 /* 8 bit load for SWI # */; + // Return cycles + if (gba->cpu->executionMode == MODE_ARM) { + gba->cpu->cycles += cpu->memory.activeNonseqCycles32 + cpu->memory.activeSeqCycles32; + } else { + gba->cpu->cycles += cpu->memory.activeNonseqCycles16 + cpu->memory.activeSeqCycles16; + } } gba->memory.biosPrefetch = 0xE3A02004; } diff --git a/src/gba/gba.c b/src/gba/gba.c index c1f87d2e5..18ae17222 100644 --- a/src/gba/gba.c +++ b/src/gba/gba.c @@ -201,6 +201,7 @@ void GBAReset(struct ARMCore* cpu) { gba->cpuBlocked = false; gba->earlyExit = false; gba->dmaPC = 0; + gba->biosStall = 0; if (gba->yankedRomSize) { gba->memory.romSize = gba->yankedRomSize; gba->memory.romMask = toPow2(gba->memory.romSize) - 1; @@ -928,4 +929,4 @@ static bool _setSoftwareBreakpoint(struct ARMDebugger* debugger, uint32_t addres static void _clearSoftwareBreakpoint(struct ARMDebugger* debugger, const struct ARMDebugBreakpoint* breakpoint) { GBAClearBreakpoint((struct GBA*) debugger->cpu->master, breakpoint->d.address, breakpoint->sw.mode, breakpoint->sw.opcode); } -#endif \ No newline at end of file +#endif diff --git a/src/gba/hle-bios.c b/src/gba/hle-bios.c index 8422f629d..4da22d005 100644 --- a/src/gba/hle-bios.c +++ b/src/gba/hle-bios.c @@ -3,28 +3,28 @@ #include const uint8_t hleBios[SIZE_BIOS] = { - 0x06, 0x00, 0x00, 0xea, 0x66, 0x00, 0x00, 0xea, 0x0b, 0x00, 0x00, 0xea, + 0x06, 0x00, 0x00, 0xea, 0x66, 0x00, 0x00, 0xea, 0x0c, 0x00, 0x00, 0xea, 0xfe, 0xff, 0xff, 0xea, 0xfe, 0xff, 0xff, 0xea, 0x00, 0x00, 0xa0, 0xe1, 0x59, 0x00, 0x00, 0xea, 0xfe, 0xff, 0xff, 0xea, 0x02, 0x03, 0xa0, 0xe3, 0x03, 0x10, 0xd0, 0xe5, 0xea, 0x00, 0x51, 0xe3, 0x4c, 0x01, 0x9f, 0x15, 0x10, 0xff, 0x2f, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x29, 0xe1, - 0x00, 0x00, 0x5d, 0xe3, 0x01, 0xd3, 0xa0, 0x03, 0x20, 0xd0, 0x4d, 0x02, - 0x00, 0x58, 0x2d, 0xe9, 0x02, 0xb0, 0x5e, 0xe5, 0xd4, 0xc0, 0xa0, 0xe3, - 0x0b, 0xb1, 0x9c, 0xe7, 0x00, 0x00, 0x5b, 0xe3, 0x00, 0xc0, 0x4f, 0xe1, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5d, 0xe3, 0x01, 0xd3, 0xa0, 0x03, + 0x20, 0xd0, 0x4d, 0x02, 0x10, 0x58, 0x2d, 0xe9, 0x02, 0xb0, 0x5e, 0xe5, + 0xd4, 0xc0, 0xa0, 0xe3, 0x0b, 0xb1, 0x9c, 0xe7, 0xd2, 0xcf, 0xa0, 0xe3, + 0x0b, 0x00, 0x5c, 0xe1, 0x00, 0x00, 0xf0, 0x0f, 0x00, 0xc0, 0x4f, 0xe1, 0x00, 0x10, 0x2d, 0xe9, 0x80, 0xc0, 0x0c, 0xe2, 0x1f, 0xc0, 0x8c, 0xe3, - 0x0c, 0xf0, 0x29, 0xe1, 0x00, 0x40, 0x2d, 0xe9, 0x00, 0x00, 0xa0, 0xe1, - 0x00, 0x00, 0xa0, 0xe1, 0x00, 0x00, 0xa0, 0xe1, 0x00, 0x00, 0xa0, 0xe1, + 0x0c, 0xf0, 0x21, 0xe1, 0x00, 0x40, 0x2d, 0xe9, 0x00, 0x00, 0x5b, 0xe3, 0x00, 0x00, 0xa0, 0xe1, 0x00, 0x00, 0xa0, 0xe1, 0x00, 0x00, 0xa0, 0xe1, 0x00, 0x00, 0xa0, 0xe1, 0x00, 0x00, 0xa0, 0xe1, 0x00, 0x00, 0xa0, 0xe1, 0x0f, 0xe0, 0xa0, 0xe1, 0x1b, 0xff, 0x2f, 0x11, 0x00, 0x00, 0xa0, 0xe1, - 0x00, 0x00, 0xa0, 0xe1, 0x00, 0x00, 0xa0, 0xe1, 0x00, 0x00, 0xa0, 0xe1, - 0x00, 0x40, 0xbd, 0xe8, 0x93, 0xf0, 0x29, 0xe3, 0x00, 0x10, 0xbd, 0xe8, - 0x0c, 0xf0, 0x69, 0xe1, 0x00, 0x58, 0xbd, 0xe8, 0x0e, 0xf0, 0xb0, 0xe1, - 0x00, 0x00, 0x00, 0x00, 0x04, 0x20, 0xa0, 0xe3, 0xb0, 0x01, 0x00, 0x00, + 0x00, 0x00, 0xa0, 0xe1, 0x00, 0x00, 0xa0, 0xe1, 0x00, 0x40, 0xbd, 0xe8, + 0x93, 0xf0, 0x29, 0xe3, 0x00, 0x10, 0xbd, 0xe8, 0x0c, 0xf0, 0x69, 0xe1, + 0x10, 0x58, 0xbd, 0xe8, 0x0e, 0xf0, 0xb0, 0xe1, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x20, 0xa0, 0xe3, 0x00, 0x00, 0x00, 0x00, 0xb0, 0x01, 0x00, 0x00, 0xb0, 0x01, 0x00, 0x00, 0xb4, 0x01, 0x00, 0x00, 0xb0, 0x01, 0x00, 0x00, - 0xcc, 0x01, 0x00, 0x00, 0xc4, 0x01, 0x00, 0x00, 0xb0, 0x01, 0x00, 0x00, - 0xb0, 0x01, 0x00, 0x00, 0xb0, 0x01, 0x00, 0x00, 0xb0, 0x01, 0x00, 0x00, - 0xb0, 0x01, 0x00, 0x00, 0x14, 0x02, 0x00, 0x00, 0xa8, 0x02, 0x00, 0x00, + 0xcc, 0x01, 0x00, 0x00, 0xc4, 0x01, 0x00, 0x00, 0x48, 0x03, 0x00, 0x00, + 0x48, 0x03, 0x00, 0x00, 0x48, 0x03, 0x00, 0x00, 0x48, 0x03, 0x00, 0x00, + 0x48, 0x03, 0x00, 0x00, 0x14, 0x02, 0x00, 0x00, 0xa8, 0x02, 0x00, 0x00, 0xb0, 0x01, 0x00, 0x00, 0xb0, 0x01, 0x00, 0x00, 0xb0, 0x01, 0x00, 0x00, 0xb0, 0x01, 0x00, 0x00, 0xb0, 0x01, 0x00, 0x00, 0xb0, 0x01, 0x00, 0x00, 0xb0, 0x01, 0x00, 0x00, 0xb0, 0x01, 0x00, 0x00, 0xb0, 0x01, 0x00, 0x00, @@ -72,5 +72,6 @@ const uint8_t hleBios[SIZE_BIOS] = { 0x01, 0x70, 0xa0, 0xe1, 0x01, 0x80, 0xa0, 0xe1, 0x01, 0x90, 0xa0, 0xe1, 0x01, 0xa0, 0xa0, 0xe1, 0xfa, 0x07, 0xa0, 0xe8, 0xfa, 0x07, 0xa0, 0xe8, 0xfa, 0x07, 0xa0, 0xe8, 0xfa, 0x07, 0xa0, 0xe8, 0x00, 0x10, 0xa0, 0xe3, - 0xf0, 0x07, 0xbd, 0xe8, 0x1e, 0xff, 0x2f, 0xe1, 0xb0, 0x01, 0x00, 0x00 + 0xf0, 0x07, 0xbd, 0xe8, 0x1e, 0xff, 0x2f, 0xe1, 0xb0, 0x01, 0x00, 0x00, + 0x04, 0x40, 0x54, 0xe2, 0xfd, 0xff, 0xff, 0x8a, 0x1e, 0xff, 0x2f, 0xe1 }; diff --git a/src/gba/hle-bios.s b/src/gba/hle-bios.s index e14e2d4c4..c27e220b5 100644 --- a/src/gba/hle-bios.s +++ b/src/gba/hle-bios.s @@ -25,25 +25,26 @@ bx r0 .word 0 .word 0xE129F000 +.word 0 @ Padding for back-compat + swiBase: cmp sp, #0 moveq sp, #0x04000000 subeq sp, #0x20 -stmfd sp!, {r11-r12, lr} +stmfd sp!, {r4, r11-r12, lr} ldrb r11, [lr, #-2] mov r12, #swiTable ldr r11, [r12, r11, lsl #2] -cmp r11, #0 +mov r12, #StallCall +cmp r12, r11 +swieq 0xF00000 @ Special mGBA-internal call to load the stall count into r4 mrs r12, spsr stmfd sp!, {r12} and r12, #0x80 orr r12, #0x1F -msr cpsr, r12 +msr cpsr_c, r12 stmfd sp!, {lr} -nop -nop -nop -nop +cmp r11, #0 nop nop nop @@ -55,16 +56,17 @@ bxne r11 nop nop nop -nop ldmfd sp!, {lr} msr cpsr, #0x93 ldmfd sp!, {r12} msr spsr, r12 -ldmfd sp!, {r11-r12, lr} +ldmfd sp!, {r4, r11-r12, lr} movs pc, lr .word 0 .word 0xE3A02004 +.word 0 @ Padding for back-compat + swiTable: .word SoftReset @ 0x00 .word RegisterRamReset @ 0x01 @@ -131,11 +133,6 @@ subs pc, lr, #4 SoftReset: RegisterRamReset: Stop: -Div: -DivArm: -Sqrt: -ArcTan: -ArcTan2: GetBiosChecksum: BgAffineSet: ObjAffineSet: @@ -305,3 +302,14 @@ ldmfd sp!, {r4-r10} bx lr .ltorg + +Div: +DivArm: +Sqrt: +ArcTan: +ArcTan2: + +StallCall: +subs r4, #4 +bhi StallCall +bx lr diff --git a/src/gba/serialize.c b/src/gba/serialize.c index e8f1b215a..97345ad05 100644 --- a/src/gba/serialize.c +++ b/src/gba/serialize.c @@ -69,6 +69,7 @@ void GBASerialize(struct GBA* gba, struct GBASerializedState* state) { } miscFlags = GBASerializedMiscFlagsSetBlocked(miscFlags, gba->cpuBlocked); STORE_32(miscFlags, 0, &state->miscFlags); + STORE_32(gba->biosStall, 0, &state->nextIrq); GBAMemorySerialize(&gba->memory, state); GBAIOSerialize(gba, state); @@ -187,6 +188,7 @@ bool GBADeserialize(struct GBA* gba, const struct GBASerializedState* state) { mTimingSchedule(&gba->timing, &gba->irqEvent, when); } gba->cpuBlocked = GBASerializedMiscFlagsGetBlocked(miscFlags); + LOAD_32(gba->biosStall, 0, &state->nextIrq); GBAVideoDeserialize(&gba->video, state); GBAMemoryDeserialize(&gba->memory, state); From a87fe56ec691df7a865b858cde4033a382178c77 Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Fri, 7 Aug 2020 18:27:24 -0700 Subject: [PATCH 3/9] 3DS: Redo video sync to be more precise --- CHANGES | 1 + src/platform/3ds/main.c | 17 +++++++++++------ 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/CHANGES b/CHANGES index 1a96d9d1f..9eb3a1c92 100644 --- a/CHANGES +++ b/CHANGES @@ -25,6 +25,7 @@ Emulation fixes: - GBA Video: Fix Hblank timing - SM83: Emulate HALT bug Other fixes: + - 3DS: Redo video sync to be more precise - All: Improve export headers (fixes mgba.io/i/1738) - Core: Ensure ELF regions can be written before trying - Debugger: Don't skip undefined instructions when debugger attached diff --git a/src/platform/3ds/main.c b/src/platform/3ds/main.c index 3b5357ba8..acb9c3527 100644 --- a/src/platform/3ds/main.c +++ b/src/platform/3ds/main.c @@ -95,7 +95,7 @@ static int activeOutputTexture = 0; static ndspWaveBuf dspBuffer[DSP_BUFFERS]; static int bufferId = 0; static bool frameLimiter = true; -static u64 tickCounter; +static u32 frameCounter; static C3D_RenderTarget* topScreen[2]; static C3D_RenderTarget* bottomScreen[2]; @@ -213,11 +213,17 @@ static void _drawStart(void) { return; } frameStarted = true; + + int screen = screenMode >= SM_PA_TOP ? GSP_SCREEN_TOP : GSP_SCREEN_BOTTOM; if (frameLimiter) { - if (tickCounter + 4481000 > svcGetSystemTick()) { - C3D_FrameSync(); + u32 oldFrame = frameCounter; + frameCounter = C3D_FrameCounter(screen); + while (oldFrame == frameCounter) { + gspWaitForAnyEvent(); + frameCounter = C3D_FrameCounter(screen); } - tickCounter = svcGetSystemTick(); + } else { + frameCounter = C3D_FrameCounter(screen); } C3D_FrameBegin(0); ctrStartFrame(); @@ -350,7 +356,7 @@ static void _gameLoaded(struct mGUIRunner* runner) { } osSetSpeedupEnable(true); - double ratio = GBAAudioCalculateRatio(1, 59.8260982880808, 1); + double ratio = GBAAudioCalculateRatio(1, 268111856.f / 4481136.f, 1); blip_set_rates(runner->core->getAudioChannel(runner->core, 0), runner->core->frequency(runner->core), 32768 * ratio); blip_set_rates(runner->core->getAudioChannel(runner->core, 1), runner->core->frequency(runner->core), 32768 * ratio); if (hasSound != NO_SOUND) { @@ -659,7 +665,6 @@ static void _setFrameLimiter(struct mGUIRunner* runner, bool limit) { return; } frameLimiter = limit; - tickCounter = svcGetSystemTick(); } static bool _running(struct mGUIRunner* runner) { From e131831238851145d6e52370fdef664eff9967b7 Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Fri, 7 Aug 2020 23:17:03 -0700 Subject: [PATCH 4/9] CMake: Fix build with libzip 1.7.1 --- CMakeLists.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 741811135..c8eb7660f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -636,6 +636,8 @@ endif() if(USE_LIBZIP) if(TARGET libzip::zip) list(APPEND DEPENDENCY_LIB libzip::zip) + elseif(TARGET zip) + list(APPEND DEPENDENCY_LIB zip) else() include_directories(AFTER ${LIBZIP_INCLUDE_DIRS}) link_directories(${LIBZIP_LIBRARY_DIRS}) From 214febf7278033bf8642311755423212fa0a21c0 Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Sat, 8 Aug 2020 04:06:14 -0700 Subject: [PATCH 5/9] mGUI: Fix closing down a game if an exit is signalled --- CHANGES | 1 + src/feature/gui/gui-runner.c | 5 ++++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGES b/CHANGES index 9eb3a1c92..ec6f0b803 100644 --- a/CHANGES +++ b/CHANGES @@ -35,6 +35,7 @@ Other fixes: - Qt: Fix static compilation in MinGW (fixes mgba.io/i/1769) - Qt: Fix a race condition in the frame inspector - Qt: Add dummy English translation file (fixes mgba.io/i/1469) + - mGUI: Fix closing down a game if an exit is signalled - SM83: Simplify register pair access on big endian - VFS: Fix directory node listing on some filesystems Misc: diff --git a/src/feature/gui/gui-runner.c b/src/feature/gui/gui-runner.c index b8c2d9a5c..014552de1 100644 --- a/src/feature/gui/gui-runner.c +++ b/src/feature/gui/gui-runner.c @@ -541,6 +541,9 @@ void mGUIRun(struct mGUIRunner* runner, const char* path) { ++frame; } } + if (!running) { + break; + } if (runner->paused) { runner->paused(runner); @@ -651,7 +654,7 @@ void mGUIRunloop(struct mGUIRunner* runner) { mInputMapLoad(&runner->params.keyMap, runner->keySources[i].id, mCoreConfigGetInput(&runner->config)); } } - while (true) { + while (runner->running(runner)) { char path[PATH_MAX]; const char* preselect = mCoreConfigGetValue(&runner->config, "lastGame"); if (preselect) { From e902a253946efa4abcd2c8c930a7733998c5f337 Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Sat, 8 Aug 2020 04:33:57 -0700 Subject: [PATCH 6/9] 3DS: Fix crash with libctru 2.0 when exiting --- CHANGES | 1 + src/platform/3ds/main.c | 15 --------------- 2 files changed, 1 insertion(+), 15 deletions(-) diff --git a/CHANGES b/CHANGES index ec6f0b803..4060f6dc2 100644 --- a/CHANGES +++ b/CHANGES @@ -26,6 +26,7 @@ Emulation fixes: - SM83: Emulate HALT bug Other fixes: - 3DS: Redo video sync to be more precise + - 3DS: Fix crash with libctru 2.0 when exiting - All: Improve export headers (fixes mgba.io/i/1738) - Core: Ensure ELF regions can be written before trying - Debugger: Don't skip undefined instructions when debugger attached diff --git a/src/platform/3ds/main.c b/src/platform/3ds/main.c index acb9c3527..bcaa568e1 100644 --- a/src/platform/3ds/main.c +++ b/src/platform/3ds/main.c @@ -107,7 +107,6 @@ static C3D_Tex upscaleBufferTex; static bool interframeBlending = false; static bool sgbCrop = false; -static aptHookCookie cookie; static bool core2; static bool _initGpu(void) { @@ -190,18 +189,6 @@ static void _cleanup(void) { ptmuExit(); } -static void _aptHook(APT_HookType hook, void* user) { - UNUSED(user); - switch (hook) { - case APTHOOK_ONEXIT: - _cleanup(); - exit(0); - break; - default: - break; - } -} - static void _map3DSKey(struct mInputMap* map, int ctrKey, enum GBAKey key) { mInputBindKey(map, _3DS_INPUT, __builtin_ctz(ctrKey), key); } @@ -826,8 +813,6 @@ int main() { camera.bufferSize = 0; camera.cam = SELECT_IN1; - aptHook(&cookie, _aptHook, 0); - ptmuInit(); camInit(); From defaeb0d80ebbdfbd3f0135cb36dc56dc35cdab5 Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Sat, 8 Aug 2020 18:14:28 -0700 Subject: [PATCH 7/9] mVL: Fix injecting accidentally draining non-injection buffer --- CHANGES | 1 + cinema/gb/window/ccmmr-hud/baseline_0004.png | Bin 0 -> 3377 bytes cinema/gb/window/ccmmr-hud/baseline_0005.png | Bin 0 -> 3380 bytes cinema/gb/window/rfs-hud/baseline_0001.png | Bin 0 -> 2783 bytes cinema/gb/window/rfs-hud/baseline_0002.png | Bin 0 -> 2948 bytes cinema/gb/window/rfs-hud/baseline_0003.png | Bin 0 -> 2948 bytes cinema/gb/window/rfs-hud/baseline_0004.png | Bin 0 -> 2948 bytes cinema/gb/window/rfs-hud/baseline_0005.png | Bin 0 -> 2948 bytes cinema/gb/window/rfs-hud/baseline_0006.png | Bin 0 -> 2973 bytes cinema/gb/window/rfs-hud/baseline_0007.png | Bin 0 -> 2973 bytes cinema/gb/window/rfs-hud/baseline_0008.png | Bin 0 -> 2973 bytes cinema/gb/window/rfs-hud/baseline_0009.png | Bin 0 -> 2973 bytes cinema/gb/window/rfs-hud/baseline_0010.png | Bin 0 -> 3127 bytes cinema/gb/window/rfs-hud/baseline_0011.png | Bin 0 -> 3127 bytes cinema/gb/window/rfs-hud/baseline_0012.png | Bin 0 -> 3127 bytes cinema/gb/window/rfs-hud/baseline_0013.png | Bin 0 -> 3127 bytes cinema/gb/window/rfs-hud/baseline_0014.png | Bin 0 -> 3136 bytes cinema/gb/window/wmm-hud/baseline_0001.png | Bin 5126 -> 5359 bytes cinema/gb/window/wmm-hud/baseline_0002.png | Bin 5126 -> 5359 bytes cinema/gb/window/wmm-hud/baseline_0003.png | Bin 5125 -> 5358 bytes cinema/gb/window/wmm-hud/baseline_0004.png | Bin 5125 -> 5358 bytes cinema/gb/window/wmm-hud/baseline_0005.png | Bin 5125 -> 5358 bytes cinema/gb/window/wmm-hud/baseline_0006.png | Bin 5125 -> 5358 bytes cinema/gb/window/wmm-hud/baseline_0007.png | Bin 5125 -> 5358 bytes .../unaligned-256-linear/baseline_0004.png | Bin 22080 -> 22400 bytes .../unaligned-256-linear/baseline_0005.png | Bin 19238 -> 19678 bytes src/feature/video-logger.c | 2 +- 27 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 cinema/gb/window/ccmmr-hud/baseline_0004.png create mode 100644 cinema/gb/window/ccmmr-hud/baseline_0005.png create mode 100644 cinema/gb/window/rfs-hud/baseline_0001.png create mode 100644 cinema/gb/window/rfs-hud/baseline_0002.png create mode 100644 cinema/gb/window/rfs-hud/baseline_0003.png create mode 100644 cinema/gb/window/rfs-hud/baseline_0004.png create mode 100644 cinema/gb/window/rfs-hud/baseline_0005.png create mode 100644 cinema/gb/window/rfs-hud/baseline_0006.png create mode 100644 cinema/gb/window/rfs-hud/baseline_0007.png create mode 100644 cinema/gb/window/rfs-hud/baseline_0008.png create mode 100644 cinema/gb/window/rfs-hud/baseline_0009.png create mode 100644 cinema/gb/window/rfs-hud/baseline_0010.png create mode 100644 cinema/gb/window/rfs-hud/baseline_0011.png create mode 100644 cinema/gb/window/rfs-hud/baseline_0012.png create mode 100644 cinema/gb/window/rfs-hud/baseline_0013.png create mode 100644 cinema/gb/window/rfs-hud/baseline_0014.png diff --git a/CHANGES b/CHANGES index 4060f6dc2..e32b2293f 100644 --- a/CHANGES +++ b/CHANGES @@ -37,6 +37,7 @@ Other fixes: - Qt: Fix a race condition in the frame inspector - Qt: Add dummy English translation file (fixes mgba.io/i/1469) - mGUI: Fix closing down a game if an exit is signalled + - mVL: Fix injecting accidentally draining non-injection buffer - SM83: Simplify register pair access on big endian - VFS: Fix directory node listing on some filesystems Misc: diff --git a/cinema/gb/window/ccmmr-hud/baseline_0004.png b/cinema/gb/window/ccmmr-hud/baseline_0004.png new file mode 100644 index 0000000000000000000000000000000000000000..d800d852204ce9e38ec97a33fd9fd92df73f1757 GIT binary patch literal 3377 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 literal 0 HcmV?d00001 diff --git a/cinema/gb/window/rfs-hud/baseline_0001.png b/cinema/gb/window/rfs-hud/baseline_0001.png new file mode 100644 index 0000000000000000000000000000000000000000..786d5943075e8732e7a0c7591b8c2058276385ce GIT binary patch literal 2783 zcmV<53Ly1~P)0058(0ssI20N3}|000W6Nkl zFL&d(8i#-BhM3JTUzlY#-(Uh=)|_+6u)T2e4O-T~4C}&W8MtM0S;`vNvW20gVY^HV zFL)D0k!3}aCD~T=oIPh9*O4=M^6J0j(cLHf_&17o+`1MUG(+2?X@^@0l{GYG*XM19|+fAoa02{UiFm7*GiD)A%0Cw%?7{Bg`Z@Vff(V^!QPQIFl*rSM{@JkR(+ zLwsMfn=sXLh3VzX2%gjG`EvKm`^)omI^Ax!0KPpe9-r3lFV6tL_5j9^a%KSJss8OB z=KvH45(7se)bv05ks(K|$L*jNDh+vlot7MlrmBFA|m6#g?pcc{W9;#gTEQ@ZwJ(d62t{z{pE9KZX ziuUf8Qw@u^cZ*|ge8`a5!R)-MDEFoeT>2GUZLP{GZ$mJ<0LGf$jEhKpRl2{XZTGzN z?T_8!Gj8B&7ecMLUPpJftE&q16UpxJhi=$o70xa(ZWCLY-pcE=i}NPpMaM1e64X!0 zdn*BmRjsjey86E8^zGKv*3tAoz>{5NJ6Ob8uvjZ@y5?%_)_?R(-@X^S;$5UOWm#eZ z*b3$)tNyaY?W%ZuT7P?3tbYFk0PoRj!mr)>59p9S+q1uH1ncX}oU5?AmV@})!-9V& z#jP&;_G?#@{=BGQ9>M10yXo6)KvUnuG0vjd<(LZQcI$uQr7}F){hviT-EarI$mf(_ z5jBg8+htjn0Cu}w(9b2MZz|aP2%ygHokcnwLP053a5NQ909LW^#1kv|SE6OiFuQU7Fq^6Q~7cCpg!tOqtzVB_6JQY#}(?4Mfo14^zR}ZXiPUZJ7$r zc9m?mTV?gCC~#>+1_*B#=7O``I!C)Ax}GeF2zGb7osr;dx6ZMDL!4D^*P20g5uGX#+ zao+=zi2%0gYu=)?i4(aRP(qtEH1ZTT74$Ew5-neb?9KtS~1!udu zl&fk!pId#HKz8BQ4$gL!=of*tPrv?_i+154INSA$n_Ye^zE?S=-Y$#IcKzZUyB}{K z^dFbnv|z$QaJK80pgA+gRB*QImpFD|y0RhL^@>Nk7r87r+x1Jd*d;Cq&UXD0*)H_W zqy$Fq%Rjprl=Vm(yU;8jO~7vTkH!AXw#1*C;b0d{S#%VmUf zJ;SmKNpQBSXK;2Q3eI-*4ACyQ;A~gVK<$DAXS;faYZt&s_s48EmR){)aeUX7X2Aou zD^6;3p1mADb|5-RfsEdptlyQEanc6+U9Hxw zBiW_OLAZ}M1_oo-aQ&_*m_MV+IW9MwjdGcSm$@0d>L>jumAL%~#zV4e1K(#IPVHd& z>cx$+#Y8;XEz5Gh-;465)9LBre_=A2NEcY)ZH0eO4DBAR(5ofR*K?Y)-EJ8Jz<`3U z6fBCZ^K%z2#;zE_;&Ds67=&PRyUJyojGf%raEM*{iSU&D#xB3+ENYKTW^L`F|AJfE zb%Q@#hR0b^psK2H>X{l+;xsWaE36V~d(1a0pUA=d|^ z49+ehWYJya%*(NU<7w!m!!6Q za*=e4A?D1SP!SwIXNF*xF{TOMs;W#znG&#zK!W4j<&|f$OD8pP>}+>%_!r!bUB)oG z2i36Nexvgg$I3npeMd(cu}gR^gFDHY&zRlQ|CNiz%x{r~U3j0-Vfg%A@6dR#Snled z;H#NOk&<2b72NHNS82hgm$eA|yvNTO8E<89=ku8Q`_W>{eEPs7a%rXA{ z6lqJM_FS`F=mpc>>dKI9zg!@~Dzqz)U7}HNs!zSRD!XVZgR|XaPzcU;Q$iM;?Iy;V z;A}TNPJ*-DBsmDqc2i}9yA_3`s!hAHNp%Ja%w;JEdDQ~Ejkbz=-b+}~@n-q4dG zY!jNyCQ{_lvw)=Ygd|MbU@YU2Lj+6l(K2G1BCjb;DT~f{WQG^H7dVG_v5t$$}Fn l3r?IYIB~Mz#L0pa=l^7a#J|$YvHt)7002ovPDHLkV1gMyxmW-I literal 0 HcmV?d00001 diff --git a/cinema/gb/window/rfs-hud/baseline_0002.png b/cinema/gb/window/rfs-hud/baseline_0002.png new file mode 100644 index 0000000000000000000000000000000000000000..d04f46f5a96ed026f8d75bb5ab11a71383a91cc7 GIT binary patch literal 2948 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 T@DTop00000NkvXXu0mjfnA`|) literal 0 HcmV?d00001 diff --git a/cinema/gb/window/rfs-hud/baseline_0007.png b/cinema/gb/window/rfs-hud/baseline_0007.png new file mode 100644 index 0000000000000000000000000000000000000000..5ed5aeeadb2794ac550fe4f2e9890cabef501714 GIT binary patch literal 2973 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 T@DTop00000NkvXXu0mjfnA`|) literal 0 HcmV?d00001 diff --git a/cinema/gb/window/rfs-hud/baseline_0008.png b/cinema/gb/window/rfs-hud/baseline_0008.png new file mode 100644 index 0000000000000000000000000000000000000000..5ed5aeeadb2794ac550fe4f2e9890cabef501714 GIT binary patch literal 2973 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 T@DTop00000NkvXXu0mjfnA`|) literal 0 HcmV?d00001 diff --git a/cinema/gb/window/rfs-hud/baseline_0009.png b/cinema/gb/window/rfs-hud/baseline_0009.png new file mode 100644 index 0000000000000000000000000000000000000000..5ed5aeeadb2794ac550fe4f2e9890cabef501714 GIT binary patch literal 2973 zcmV;O3u5$%P)0058(0ssI20N3}|000YQNkl zA(-1Z7RUeTH$-g9d@##4uxti8tbxmJ;SDRivIeHCg=IOo!@4YG6F9>L=HO7X9@D}D zFMg3_S(Y8ymTmpM`C8R+>`s1p(vvL93waCijQ76)!1v$uG5~ptGU6FhN+E>0F-_CM z;XoVHG(8@VQc3_qh^m9oxd8n5-=xY=J~#1PD5q&^_$;pGAdklFH|^}&VY@;IavXs_ zySMNENrmSh4~65uJs0H9^XUNGy#EE?zwgd3&|llFZg;m+4?z)r+F-NVVu;Jf9XS^3t*ZI(DaHKkQc8tlp2hghs-Ay5 zXm$Z)S+-iO$~%j9kS}Mm5#ks|%XZn?%*kuO-BOKzhX z>QDy1#0B+LXuaX8{`9`(Zx{;qr7e2^NVZ9L=ls{l-G9Dp0c2U0Bxcma!tvy7Q`}x>KJ}SVteDp+9y9A9>@@OTB1D0A4%a@X1$C}yB zeC!&bVJ5rgc6N>ZU=8sWcn6seW)%cSyOlWGC1@Gea|rLqAXaoYyY0k)-Em)EO~B=l$SDwZg*AmB+C-J>PVJ1yMHw}&VVE@ z$qA>57Yhy9>2%Tx9pQLlj6&>xCN&oI} z=1tdjp$YD9G-LdB(=-LNkIU&!4yFgYr_-syNLI94g_Mn_3-@DpwOZ8+j&{A%o880y z;53pI?K?RsR8nwhrf{orWVJA>He?I@3AMY|pu z&@OWk9PRpL@Yp3Tf}>rJ1Y#GQWHrKOcO>`wc6$GAKe*V18i>n2FeRX6$y+NN}|4mmciGU2wGPmwxQRQE;^Dm)`8cMR2t1mp<*HR&ccIm!9py zE;!otOaFFZ8R&?1{nE}Zm(}++no@6$;Aqz`tz)-*eYfci69&Q2u3rYJnHgPhwCk5) z?LxmE9PN6=qutgN*2$_Q+HFp!v8&$t#tY6GxvY~_NwnLXuI;LeF9;zlju-S`tV%|5 z^*(u-%k^Ed%kwz-(PLGP7q)Yb#O_SyW)M_4s|$769aoQJMZ4kIMc(2HA++W8tEiaK zF><@=A}Ot(oe-d1hL*-;wHC*w2p+#(sjQDuyCRN}knIxMBX6qO;F91;*d;_;$Kl&0 zTpnvwtfEJ5*9+m>O_HR%)E*^Yd`im65!&bERU+{kWI#vZ%!aVH#lgW(GHW!D(Qqqdu686_F#RKvRS zBFyXgjqcygvaB|Og{YbN;2q5_eaWu>Kd@bbJAvg7KmbXSgqUPCx_|e0Jj%zN5Zkh2 zAqsg`yO8xVH-oE?s#T^{9KQsX{yoQZmSw>SZaVXZo`GVto2ID{N43k;6pwb3BvBvO z4S<$8I`8}sESF1d2P4`*G+z&<#<*Nvhb4G=^QyGiRU=p}JK809H?2M}HpT%7ZfDn$ zWbubn`BvLc){1lu5ql2^5+3-W(yu;*C?10 zIw}ubMR%7~wRlc_r?IOBF*;~>xwAmWWXD4a?jdK^9?|Ug_>MU<2NN6Zy4@uPzMACG zuKGx}cJ$NV1#s9O`mxIlBiMWFUgNm8{%)r^vsiD96C4Ievbw98s~lTu>8|^`^v{mk zT@;fntr;fzj^N3URjFllDr+A#^WDDzXafMf3hvr&xuUjAy6ZG&COr0c?O3|P{R!?l zcDcSX*3W+Ly*K8}0K~7C552?KefpZmu7O4Cd$Zi>XYvv9Yo(lSXsywe3^=c<3iZpx z85Y%8{EK%U!F{%)S(a(Zq?c0)>f}XlEpXcw+jT_L~>YYVn z*RhTmyH?)J{5gP=r^6e-qumhbN^rCr2%QLycEe$O_Xi`|ZGvaP(QargXxi}W(<^UU z-YvP@XuG=6WxIu{^G2Gopw-7w9JZxsaM{kwY&vdNkHgRo+83gHoJb2UmkZTfW3`>C zYCqnt)|qPMY20o+1@g5XtBxOQ;C9?Vx!D=OVSk`yjhh~5dAHOej~2hywiB8#?TOeC zkDMb|i;pWKrYiEPj;U4A5s%!Ulmuy%t5yoirq^8EtLS#ej~H3-TF2T8^jTMJN5wQY zbzO^c*?64t8!g9=G-c8ALsug`6Yc||BVLGtCr%VRaiZXf69rG4D0t#T!4v2IAh74= T@DTop00000NkvXXu0mjfnA`|) literal 0 HcmV?d00001 diff --git a/cinema/gb/window/rfs-hud/baseline_0010.png b/cinema/gb/window/rfs-hud/baseline_0010.png new file mode 100644 index 0000000000000000000000000000000000000000..72377bc9dfe12576921f6a407e0ae549c2130261 GIT binary patch literal 3127 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 Ro)Z87002ovPDHLkV1j3KEvWzi literal 0 HcmV?d00001 diff --git a/cinema/gb/window/rfs-hud/baseline_0011.png b/cinema/gb/window/rfs-hud/baseline_0011.png new file mode 100644 index 0000000000000000000000000000000000000000..72377bc9dfe12576921f6a407e0ae549c2130261 GIT binary patch literal 3127 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 Ro)Z87002ovPDHLkV1j3KEvWzi literal 0 HcmV?d00001 diff --git a/cinema/gb/window/rfs-hud/baseline_0012.png b/cinema/gb/window/rfs-hud/baseline_0012.png new file mode 100644 index 0000000000000000000000000000000000000000..72377bc9dfe12576921f6a407e0ae549c2130261 GIT binary patch literal 3127 zcmV-749N3|P)0058(0ssI20N3}|000aANkl zFO=Il7RJA1L&RDZnq?bUHUmAZ1DEZiWrgpt2IjFAmd%5&tjjWN3}@KDEZb1C7VJ5C zaKVjlWLc7BTd@^K-hVog77i&4oGQ;QMt)0wUoxkWqx6d2BLbauP^Zs8{czOI* zspsvnAb%XIJ^uO%e5{-RVDbJ9zJK2y&!GP{8=dZUtKL8YL{~m-0pR(|u>gp>jsG8T zRq8;OxvFKYPWf6=1H?N3kgt#*PmC7;u-Tye7T{@%?G|?%gY7EtBp__Z^L9Su8q}F? zp6B%Mr_T=>WBCJkRc`SP^7T|;#tY3eA1^lE)@G*V@%!KNJkO;xUwzH$*6!wcZo5$a z0KT4nCEGoseXTH_*V|o#HXGcPKkS)_v~qm+DNAj$rfyNy%j35?-Q40D*>(x7S^zL_ zrVEG{2=d9Lb+VD(XBnhCAr->s?_pOlv9hNAF*8YPgEjM2B^9TQuaG~mfKSX^nk=5b zRH~~5S)Tgme;gK8TN)8*KLmxB;sDU3Sre%RrW8+QHQP;tZbIO_!yaGL`4>$W*U4{PQu2zJYj)dAD2@(@in6s&mub@AvhS*>F`C&D0mhcj-?z z$lr4*qITEO`UdFt(u-Hfk} zt_iI}jS;U8T{yix4I-U>t$o_+2}i(0Cwc6I@5IwIbVjVt!@3QuYFdd(}e@Dqiw!YxqvC1 zXGTL88elalwq20uHYy&vPyu_6?_N3GvXzxQFHOo*8IjQi1NI!>y>hxWRnQ_nx*)** z_i`~O+p6J$<{pIVKr8Lebc4b_pVG zJF3*@NOaGj(LFP3mgol8Sagk<>Up9YRwLT3QTpmaw-Q~q;_=KZYpSxYMAxkd>B8TF zU34#Gz3*}pZ1L_`YD*W!75;TifNu89I=)+1oO3fe(1nkSo(NrUO^GfV0Vld)H85Sc z0Vld)H9TE704KU(H40tW04KU(H5OeM0Vld)H6mTq0Vld)H7;FfiH<}!th&+VvT=O3 ztxgu4=!R8i+dVuV=!c>9SukGEZoYoG!}g zt-N6~?+x4MU70NSLPqbGujVgxQ52^|2Xtn*ZJfiZ-rvphTt02<8x@DM;0vK^Tfdv< zxk{HF!RNV+Gi&sDRT|?yU(jkM>w@T>O_9vJY5OQDn-mM47G1*y8L`D(Z`9lB8)a5t1HUbBqM~~a%_4Wv{&Z~# zA0b9woy}#R@m+@nlSIpKy2a9!;nkn6Lxb6F+wooXA+G%&3>h!rP;{jqovD|Pg`3TpjCgVD2f;Xx83tbK5dPR>7WpmP;2x&b1O~I zMYrt{WmzWfHgzvev6T=NYlz==i=t5bcy;+BFN)&*o5%oP!zhA7Ojnf}aJ4n)$Df$R zGq&Gt{cced#vqH`G7Y^AGbF6hrH0@C){W+?%Cp*75*?k_@0ufy=Pl(rSgmX~$ZT~E z>wID&qNNQb^?#-$B58yB%&XF)=;y5v6$=n|n{$u$+vqYjR+eS-ul%o+Qt}C06`$$2 zU8|wu@hv#WtT~185iR8@TcLH--*}0`c2x^j%d6GO_8j-4p1;(OwVensGT`&giR|Fp zg4-^MCavvpYvt71Y0K13X{fB#XN6A*U%RZR`i{*0JYA)?KfP;JHK8(-T z?$W49kGbSz~5W=l-r)&tFRC+)?KRJS1JUk0kCk^`V%6 zI~u_fGo$SFlKRj+_Mz`Kz(zi8**~}a(#+bX<2^OZq+b?&9Gt^Ln{2H^BhF_=IXp~X zRyx98S^B$t7NwoVf`{+Fsu@}}jo0~Yj5}MMbn5Raj#~W^!y}&+9`NvVDR@SeZl9s@ z80eCS964$z5r!6OIQ({C7d;MLHd$(@l&C}q-zWQOw}^pmU20>mP42M)4r#&TXBJDe zY`#;Xiz-E*d0Pkwcr3bEmT^?29q)FFXz6P5jI+YzqQ|veVo8{V5LBRElm8gvWzl6d zPT&e)!J~U-TAm~X2U)zRhmgC53)Nd(997r*8 z9RpoW{2*lisaRb0S-*R6>Tbai(k%0hil?1FqkVU+sdd$m#mu;u>t1)Z7o=?Q*h-{eE8*#o=)1kl^)EqI(WC zFI|zp0OeAjGK~Ns;@yPVp=+ayR+%i7u1_P^_pJr3{|arF~;pmiEe~C91d2%OqVti(|$B1x)JJdIKb9Tn%){fJ|6hZ zMK6N|C%RLTZow0v%jHRq@3vLNf+s+C^5eU0bpkvMy2&$ZIs#5~r>Z%oOE(F?-?INr zlWwwIQi~ZKiS8w8c8SBftVFj_i*p!dnwt@i!taxn=tiZ$fD_%=bZmnU&j&uVx?OR( z)p7Np&vA!r_f2Z68SP+!RI({_vLw9t%pS?XkUnWJxLvOnsldb@T8q&^L~6> z^_i;kG#)qJ0_C1lw)&F??xqER)$K~%fRDCUY+DiShYZE?b`QJN?MgdN(txRNAStYl z7OdGvPm8fxo~=&JMJEN+0<|DWQ{AN! zZY&$?sbA=*KdG%QJ5`y~s3@L%mUKQPz!O&jJaHw!6ITK}aV5YLR{}h7{T~rG^_1!p Ro)Z87002ovPDHLkV1j3KEvWzi literal 0 HcmV?d00001 diff --git a/cinema/gb/window/rfs-hud/baseline_0013.png b/cinema/gb/window/rfs-hud/baseline_0013.png new file mode 100644 index 0000000000000000000000000000000000000000..72377bc9dfe12576921f6a407e0ae549c2130261 GIT binary patch literal 3127 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 Ro)Z87002ovPDHLkV1j3KEvWzi literal 0 HcmV?d00001 diff --git a/cinema/gb/window/rfs-hud/baseline_0014.png b/cinema/gb/window/rfs-hud/baseline_0014.png new file mode 100644 index 0000000000000000000000000000000000000000..63e664404f02834c9254204057bc5de73828ff28 GIT binary patch literal 3136 zcmV-G48QY0058(0ssI20N3}|000aJNkl zA(Y#=7KZ=igow4wG|M({*$i~p3|zKL%Lewb24-0c%jUs1tdFHEfirBNmo?O^%kr4WL*q-na_ z?Sv3*`%|?5zW+0+GL%asUe1)o3z8&hxIorAE_0{-7hdQ_*+{$~O;h{*Z|?q}!prxk z(^i>__hs>CQEl<|6?gyu-T}bk?j62;+ZKD!KbwtCce_;&ECC^eloHQhDrcmqy~uJ06@M%KAadY0ARC0`76MFi|rQcO@r;OH(Zo9+oKe9qkA|U==Ia* zM~$)k3A~=(ir*k#PX%VY&^&YT<;KJA3p*C;O`4{=+IHN26hcJCnp|y{bvPW_z9@eJ zUzJ1rR=mnr$kz&Ey$x>0Q#En9-`@Xq03gG7(zN)0+wDA@4Cl;`YnfF^ff06sG z_ECLHl&VYU@^{-JEEd^oU1Y=yov!MQIRwA`h^9_a#YIOc@@~6^_828&j9RCart%!dY{vOYT{0fO|2>hi zhE`O4Uf*=Z`y!!Hysi1?BGkHpc#rvDbl-@2rJH40eP=dY)kQP)Mg0q$iELw>rYUv6 zBVAR#Y?nlNO3qdS`1j|{YPEvQ0f_gI52sj~J4j&6oam^ZCDCm=SE6fU-)~BO>DK$f zS(dF9P)GvVoN6xpowJ13XkBfMU!_9cdNtSAQ{lsvp&@fEJyE)61`-qxZhb%z;`Q?`xoLJ6k0pneL?vRk4yJi7lc z!_fz;y)GQ4I|6b#boB{OMbxE7lw87YQNo{H3jr#FuV#x@ZJ!&Q(o6s#5h>DOVzu+mGh2 zhCml}7j4c}y)C+=l5zS}@oMJSB@nu(Td*Nl)tRp0W}s_P`gA^X$5$*#l0fL94%m?K zh;&W+q$#}yMHd=ib3QB5Ep4kvT-`?LNN$BeL^@F&CE`Wt$jEKtK z=>FH`9LH1gnq+9Wx6Po&d*M9FwSK0H#$0qS{oOmKGaOCn|5EhUlJ*^ip=!GT?myh? z{ouDww>OPK7luq$r0Y>*(M4M(E7J9-5$R@G){x1HbTt`9PS0vwx*!YgJiZ(0nl(CI z0J9iX^`sE!0+=Cs<{lIXT>!I4*Sm(H%VqUg^_0jA9&=TZ?ijYayj{`}8xvm5^Ml(I z>6#UeXJ$3uRoSRW*Q@~P!X9v>Yu1Q#&9VX<>6#U$?UK#|j&#imnJ##KaGOkYuVlV& zvI%a^uB$rJg?Vn$1n8zu4&%FF-Zgg#T^L;SMCe*;l627qIMVg2vFM@^aHQ*3Bhp13 zaHQ*3H@aLlkMFu_X8JJFb=TSY z)tkI%#*owauB+NJS&^>0Z0M>JIfW23VcffCX0=%GmD8O|VC&OQNN1NT>B(e-W@A-*r{Zf+s`CF@f85Jq)U#jOcQNzTBXdS;qQqYSPnBAMv*;TDN$d|O-j=Q-{I*tnlDM#BE-v; z=Xub8o#?tM*trOP6)s?3bQ_I0OuBxJIM4IDccHey_EA-urb3)&EW}~3Q3sU$+APa> z?2koJftHQwPa#^cQ_Org9OQo67);SdAu6HPV77aFKGGj2F|sVem&_Ld0(R{Y zQR<*>!9tL6C?xr~C$+FM8H+`?P54)(U zaj-#^N95mr1;PRB*><0G2N;6wGF??_=G+TiHs9a>27p-zx#$b&R*d+$VRWJIryW~* z=CkIjs&m>>YrwyU`)haUm2SLR-YyMvTU9=N z+U;9S8V>Nlw#zAnM*r-+-Q^Znt(O1rKSvOxI)m2HVx(sdl`3+&S28@xXX*`3+X@fJgDnXbD~h>+g1J zcezME9WFbau%>cK39iw;xptzJgrz@N_vv;H7@cJhN)Y zM8&~&pTCsOxi9qvc=-OVI^*{8`t4(8lDfi%4c($EwcY?5x!xcGG{32G{I zX6(&HkCiu0)09^;(YALx#K3f+z@sLa%Dx7M{QwSORDc&W!Bx>!rJAX)n>svb_k8Zm(eSu9@Ejt||D7q{ab2nY&qDQAoVxm{-nR``t z3l4-Xi5#`-omrEoi_U<9qKlfNwm-zQ>7rXdI5fK54#8!=>obQYXA7PN-M0C=y&iWI zxdEOG-N}1q*7+!Ux7*Qjs9Bcfd44<|)zwiwD$?ykRu=r}^W))g;Iuxy^?M#+u8J}N zSpnWW{E0HzyZ!o~zy9^X`xsQT-JWFI21mMAs`Iza%0G+rF3}BS;bkYiS-Ln2IDJZY zyUHSqh6pRb82c^TF3IGg8}Gc4Qr_JCQQscv2B_ol*xF5Ex{Ws}YDOIC2B_olh&C5J zy*Yrq-Sf$XDx!-<7ai$dyO{2Bxzqtiy4Nn1F0@o-q&oo-SJugbBi%`=2(l(Xm&?;0 z-*wd-lc4){#&=ycp9bCNncL(r;2-H;qig|R5#1HqYq5ddWU1dKw%3h&7+AgXmMZgnR1Uzv?z!O&lJaI+96ITR0 aas3|0058(0ssI20N3}|000!WNklt7I2#SzVNS0-F2u2&M_!pl4P_wl)Rn`5v-|IK~-fD|snAflS z>#FMRs_O37^8k+N$WwPE8xDuV;n2K0o5656?5<>#G8_(PGb5dFcw$@d5ronO_-tlk zH;8|_B@=mWx<@}qJbsHZ^CCh)-Ia{zZ#X`w7>U|g7Z;7x5dJx1ypMKQvJ8KH_SL7< zwy5Q~y_B}SHm@b{ektOM_WZct);0q5VK$d{-5=w|KGB-y*q9DNzhr@Zd z!V&%K?=t{+@4ew?UwwM@^0hm6?xMdzBBRf34za@R2?@iCMBxk1BW4F5$V>#G#jh{qsT;p;IxPNQ>8@la&t$*& z+3>=J3s3&>;N+R?yJyf{k>8xrU;J$NFs-y@T=F}ME&US z!4*~rKko__%*&8$hk_qcHNR|{el(v>D(o7f0)OUq;a99W2}o)FYqc52)LeQ60JhRX%$Gc15KM?{ zo+-1&pGqzsLDRqWrb;AE+NJP6fl|_3+cdIt}MYgcZXzH$H#O`2l z4lCpNc|puj9Um`8qZ|NmAfmLWEE6A?S`o*r4%J#W|Ka%g_Q42_lGnvg$GkzkiI+5W zggJSYlgSPrc}ei`cXuU2bBdC8S28lZWf+#WK~UBfk>XKTuu|Kb`fP_e7XiNIU`rC4jh_5T9%;@98dlVUWX#!1Mee zzz;^FFZ=zUB;nt@>(Nh?ye{hC*asHT!J;YGSp1T6DQqcatB#L^%jmoon&b$41m`wc zbbqcgD#DRRqc15#oa z;m-%e;=C}VU|^-3e{5Z(JbxGqWwPPdkG>l&FE8@ZD5uL#NEy*dT{G*_6o|ht7YvZL z9NT-_KS2BZ?%jX>VfaHFzI9Yoh!ZO>((~=vuSRRX9ZwHdvOpO$L7rP$7<1^P!bcB8 zu_a&JaZPwk@(;V$*WUm6PvMjCZEW4w*WQ0Jz3s_gpMIj`HM!~#2jm{al4fim>YCeC z$H#)gCl%tGmR(0-%-4RH5ANnCKbN9Hf!RSm^C6jncn_nd^^kj?e(?y|LebR(AZsqeq5_> zA@aH?!Ut0E zqHMUlG%3>jbYQWM7xEF}-d%iG#23;g$0x!;j3by=u^jynMahd(qu-9FZ!PXdbOgsC zu8UU7#A2I^s^jxpVELr9{OhSvoi522UK{{2 zu?z<4;Sar^te5p^p_O{BUV5#9PtR~;#IgC{K0nBnmVa~6ihOY0`WdlBsBn3o@9XE| zabNIL97UTkrza0EC-3jS;rK}Sj1u-`dR{3x|9SrK^|ki_0E6f5%K!OiBlYPgTwXNM z7-tE7PG~#haTu|aOLJ~l1z%V#dKxViJ^+lzSFmYkvwxXr_31}XrNZUqQ8ec#BO}1g zh`H24+>6pN@Avp^GvpKenNbE$5%pEa zr|Ca+N7$bi3h|oBe;__}Wuofx8a`OFt21maK1c?O9advj#MjS7d;DSp`47YwD_Ke8 zJt5qN?hdhjMdVM5uV)VJ;@^*7=z~k}(*YL8hi{DdbMkecg!r^SO3yjWrwuLPzYt$! zOCoQF#=g0fTF9$Od@WQYR>Vg?w7LHzDW8(If`32$WU|8-Iv|C-#q(fu|8kQ(tuGi& zvOj9#qip76zZLw);wO<;Hn3hRH-ohBkR&a>xi;G({$r`SymFeP_eY^<+Mo}$dGeRT z4_UFQLj1U26ZlC;z7g!1o)ei-T*$nzG=6>5G=7qhoF;|PWU_-F^#9_nZbe*>!>3F_ zl<308c_IHN3QXbOu5|v5s|WZU^3Mk*KUh2j+|QU6C#}2((>qdJfxg(k6gyw*H}CP3Kra=AkH2xIPppI0 zV0>Kio-WoFbpBX=@Gc*b=1LQ#h-FAq1TJ7Ic~6+;6h|{3+5YiOUdrsA-))P$*JG(HHx2vG(Wlm0OWzl z4`E6ngkIJlcMFd0Rt}#}G(+aQJiqHM{i#tbKjo@(F~Ca^C6PD!e6YD6xqkB=Z&cn_ z1e$K|CGWoqD#S13C#t#^kU#r1g_~!n!D6Sb6BR&>CgnzAYSR6CjaGLnO^TDot zT&U2I%@HhmlB=SS8jlRV)^MSrHSwM2gX!Ds!X8Uo(TJ5OZt{P`@Jnm8%=zHL`t;UK z)MKa1KY!dbe45Dlr4^3lsQq1&JY7=U5|>z=SQzp2@j9*s8WvE3oCmg>E-(KhtUcq$3I+}p6S&%>* zG~oPklkusDnAZg28~^yuV|_9X;`pMj#_y6vpLJ2JJ1{dR3;+)c-&9mNUumBY-c*O< zz?x!)P{>jj34lMuY_f1^N%P-!d{JD3gLg!6vd;&b4eV#s#l42o9!vLtiu==ojrQW3 zT?*WravI-0AFNFT-yY#k-V~|OAe$pVFwnsByUWM-#JnySDe#@=gH65%`_BTv{C^z?l}?q>B5~M+rZ6 zdq&{f=Y#c8RR6>H=1g4F2abMMLI88N;Oc5^$2TctX$-$ZADb;9hNur5{Xj(j)cefM znG&3|6kjj*avaZ;N#HxT3pF1T^_OlYPoP9H@m&l-z_y8pjuO5HC%hMSM3^qN3q?%> zwYemgnqfcqf}#!oK*`OnTDX7gA%RvJe+m3+{losWiZ0E?367usd@wBffJ5AW4WTCU zp9EiSHiS?U_D93Q-A?Qp1=EWSuk_x{3paub3WLWKQ@9$g+H*4MG?JJ z`_t*q2a6c5f%tq{56ZDMpZ_TQH0Of_2cn}bAKx`BUc&w9`D3$MY;MQFOPXDsVafQ% z`_n{e&Ifxk92Wki