GithubHelp home page GithubHelp logo

liji32 / sameboy Goto Github PK

View Code? Open in Web Editor NEW
1.5K 40.0 203.0 13.14 MB

Game Boy and Game Boy Color emulator written in C

Home Page: https://sameboy.github.io/

License: Other

Assembly 1.42% Objective-C 25.75% C 68.98% Makefile 1.78% GLSL 1.94% Perl 0.01% Metal 0.13% Shell 0.01%
gameboy-color gameboy emulator

sameboy's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

sameboy's Issues

wrong aspect ratio

aspect ratio i wrong when using the aspect ratio from the core. manually setting 1:1 par (10:9 dar) fixes it

Menu controls are inconsistent between controller and keyboard

On keyboard, you use ESC both for opening and closing the menu.
On controller, one button opens the menu (both shoulder buttons do this on my XBox 360 controller), but you have to press B (which is assigned to A on my controller) to close the menu, instead of using the same button as when opening the menu.

(As a side note, it would be nice if pressing B could close the current submenu, or menu if on the main one.)

Gamepad controller ?

Will we be able to use this emulator with gamepad controller ? I love the PS4 controller and hope to be able to use it with your awesome emulator soon. Sorry about my English.

[Feature Request] GBA mode for CGB games (Core option)

As of today there is no way of entering The Advance Shop in Oracle of Ages and Oracle of Seasons in either SameBoy standalone or the Libretro core.

Oracle of Seasons, The Advance Shop is open
image

Oracle of Ages, The Advance Shop is open
image

It is a unique shop often referred to as the 100 Rupee Advance Shop and can only be accessed when either games is played on a Game Boy Advance console, otherwise the right-sided doors will be closed and shut.

bgb, Gambatte and most other emulators have the option to enable Game Boy Advance mode one way or another.

There isn't a whole lot of CGB games that takes advantage of playing on the GBA and I believe there is only four games that does it.

  1. Oracle of Ages, The Advance Shop is open
  2. Oracle of Seasons, The Advance Shop is open
  3. Shantae, I don't know the exact details on this
  4. Wendy - Every Witch Way, Three extra levels to play

Thanks in advance!

Input issue in "utopia" demo

The demo appears to accept any input to continue past the initial screen but SameBoy will only continue if certain button combinations are pressed (e.g. A+Right, B+Left)

SameBoy master and SameBoy libretro only accept certain combos
BGB, Gambatte (libretro) and mGBA (libretro) appear to accept any input to continue

Demo: https://www.pouet.net/prod.php?which=15116

SameBoy Linux/SDL: b1d65fd

Pinball Deluxe is Broken

SameBoy cannot play Pinball Deluxe. The ROM corrupts the memory by continuously leaking the stack after the game is started. The game also fails to run on BGB for similar, but not identical, reasons.

I did not test the game on my real CGB.

Add proper gamepad configuration

I have two controllers, none of which will work properly with SameBoy. The first one I tried was an Xbox One controller, which almost worked... except SameBoy didn't map the D-pad and I was forced to use the left stick instead. The second controller I tried was an SNES controller (through an adaptor), which also almost worked... except Start and R were mapped to "turbo", Select and L were mapped to "menu", and X and Y were mapped to A and B respectively, leaving the GB Start and Select buttons unable to be pressed by any button on the controller. I would appreciate it if I could manually configure the gamepad so that I wouldn't have to go through things like this.

gbtests by _Judge don't pass

The test rom fails a few of the tests, using the latest libretro linux updater version.
I think I have the source code for it stuffed somewhere, let me know if it would be useful. It would also be good to verify the tests on real hardware, as they are quite old and some may be revision specific.

gbtest.zip

Sound Quality [Windows (Libretro+SDL)] part 2

Hi @LIJI32 and thanks for a wonderful and accurate Game Boy emulator!

I have read both #8 and this commit 00623d4 and from what I could understand from it the sound quality should be fixed and the pops and clicks should be gone?

Maybe this is just something on my end but I don't know, I'm running SameBoy 0.10 (libretro@f905c4d) on RetroArch 1.7.0 on Windows 10 Enterprise 2016 LTSB x64 and I can still hear frequent pops and clicks, real strong in Zelda - Link's Awakening.

All you have to do is to start a new game and the music in Mabe village should pop and click like crazy, and this is not happening on either bgb or Gambatte.

