@@ -25,7 +25,7 @@ typedef enum {
25
25
GB_CONFLICT_LCDC_CGB_DOUBLE ,
26
26
GB_CONFLICT_STAT_CGB_DOUBLE ,
27
27
GB_CONFLICT_NR10_CGB_DOUBLE ,
28
- GB_CONFLICT_SCX_CGB_DOUBLE ,
28
+ GB_CONFLICT_SCX_DMG_AND_CGB_DOUBLE ,
29
29
} conflict_t ;
30
30
31
31
static const conflict_t cgb_conflict_map [0x80 ] = {
@@ -48,7 +48,7 @@ static const conflict_t cgb_double_conflict_map[0x80] = {
48
48
[GB_IO_WY ] = GB_CONFLICT_READ_OLD ,
49
49
[GB_IO_STAT ] = GB_CONFLICT_STAT_CGB_DOUBLE ,
50
50
[GB_IO_NR10 ] = GB_CONFLICT_NR10_CGB_DOUBLE ,
51
- [GB_IO_SCX ] = GB_CONFLICT_SCX_CGB_DOUBLE ,
51
+ [GB_IO_SCX ] = GB_CONFLICT_SCX_DMG_AND_CGB_DOUBLE ,
52
52
[GB_IO_WX ] = GB_CONFLICT_READ_OLD ,
53
53
};
54
54
@@ -59,15 +59,12 @@ static const conflict_t dmg_conflict_map[0x80] = {
59
59
[GB_IO_LCDC ] = GB_CONFLICT_DMG_LCDC ,
60
60
[GB_IO_SCY ] = GB_CONFLICT_READ_NEW ,
61
61
[GB_IO_STAT ] = GB_CONFLICT_STAT_DMG ,
62
-
63
62
[GB_IO_BGP ] = GB_CONFLICT_PALETTE_DMG ,
64
63
[GB_IO_OBP0 ] = GB_CONFLICT_PALETTE_DMG ,
65
64
[GB_IO_OBP1 ] = GB_CONFLICT_PALETTE_DMG ,
66
65
[GB_IO_WY ] = GB_CONFLICT_READ_OLD ,
67
66
[GB_IO_WX ] = GB_CONFLICT_WX_DMG ,
68
-
69
- /* Todo: these were not verified at all */
70
- [GB_IO_SCX ] = GB_CONFLICT_READ_NEW ,
67
+ [GB_IO_SCX ] = GB_CONFLICT_SCX_DMG_AND_CGB_DOUBLE ,
71
68
};
72
69
73
70
/* Todo: Verify on an SGB1 */
@@ -77,15 +74,12 @@ static const conflict_t sgb_conflict_map[0x80] = {
77
74
[GB_IO_LCDC ] = GB_CONFLICT_SGB_LCDC ,
78
75
[GB_IO_SCY ] = GB_CONFLICT_READ_NEW ,
79
76
[GB_IO_STAT ] = GB_CONFLICT_STAT_DMG ,
80
-
81
77
[GB_IO_BGP ] = GB_CONFLICT_READ_NEW ,
82
78
[GB_IO_OBP0 ] = GB_CONFLICT_READ_NEW ,
83
79
[GB_IO_OBP1 ] = GB_CONFLICT_READ_NEW ,
84
80
[GB_IO_WY ] = GB_CONFLICT_READ_OLD ,
85
81
[GB_IO_WX ] = GB_CONFLICT_WX_DMG ,
86
-
87
- /* Todo: these were not verified at all */
88
- [GB_IO_SCX ] = GB_CONFLICT_READ_NEW ,
82
+ [GB_IO_SCX ] = GB_CONFLICT_SCX_DMG_AND_CGB_DOUBLE ,
89
83
};
90
84
91
85
static uint8_t cycle_read (GB_gameboy_t * gb , uint16_t addr )
@@ -302,7 +296,7 @@ static void cycle_write(GB_gameboy_t *gb, uint16_t addr, uint8_t value)
302
296
break ;
303
297
}
304
298
305
- case GB_CONFLICT_SCX_CGB_DOUBLE :
299
+ case GB_CONFLICT_SCX_DMG_AND_CGB_DOUBLE :
306
300
GB_advance_cycles (gb , gb -> pending_cycles - 2 );
307
301
GB_write_memory (gb , addr , value );
308
302
gb -> pending_cycles = 6 ;
0 commit comments