diff --git a/BootROMs/cgb_boot.asm b/BootROMs/cgb_boot.asm index 77a25bc..ba13913 100644 --- a/BootROMs/cgb_boot.asm +++ b/BootROMs/cgb_boot.asm @@ -732,12 +732,11 @@ Preboot: ld a, [$143] bit 7, a - call z, EmulateDMG + ldh [$4C], a ldh a, [TitleChecksum] ld b, a - ldh [$4C], a ; One day, I will know what this switch does and how it differs from FF6C ldh a, [InputPalette] and a jr nz, .emulateDMGForCGBGame diff --git a/Cocoa/Document.m b/Cocoa/Document.m index 7cb0eea..9866064 100644 --- a/Cocoa/Document.m +++ b/Cocoa/Document.m @@ -333,9 +333,7 @@ static void printImage(GB_gameboy_t *gb, uint32_t *image, uint8_t height, NSMutableParagraphStyle *paragraph_style = [[NSMutableParagraphStyle alloc] init]; [paragraph_style setLineSpacing:2]; - - self.mainWindow.backgroundColor = [NSColor blackColor]; - + self.debuggerSideViewInput.font = [NSFont userFixedPitchFontOfSize:12]; self.debuggerSideViewInput.textColor = [NSColor whiteColor]; self.debuggerSideViewInput.defaultParagraphStyle = paragraph_style; diff --git a/Cocoa/Document.xib b/Cocoa/Document.xib index 5694ecd..88c5275 100644 --- a/Cocoa/Document.xib +++ b/Cocoa/Document.xib @@ -50,10 +50,16 @@ - + - + + + + + + + diff --git a/Cocoa/GBBorderView.h b/Cocoa/GBBorderView.h new file mode 100644 index 0000000..477add1 --- /dev/null +++ b/Cocoa/GBBorderView.h @@ -0,0 +1,5 @@ +#import + +@interface GBBorderView : NSView + +@end diff --git a/Cocoa/GBBorderView.m b/Cocoa/GBBorderView.m new file mode 100644 index 0000000..a5f5e81 --- /dev/null +++ b/Cocoa/GBBorderView.m @@ -0,0 +1,26 @@ +#import "GBBorderView.h" + +@implementation GBBorderView + + +- (void)awakeFromNib +{ + self.wantsLayer = YES; +} + +- (BOOL)wantsUpdateLayer +{ + return YES; +} + +- (void)updateLayer +{ + /* Wonderful, wonderful windowserver(?) bug. Using 0,0,0 here would cause it to render garbage + on fullscreen windows on some High Sierra machines. Any other value, including the one used + here (which is rendered exactly the same due to rounding) works around this bug. */ + self.layer.backgroundColor = [NSColor colorWithCalibratedRed:0 + green:0 + blue:1.0 / 1024.0 + alpha:1.0].CGColor; +} +@end diff --git a/Cocoa/GBViewMetal.m b/Cocoa/GBViewMetal.m index 1c0a86f..34cd50b 100644 --- a/Cocoa/GBViewMetal.m +++ b/Cocoa/GBViewMetal.m @@ -71,13 +71,6 @@ static const vector_float2 rect[] = [self loadShader]; } -- (void)addSubview:(NSView *)view -{ - /* Fixes rounded corners */ - [super addSubview:view]; - [self setWantsLayer:YES]; -} - - (void) loadShader { NSError *error = nil; diff --git a/Core/apu.c b/Core/apu.c index 2ba6969..2da4346 100644 --- a/Core/apu.c +++ b/Core/apu.c @@ -426,6 +426,14 @@ void GB_apu_copy_buffer(GB_gameboy_t *gb, GB_sample_t *dest, size_t count) dest[gb->apu_output.buffer_position + i] = output; } + if (gb->apu_output.buffer_position) { + if (gb->apu_output.buffer_size + (count - gb->apu_output.buffer_position) < count * 3) { + gb->apu_output.buffer_size += count - gb->apu_output.buffer_position; + gb->apu_output.buffer = realloc(gb->apu_output.buffer, + gb->apu_output.buffer_size * sizeof(*gb->apu_output.buffer)); + gb->apu_output.stream_started = false; + } + } count = gb->apu_output.buffer_position; } memcpy(dest, gb->apu_output.buffer, count * sizeof(*gb->apu_output.buffer)); diff --git a/Makefile b/Makefile index 45e3b29..d81c774 100755 --- a/Makefile +++ b/Makefile @@ -21,7 +21,7 @@ ifeq ($(MAKECMDGOALS),) MAKECMDGOALS := $(DEFAULT) endif -VERSION := 0.11 +VERSION := 0.11.1 export VERSION CONF ?= debug @@ -306,4 +306,4 @@ libretro: clean: rm -rf build -.PHONY: libretro \ No newline at end of file +.PHONY: libretro