1
0
mirror of https://github.com/TomHarte/CLK.git synced 2024-07-29 16:29:08 +00:00

Corrects colour fetching in TMS Graphics II to be a function of row.

This commit is contained in:
Thomas Harte 2017-12-02 16:10:29 -05:00
parent 7f8a13a409
commit fe0cdc8d69

View File

@ -134,11 +134,9 @@ void TMS9918::run_for(const HalfCycles cycles) {
int row_base = pattern_name_address_; int row_base = pattern_name_address_;
int pattern_base = pattern_generator_table_address_; int pattern_base = pattern_generator_table_address_;
int colour_base = colour_table_address_; int colour_base = colour_table_address_;
int colour_shift = 3;
if(screen_mode_ == 1) { if(screen_mode_ == 1) {
pattern_base &= 0x2000 | ((row_ & 0xc0) << 5); pattern_base &= 0x2000 | ((row_ & 0xc0) << 5);
colour_base &= 0x2000 | ((row_ & 0xc0) << 5); colour_base &= 0x2000 | ((row_ & 0xc0) << 5);
colour_shift = 0;
} }
row_base += (row_ << 2)&~31; row_base += (row_ << 2)&~31;
@ -151,7 +149,11 @@ void TMS9918::run_for(const HalfCycles cycles) {
break; break;
case 1: break; // TODO: sprites / CPU access. case 1: break; // TODO: sprites / CPU access.
case 2: case 2:
colour_buffer_[character_column] = ram_[colour_base + (pattern_name_ >> colour_shift)]; if(screen_mode_ != 1) {
colour_buffer_[character_column] = ram_[colour_base + (pattern_name_ >> 3)];
} else {
colour_buffer_[character_column] = ram_[colour_base + (pattern_name_ << 3) + (row_ & 7)];
}
break; break;
case 3: case 3:
pattern_buffer_[character_column] = ram_[pattern_base + (pattern_name_ << 3) + (row_ & 7)]; pattern_buffer_[character_column] = ram_[pattern_base + (pattern_name_ << 3) + (row_ & 7)];