I have tried to change the Audio settings in RetroArch to make them similar like bgb for example but the music still pops and clicks.

However this isn't the case for all games I have, but of all 12, Link's Awakening is the worst sounding game.

libretro core volume issues [Linux]

It seems like the libretro port is constantly playing at 100% volume even when the sound in the game is supposed to be silent.

This causes other sound in the background to be distorted/clipping as well.

Tested on Arch Linux with PulseAudio 11.1, RetroArch 1.6.9 and the latest master of SameBoy.

Error building on Debian Linux to to Werror,-Wunused-variable

DEFINES -Wno-deprecated-declarations -g -DGB_INTERNAL -c Core/z80_cpu.c -o build/obj/Core/z80_cpu.c.o
Core/z80_cpu.c:760:14: error: unused variable 'call_addr' [-Werror,-Wunused-variable]
    uint16_t call_addr = gb->pc - 1;
             ^
Core/z80_cpu.c:937:14: error: unused variable 'call_addr' [-Werror,-Wunused-variable]
    uint16_t call_addr = gb->pc - 1;
             ^
Core/z80_cpu.c:971:14: error: unused variable 'call_addr' [-Werror,-Wunused-variable]
    uint16_t call_addr = gb->pc - 1;
             ^
3 errors generated.
Makefile:135: recipe for target 'build/obj/Core/z80_cpu.c.o' failed
make[1]: *** [build/obj/Core/z80_cpu.c.o] Error 1

Log: http://sprunge.us/YCaF

Blinking sprites on some games

Since commit d8e0683 and up, the emulator displays blinking sprites on some games. The effect happens specially when moving, if that makes sense. I have recorded the following two videos as a reference:

Wario Land - Super Mario Land 3 (W) [!].gb: https://0x0.st/sMCA.mp4
Kirby's Dream Land 2 (U) [S][!].gb: https://0x0.st/sMCm.mp4

SameBoy was compiled using libsdl2-dev 2.0.7+dfsg1-3 and clang 4.0-40 on Debian sid.

Thank you for making such great emulator! 🌟

(SDL) Required files.

I am trying to make a good SameBoy SlackBuild for Slackware Linux. This will include both the SDL frontend and the libretro port. The libretro port is rather straight forward, but its not really clear what files the SDL frontend will make use of. Additionally its not clear what paths I should install these files so that SameBoy will see them.

For example, including the *.fsh shaders files seems obvious, preferable they should be installed to /usr/share/sameboy/ or /usr/share/games/sameboy/ on Slackware. Will SameBoy check either of these paths? Can I set the path in the Makefile?

Sound Quality [Windows (Libretro+SDL)]

The sound quality of both the Libretro and SDL ports of SameBoy on Windows seems bad when compared to Gambatte-Libretro. It's more noticeable on some games than others. The BIOS boot sound and the intro to Kirby's Block Ball had a pretty noticeable quality difference, so I did some recordings:

KBB Gambatte-Sameboy Windows.zip

The Gambatte clip is pretty clean, with just a few pops here and there. SameBoy Libretro and SDL sound like maybe they are playing at a lower KHz? More pops and clicks too.

link cable emulation between multiple instances

Hi!

I realize the demand is pretty specific : I'd like to emulate link cables between virtual gameboys for sync stuff. The context is I use LSDJ to make music with gameboys, and you can connect multiple gameboys to get them to play together at the same rhythm, using a master/slave config.

On Windows, I usually use BGB, which supports it, but on Mac and Linux, you have to go through Wine. It works... okay let's say. It's just hella laggy and tends to desync pretty rapidly.

Just discovered your project today, so I don't know if this is possible at all. From what I can see, BGB creates a listening server that other instances can connect to. I'll check out if I can help about this

Crash on serialize

Hey

I have one weird issue. I have a crash when saving states in dual single cart mode but only on the following case:

image

Basically Dual Mode enabled, and emulated model DMG | CGB. Every other combination works. Even CGB | DMG

Crashes immediately when saving state with this weird stack trace:

Thread 1 received signal SIGTRAP, Trace/breakpoint trap.
[Switching to Thread 6304.0x7374]
0x00007ff97fbc877b in ntdll!RtlIsNonEmptyDirectoryReparsePointAllowed ()
   from C:\WINDOWS\SYSTEM32\ntdll.dll
