GB MBC: Fix MBC1 RAM enable bit selection

This commit is contained in:
Vicki Pfau 2020-06-16 20:13:09 -07:00
parent 96f1838faa
commit c487b0cf43
7 changed files with 3 additions and 88 deletions

View File

@ -6,6 +6,7 @@ Emulation fixes:
- ARM: Fix ALU reading PC after shifting
- ARM: Fix STR storing PC after address calculation
- GB MBC: Fix MBC1 mode changing behavior
- GB MBC: Fix MBC1 RAM enable bit selection
- GB Video: Fix state after skipping BIOS (fixes mgba.io/i/1715 and mgba.io/i/1716)
- GBA: Fix timing advancing too quickly in rare cases
- GBA BIOS: Implement dummy sound driver calls

View File

@ -1,2 +0,0 @@
[testinfo]
fail=1

View File

@ -1,84 +0,0 @@
; this file was created with wlalink by ville helin <vhelin@iki.fi>.
; wla symbolic information for "/home/vicki/Scratch/mooneye-gb/tests/build/emulator-only/mbc1/bits_ram_en.gb".
[labels]
01:48c9 clear_vram
01:487a disable_lcd_safe
01:4880 disable_lcd_safe@wait_ly_0
01:4898 memcmp
01:48dd memcpy
01:48e6 memset
01:48a6 print_hex4
01:48d3 print_hex8
01:48f6 print_inline_string
01:48b2 print_load_font
01:48be print_newline
01:48ef print_string
01:47f0 quit
01:4805 quit@cb_return
01:480a quit@wait_ly_1
01:4810 quit@wait_ly_2
01:4816 quit@wait_ly_3
01:481c quit@wait_ly_4
01:4826 quit@success
01:484d quit@failure
01:4862 quit@halt
01:4863 quit@halt_execution_0
01:4866 reset_screen
01:4889 serial_send_byte
01:4000 font
00:0150 main
00:0164 test_round1
00:018e test_round2
00:01ae test_round2@expect_enabled
00:01b3 test_round2@expect_disabled
00:01cc test_round2@quit_inline_1
00:01dd ram_data_enabled
00:01ed ram_data_disabled
00:01fd compare_ram_data
00:0206 fail_round1_disable
00:020d fail_round1_disable@quit_inline_2
00:0240 fail_round1_enable
00:0247 fail_round1_enable@quit_inline_3
00:0279 fail_round1_print_test_address
00:0286 fail_round2_disable
00:028d fail_round2_disable@quit_inline_4
00:02ab fail_round2_expect
00:02b2 fail_round2_expect@quit_inline_5
00:2000 ram_en_expectations
00:ff80 test_address
00:ff80 test_address_l
00:ff81 test_address_h
00:ff82 ram_en_value
[definitions]
0000000a _sizeof_clear_vram
0000000f _sizeof_disable_lcd_safe
0000000e _sizeof_memcmp
00000009 _sizeof_memcpy
00000009 _sizeof_memset
0000000c _sizeof_print_hex4
0000000a _sizeof_print_hex8
00000006 _sizeof_print_inline_string
0000000c _sizeof_print_load_font
0000000b _sizeof_print_newline
00000007 _sizeof_print_string
00000076 _sizeof_quit
00000014 _sizeof_reset_screen
0000000f _sizeof_serial_send_byte
000007f0 _sizeof_font
00000002 _sizeof_test_address
00000001 _sizeof_test_address_l
00000001 _sizeof_test_address_h
00000001 _sizeof_ram_en_value
00000014 _sizeof_main
0000002a _sizeof_test_round1
0000004f _sizeof_test_round2
00000010 _sizeof_ram_data_enabled
00000010 _sizeof_ram_data_disabled
00000009 _sizeof_compare_ram_data
0000003a _sizeof_fail_round1_disable
00000039 _sizeof_fail_round1_enable
0000000d _sizeof_fail_round1_print_test_address
00000025 _sizeof_fail_round2_disable
00001d55 _sizeof_fail_round2_expect

Binary file not shown.

After

Width:  |  Height:  |  Size: 528 B

View File

@ -1,2 +1,2 @@
[testinfo]
fail=1
skip=360

View File

@ -442,7 +442,7 @@ void _GBMBC1(struct GB* gb, uint16_t address, uint8_t value) {
int bank = value & 0x1F;
switch (address >> 13) {
case 0x0:
switch (value) {
switch (value & 0xF) {
case 0:
memory->sramAccess = false;
break;