(gdb) bt
#0  0x00007ff97fbc877b in ntdll!RtlIsNonEmptyDirectoryReparsePointAllowed ()
   from C:\WINDOWS\SYSTEM32\ntdll.dll
#1  0x00007ff97fbcfcfa in ntdll!RtlpNtMakeTemporaryKey ()
   from C:\WINDOWS\SYSTEM32\ntdll.dll
#2  0x00007ff97fb6fa02 in ntdll!RtlSetProxiedProcessId ()
   from C:\WINDOWS\SYSTEM32\ntdll.dll
#3  0x00007ff97fb83e08 in ntdll!memset () from C:\WINDOWS\SYSTEM32\ntdll.dll
#4  0x00007ff97d3c984c in msvcrt!free () from C:\WINDOWS\System32\msvcrt.dll
#5  0x000000006cf53be2 in sameboy_libretro!retro_serialize ()
   from D:\GameData\Emulators\RetroArch\libretro\sameboy_libretro.dll
#6  0x0000000000402cf3 in core_serialize (info=0x5adf760) at core_impl.c:320
#7  0x0000000000421f92 in content_save_state (
    path=0xaff10d0 "D:\\GameData\\EmulatorData\\States\\windows\\SameBoy\\Pokemon - Blue Version (USA, Europe) (SGB Enhanced).state", save_to_disk=true,
    autosave=false) at tasks/task_save.c:1172
#8  0x000000000040d354 in command_event_main_state (cmd=10) at command.c:1620
#9  0x000000000040d8c5 in command_event (cmd=CMD_EVENT_SAVE_STATE, data=0x0)
    at command.c:1877
#10 0x0000000000407f41 in runloop_check_state (settings=0xa724610,
    input_nonblock_state=false, sleep_ms=0x5adfdc0) at retroarch.c:2922
#11 0x0000000000408676 in runloop_iterate (sleep_ms=0x5adfdc0)
    at retroarch.c:3192
#12 0x000000000040170f in rarch_main (argc=5, argv=0xa7245d0, data=0x0)
    at frontend/frontend.c:131
#13 0x000000000040176f in SDL_main (argc=5, argv=0xa7245d0)
    at frontend/frontend.c:154
#14 0x00000000007f0458 in main_getcmdline ()
#15 0x00000000004013c7 in __tmainCRTStartup ()
    at C:/repo/mingw-w64-crt-git/src/mingw-w64/mingw-w64-crt/crt/crtexe.c:337
#16 0x00000000004014cb in WinMainCRTStartup ()
    at C:/repo/mingw-w64-crt-git/src/mingw-w64/mingw-w64-crt/crt/crtexe.c:187```

Can't open ROMs while VisualBoyAdvance is installed

(Using macOS High Sierra)

When trying to open any .gbc file, I ran into the following error:
bildschirmfoto 2017-10-30 um 00 20 08

The problem was apparently caused by VisualBoyAdvance, since removing it from my system made everything work fine. It might be some kind of conflict concerning file type association, since "Open with" didn't show SameBoy when VBA was installed, but did afterwards, and the "Open" dialog in the app didn't let me select the .gbc files at all.

Doesn't render black pixels when CPU is changing palette while PPU is reading it

game.gb.zip

Hi there,

Was sent here by @ISSOtm :)

The attached test rom switches from one palette to the inverse of that palette and then back to the original palette during mode 3. There are 12 t-cycles between palette changes:

    ; set the new palette: 8 cycles
    ld [c], a

    ; set the old palette again: 12 cycles
    ld a, b
    ld [c], a

In an earlier version of the test rom I was just switching the palette from white to black to white on each line, and thought it was a timing issue with the ® sprite, but PinoBatch suggested testing black to white to black also. "When one component writes a value at the exact time something else reads it the time for the value to rise may differ from the time for it to fall. A 1 may linger longer than a 0 or vice versa."

Not 100% sure whats going on, but seems like if the CPU is changing the palette while the PPU is reading the palette on the same cycle then the pixel should be rendered as black (or dark grey?).

The effect isn't seen on my MGB or CGB, only on DMG.

Screenshot taken from a build from master:
screen shot 2018-04-13 at 6 00 51 pm

Dusty screen photo:
image

HDMA timing might be off

Indie game Aevilia uses clever HDMA tricks to detect emulators. It relies both on open-bus quirks, which are easy to emulate, but also on tight HDMA timings that require proper test ROMs to verify.

WilbertPol's mooneye-gb tests failing

Once again latest linux autoupdated. Link to sources: https://github.com/wilbertpol/mooneye-gb/tree/master/tests

Fails:
tested in GBC mode:
intr_2_mode0_timing_sprites
intr_2_mode0_timing_sprites_nops
intr_2_mode0_timing_sprites_scx1_nops
intr_2_mode0_timing_sprites_scx2_nops
intr_2_mode0_timing_sprites_scx3_nops
intr_2_mode0_timing_sprites_scx4_nops
ly_lyc_0_write-C
ly_lyc_153_write-C
ly_lyc_write-C
stat_write_if-C
tested in GB mode (just GS/G specific):
ly_lyc_0_write-GS
ly_lyc_153_write-GS
ly_lyc_write-GS
stat_write_if-GS

Volume Control

Hi, is there a way to lower the volume on here? If not, is there a constant I can change in the code to permanently lower it?

arabic

is this app suport this lang?

Custom DMG BootRom WaitBFrames is very innacurate

I was writing my own custom bootrom code, and got the quick animation based on your source code.
When checking wait for frames, I found this code to be not accurate to count frames

WaitFrame:
    ldh a, [$44]
    cp $90 ; <-- compares LY=144, if LY is already 144, it will return early
    jr nz, WaitFrame
    ret

WaitBFrames:
    call WaitFrame
    dec b ; <-- while LY=144, frame checks will be skipped
    jr nz, WaitBFrames 
    ret

As you may notice, calling WaitBFrames while LY is still 144 will drop all the additional waits you were expecting. If you are lucky, LY increases to 145 and another frame will be correctly awaited.

As you are a guy very paranoid for accuracy, I can suggest the implementation I used for the WaitFrame :)

WaitFrame:
    ldh a, [$44]
    cp 143 ; <-- syncs to a new frame first
    jr nz, WaitFrame
wait_ly_144:
    ldh a, [$44]
    cp 144 ; <-- now we can wait for vblank
    jr nz, wait_ly_144
    ret

The above code will always work in WaitBFrames, because LY=144 now, we need a new frame in LY=143
(maybe the first sync frame will be dropped, but we have a little time while LY increments)
With this new code, calling WaitBFrames(60) will wait for a sec correctly.

And now to fix the animation timings based on the new function, giving it an entire duration of about 1 sec, without cutting sound off too early:

; Wait ~0.08 seconds
    ld b, 5 ; <-- just enough time to display logo
    call WaitBFrames

    ; Play first sound
    ld a, $83
    call PlaySound
    ld b, 5 ; <-- wait for ~ 0.084 sec, almost the original tone duration
    call WaitBFrames
    ; Play second sound
    ld a, $c1
    call PlaySound

; Wait ~0.9 seconds
    ld b, 50 ; <-- wait for a sec to let tone finishes playing 
    call WaitBFrames

I applied those changes to my own custom boot here

Thank you for your efforts on getting pretty accurate emulation! Maybe I will need help later with audio emulation, as I have zero knowledge about digital audio processing, except maybe I know a .wav file stores waves :)

Unsupported mappers

Several mappers are unsupported.
Official:
MBC6
TAMA5

Unlicensed:
Rocket #303
Wisdom Tree
SmartCom
Datel Orbital #461
Bootleg Mappers (Probably the easiest way is to support the GBX format from Taizou - http://hhug.me/gbx )

Mooneye GB tests

Fails in latest master:
DMG mode:
acceptance:
boot_hwio-dmgABCXmgb
serial:
boot_sclk_align-dmgABCXmgb
CGB mode:
misc:
boot_hwio-C

I guess the boot_hwio tests pass with official bootroms?

Controller joysticks are wonky

Two bugs for the price of one !

One, the direction key associated with the joystick is considered repressed (ie. released then held again) every time the stick's position changes. Thus, it's possible to get multiple D-Pad "presses" by simply rotating the stick, or altering its tilt. Even slightly, and that's the problem.
To reproduce : this can be done in any menu : tilt the joystick slowly to quickly scroll all the way down, or hold it quickly then rotate it.

Second, holding directly cardinal directions is kinda screwy too. SameBoy seems to stop considering the joystick held after some random time. Maybe it's linked to the above.
To reproduce : hold straight up/down/left/right.

Libretro port runloop issues

Hi there,

@not6 did most of the work so far on doing a basic libretro port. We have made some nice progress.

Our only problem so far though is that the runloop that has to be implemented doesn't really fit our model.

It would be best if we could run exactly one frame once every retro_run call, without needing to have a vblank handler active.

Because the runloop is not implemented right now in a way libretro understands, fastforwarding and rewinding is currently not possible.

You can see what we currently do for SameBoy here -

https://github.com/libretro/SameBoy/blob/master/libretro/libretro.c#L272

This is our vblank callback implementation -

https://github.com/libretro/SameBoy/blob/master/libretro/libretro.c#L142

You can see here how we implemented the runloop for another GBC/GB emulator, Gambatte -

https://github.com/libretro/gambatte-libretro/blob/master/libgambatte/libretro/libretro.cpp#L829

Thanks for the great work on this emulator.

Issue with pokemon crystal

pokemon - crystal version usa europe rev a -180319-183339

Using windows 10 x64, opengl driver
Using latest version of sameboy, the same happens with no shaders.

Rom was pokemon crystal europe rev A no intro

Some other users have reported the same issue as well for pokemon crystal 1.1

GBC internal color palettes for GB games.

The GBC had special palettes for several GB games built into the BIOS which would be automatically assigned whenever you would play GB games on a GBC. If no special palette was found, it would then default to one of the generic ones. Is it possible to add this feature to Sameboy? there is already support for external BIOS. Gambatte has a similar feature and it is quite handy.

Maybe an option to toggle which hardware to emulate on boot would be best as that would give you the option of emulating the GB or the GBC when playing original GB games.

Here is an example of the internal GBC palettes on Gambatte.

Thank you for porting this emulator over to Retroarch by the way, it is awesome!

[Feature request] Syntax to allow 16-bit dereferencing

I want to get the address that is on top of the stack. p/a [sp] only returns an 8-bit value, whereas I want a 16-bit value.
While it is possible to type p/a [sp] + [sp+1]*256, it can get rather tedious (especially with a double-deref, where I might want to get the contents of the address located on top of the stack...).
As such, a syntax that retrieves a 16-bit value from an address would be very welcome.

Here are a few suggestions for such a syntax (ordered by decreasing order of my appreciation) :

  • Doubling the square brackets ([[a:hl]])
  • Curly brackets ({a:hl})
  • Adding a modifier to the first square bracket ([w/a:hl], with w standing for word)

libretro rewind feature randomly crashes and sometimes causes graphical glitches

What the title says. Tested with 'Batman' for GB.

Here's a screenshot of the game crashing while trying to rewind:

20180309045927

Here's a screenshot of graphical glitches after stopping a rewind:
20180309050251

And here's a screenshot of the game crashing after subsequently trying to exit the game after stopping a rewind (this happens a lot too). I suspect this has something to do with the fact that I have RetroArch set to save a state on exit.

20180309050257

Libretro missing source files

It seems some source files are missing for Libretro port.

G -Wall -D__LIBRETRO__ -fPIC -I.. -std=gnu11 -D_GNU_SOURCE -D_USE_MATH_DEFINES -fPIC -DGB_INTERNAL
make: *** No rule to make target '../build/obj/../libretro/agb_boot_libretro.c.o', needed by '../build/bin/sameboy_libretro.so'.  Stop.
make: Leaving directory '/tmp/SameBoy/libretro'

Function disassembled as `IO_HDMA1`

I have a function located at $0051, called SwitchRAMBanks (SameBoy correctly loads and displays its name from the SYM file accompanying my ROM), but the instruction that reached it was displayed as CALL IO_HDMA1 ; =$0051, whereas I expected my function's name instead.

GiiBii test suite

This is a pain to check, but I am trying my best. As I cannot verify on hardware, take these with a grain of salt. Found here.

Format
"Name of tests" - <Passes in DMG mode? 1/0> ; <Passes in CGB mode? 1/0>

CPU
corrupted_stop - 0 ; 0
corrupted_stop_2 - cannot test (no results)
corrupted_stop_sound - cannot test (no results)
cpu_registers_initial_dmg - 1 ; 1
cpu_registers_initial_gbc - N ; 0 (may be from a different CGB revision?)
daa - cannot test (no results)
halt_bug_test - 1 ; 1
halt_bug_timing - 1 ; 1
halt_if - 0 ; 0
halt_ret_adress - 1 ; 1
halt_strange_things - 1 ; 1
if_flag_cleared - 1 ; 1
speed_change_cancel (not pressed) - N ; 0
speed_change_cancel (pressed) - N ; 0
speed_change_timing_coarse - N ; 0
speed_change_timing_fine - N ; 0
stop_lcd_on_off - cannot test (not sure how to interpret results)
stop_no_exit - cannot test (no results)
undefined_opcodes - cannot test (no results)
undefined_opcodes_2 - cannot test (no results)

DMA
dma_copy_during_halt_speed - 0 ; 0
dma_halt_stop_speedchange - 0 ; 0
dma_irq
dma_restart - 1 ; 1 (i hope, doesn't contain zero padding)
dma_timing - 1 ; 1 (i hope, doesn't contain zero padding)
dma_timing_2 - 1 ; 1
dma_timing_dblspeed - N ; 1 (i hope, doesn't contain zero padding)
dma_timing_lcd_on - 0 ; 0
dma_valid_sources_dmg - 0 ; 0
dma_valid_sources_gbc - N ; 0
gdma_irq - N ; 0
gdma_timing_coarse - N ; 0
gdma_timing_fine - N ; 0
hdma_halt - N ; 0
hdma_modify_adress - N ; 1
hdma_start_1 - N ; 0
hdma_start_2 - N ; 0
hdma_start_3 - N ; 0
hdma_timing_fine - N ; 0
hdma_valid_dest_swap_bank - N ; 1
hdma_valid_sources - N ; 0

Interrupts
halt_exit_timings_ime_disabled_dmg_mode - 1 ; 1
halt_exit_timings_ime_disabled_cgb_mode - N ; 1
halt_exit_timings_ime_enabled_dmg_mode - 1 ; 1
halt_exit_timings_ime_enabled_cgb_mode - N ; 1
int_timing_halt_dmg_mode - 1 ; 1
int_timing_halt_cgb_mode - N ; 1
int_timing_no_halt_dmg_mode - 1 ; 1
int_timing_no_halt_cgb_mode - N ; 1
joy_interrupt - NOT
joy_interrupt_manual - NOT
joy_interrupt_manual_delay - NOT
lcd_irq_delay_timer_halt_dmg_mode - 1 ; 1
lcd_irq_delay_timer_halt_gbc_mode - N ; 1
lcd_irq_delay_timer_no_halt_dmg_mode - 1 ; 1
lcd_irq_delay_timer_no_halt_gbc_mode - N ; 1
serial_int_handle_timing_dmg_mode - 1 ; 1
serial_int_handle_timing_gbc_mode - N ; 1
set_clear_ime_delays - 1 ; 1
timer_int_handle_timing_dmg_mode - 1 ; 1
timer_int_handle_timing_gbc_mode - N ; 1
vbl_irq_delay_timer_dmg_mode - 1 ; 1
vbl_irq_delay_timer_gbc_mode - N ; 0

LCD
TODO

Memory
echo_ram_read - 0 ; 1
echo_ram_write - 0 ; 1
misc_rw_registers_gbc_mode - N ; 0
misc_rw_registers_gb_mode - 1 ; 1
oam_echo_ram_lcd_on - 1 ; 0
oam_echo_ram_read - 1 ; 0
oam_echo_ram_read_2 - 1 ; 0
oam_echo_ram_read_gbc_dmg_mode - N ; 0
timer_rw_regs - 1 ; 1

Serial
sc_change_freq_gbc - N ; 0
sio_irq_delay - 0 ; 0

Sound
div_resets_sound_test - cannot test (no results)
fade_double_speed - N ; 1 (I hope, would not trust my ears, both sounded right)

Timers
TODO

Video
bg_disabled_dmg - cannot test (no results)
bg_disabled_dmg_wx - cannot test (no results)
bg_disabled_gbc - cannot test (no results)

I will do more as I have time.

Compilation error w/ MSYS2/Mingw-w64

Using my msys2/mingw-w64 environment on Windows 10, I get the following error during compilation:

$ make
clang -Werror -Wall -std=gnu11 -D_GNU_SOURCE -DVERSION="0.10.1" -I. -D_USE_MATH_DEFINES -Wno-deprecated-declarations -g -MT build/obj/SDL/utils.c.o -M SDL/utils.c -c -o build/obj/SDL/utils.c.dep
clang -Werror -Wall -std=gnu11 -D_GNU_SOURCE -DVERSION="0.10.1" -I. -D_USE_MATH_DEFINES -Wno-deprecated-declarations -g -MT build/obj/SDL/shader.c.o -M SDL/shader.c -c -o build/obj/SDL/shader.c.dep
clang -Werror -Wall -std=gnu11 -D_GNU_SOURCE -DVERSION="0.10.1" -I. -D_USE_MATH_DEFINES -Wno-deprecated-declarations -g -MT build/obj/SDL/opengl_compat.c.o -M SDL/opengl_compat.c -c -o build/obj/SDL/opengl_compat.c.dep
clang -Werror -Wall -std=gnu11 -D_GNU_SOURCE -DVERSION="0.10.1" -I. -D_USE_MATH_DEFINES -Wno-deprecated-declarations -g -MT build/obj/SDL/main.c.o -M SDL/main.c -c -o build/obj/SDL/main.c.dep
clang -Werror -Wall -std=gnu11 -D_GNU_SOURCE -DVERSION="0.10.1" -I. -D_USE_MATH_DEFINES -Wno-deprecated-declarations -g -MT build/obj/SDL/gui.c.o -M SDL/gui.c -c -o build/obj/SDL/gui.c.dep
clang -Werror -Wall -std=gnu11 -D_GNU_SOURCE -DVERSION="0.10.1" -I. -D_USE_MATH_DEFINES -Wno-deprecated-declarations -g -MT build/obj/SDL/font.c.o -M SDL/font.c -c -o build/obj/SDL/font.c.dep
clang -Werror -Wall -std=gnu11 -D_GNU_SOURCE -DVERSION="0.10.1" -I. -D_USE_MATH_DEFINES -Wno-deprecated-declarations -g -MT build/obj/Core/z80_disassembler.c.o -M Core/z80_disassembler.c -c -o build/obj/Core/z80_disassembler.c.dep
clang -Werror -Wall -std=gnu11 -D_GNU_SOURCE -DVERSION="0.10.1" -I. -D_USE_MATH_DEFINES -Wno-deprecated-declarations -g -MT build/obj/Core/z80_cpu.c.o -M Core/z80_cpu.c -c -o build/obj/Core/z80_cpu.c.dep
clang -Werror -Wall -std=gnu11 -D_GNU_SOURCE -DVERSION="0.10.1" -I. -D_USE_MATH_DEFINES -Wno-deprecated-declarations -g -MT build/obj/Core/timing.c.o -M Core/timing.c -c -o build/obj/Core/timing.c.dep
Core/timing.c:3:9: error: '_WIN32_WINNT' macro redefined [-Werror,-Wmacro-redefined]
#define _WIN32_WINNT 0x0500
        ^
C:\msys64\mingw64\x86_64-w64-mingw32\include\_mingw.h:232:9: note: previous definition is here
#define _WIN32_WINNT 0x502
        ^
1 error generated.
clang -Werror -Wall -std=gnu11 -D_GNU_SOURCE -DVERSION="0.10.1" -I. -D_USE_MATH_DEFINES -Wno-deprecated-declarations -g -MT build/obj/Core/symbol_hash.c.o -M Core/symbol_hash.c -c -o build/obj/Core/symbol_hash.c.dep
clang -Werror -Wall -std=gnu11 -D_GNU_SOURCE -DVERSION="0.10.1" -I. -D_USE_MATH_DEFINES -Wno-deprecated-declarations -g -MT build/obj/Core/save_state.c.o -M Core/save_state.c -c -o build/obj/Core/save_state.c.dep
clang -Werror -Wall -std=gnu11 -D_GNU_SOURCE -DVERSION="0.10.1" -I. -D_USE_MATH_DEFINES -Wno-deprecated-declarations -g -MT build/obj/Core/rewind.c.o -M Core/rewind.c -c -o build/obj/Core/rewind.c.dep
clang -Werror -Wall -std=gnu11 -D_GNU_SOURCE -DVERSION="0.10.1" -I. -D_USE_MATH_DEFINES -Wno-deprecated-declarations -g -MT build/obj/Core/printer.c.o -M Core/printer.c -c -o build/obj/Core/printer.c.dep
clang -Werror -Wall -std=gnu11 -D_GNU_SOURCE -DVERSION="0.10.1" -I. -D_USE_MATH_DEFINES -Wno-deprecated-declarations -g -MT build/obj/Core/memory.c.o -M Core/memory.c -c -o build/obj/Core/memory.c.dep
clang -Werror -Wall -std=gnu11 -D_GNU_SOURCE -DVERSION="0.10.1" -I. -D_USE_MATH_DEFINES -Wno-deprecated-declarations -g -MT build/obj/Core/mbc.c.o -M Core/mbc.c -c -o build/obj/Core/mbc.c.dep
clang -Werror -Wall -std=gnu11 -D_GNU_SOURCE -DVERSION="0.10.1" -I. -D_USE_MATH_DEFINES -Wno-deprecated-declarations -g -MT build/obj/Core/joypad.c.o -M Core/joypad.c -c -o build/obj/Core/joypad.c.dep
clang -Werror -Wall -std=gnu11 -D_GNU_SOURCE -DVERSION="0.10.1" -I. -D_USE_MATH_DEFINES -Wno-deprecated-declarations -g -MT build/obj/Core/gb.c.o -M Core/gb.c -c -o build/obj/Core/gb.c.dep
clang -Werror -Wall -std=gnu11 -D_GNU_SOURCE -DVERSION="0.10.1" -I. -D_USE_MATH_DEFINES -Wno-deprecated-declarations -g -MT build/obj/Core/display.c.o -M Core/display.c -c -o build/obj/Core/display.c.dep
clang -Werror -Wall -std=gnu11 -D_GNU_SOURCE -DVERSION="0.10.1" -I. -D_USE_MATH_DEFINES -Wno-deprecated-declarations -g -MT build/obj/Core/debugger.c.o -M Core/debugger.c -c -o build/obj/Core/debugger.c.dep
clang -Werror -Wall -std=gnu11 -D_GNU_SOURCE -DVERSION="0.10.1" -I. -D_USE_MATH_DEFINES -Wno-deprecated-declarations -g -MT build/obj/Core/camera.c.o -M Core/camera.c -c -o build/obj/Core/camera.c.dep
clang -Werror -Wall -std=gnu11 -D_GNU_SOURCE -DVERSION="0.10.1" -I. -D_USE_MATH_DEFINES -Wno-deprecated-declarations -g -MT build/obj/Core/apu.c.o -M Core/apu.c -c -o build/obj/Core/apu.c.dep
clang -Werror -Wall -std=gnu11 -D_GNU_SOURCE -DVERSION="0.10.1" -I. -D_USE_MATH_DEFINES -Wno-deprecated-declarations -g -MT build/obj/Core/timing.c.o -M Core/timing.c -c -o build/obj/Core/timing.c.dep
Core/timing.c:3:9: error: '_WIN32_WINNT' macro redefined [-Werror,-Wmacro-redefined]
#define _WIN32_WINNT 0x0500
        ^
C:\msys64\mingw64\x86_64-w64-mingw32\include\_mingw.h:232:9: note: previous definition is here
#define _WIN32_WINNT 0x502
        ^
1 error generated.
clang -Werror -Wall -std=gnu11 -D_GNU_SOURCE -DVERSION="0.10.1" -I. -D_USE_MATH_DEFINES -Wno-deprecated-declarations -g -DGB_INTERNAL -c Core/apu.c -o build/obj/Core/apu.c.o
clang -Werror -Wall -std=gnu11 -D_GNU_SOURCE -DVERSION="0.10.1" -I. -D_USE_MATH_DEFINES -Wno-deprecated-declarations -g -DGB_INTERNAL -c Core/camera.c -o build/obj/Core/camera.c.o
clang -Werror -Wall -std=gnu11 -D_GNU_SOURCE -DVERSION="0.10.1" -I. -D_USE_MATH_DEFINES -Wno-deprecated-declarations -g -DGB_INTERNAL -c Core/debugger.c -o build/obj/Core/debugger.c.o
Core/debugger.c:1846:22: error: implicit declaration of function 'getline' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
    while ((length = getline(&line, &size, f)) != -1) {
                     ^
1 error generated.
make: *** [Makefile:142: build/obj/Core/debugger.c.o] Fehler 1

All packages of my msys2 installation are up-to-date.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.