diff options
author | Alexey 'Cluster' Avdyukhin <clusterrr@clusterrr.com> | 2021-06-11 19:25:28 +0300 |
---|---|---|
committer | Alexey 'Cluster' Avdyukhin <clusterrr@clusterrr.com> | 2021-06-11 19:25:28 +0300 |
commit | 4edbe5696716ae70db9f7bf1fd99fab7cffc735e (patch) | |
tree | 4ebdb2969f134ca1384e0ca826d33bff07a600ed | |
parent | 1f0a57053fab68f43bd8e8dc7a693b88957101bd (diff) |
New VRC flags
-rw-r--r-- | CoolGirl_mappers.vh | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/CoolGirl_mappers.vh b/CoolGirl_mappers.vh index a3b42e9..2a0b461 100644 --- a/CoolGirl_mappers.vh +++ b/CoolGirl_mappers.vh @@ -143,8 +143,22 @@ reg [7:0] mapper163_r5 = 0; reg writed; // for VRC wire shift_chr = ENABLE_MAPPER_021_022_023_025 && ENABLE_MAPPER_022 && (mapper == 6'b011000) && flags[1]; -wire vrc_2b_hi = cpu_addr_in[1] | cpu_addr_in[3] | cpu_addr_in[5] | cpu_addr_in[7]; -wire vrc_2b_low = cpu_addr_in[0] | cpu_addr_in[2] | cpu_addr_in[4] | cpu_addr_in[6]; +wire vrc_2b_hi = + (!flags[0] && !flags[2]) ? + (cpu_addr_in[7] | cpu_addr_in[2]) // mapper #21 + : (flags[0] && !flags[2]) ? + (cpu_addr_in[0]) // mapper #22 + : (!flags[0] && flags[2]) ? + (cpu_addr_in[5] | cpu_addr_in[3] | cpu_addr_in[1]) // mapper #23 + : (cpu_addr_in[2] | cpu_addr_in[0]); // mapper #25 +wire vrc_2b_low = + (!flags[0] && !flags[2]) ? + (cpu_addr_in[6] | cpu_addr_in[1]) // mapper #21 + : (flags[0] && !flags[2]) ? + (cpu_addr_in[1]) // mapper #22 + : (!flags[0] && flags[2]) ? + (cpu_addr_in[4] | cpu_addr_in[2] | cpu_addr_in[0]) // mapper #23 + : (cpu_addr_in[3] | cpu_addr_in[1]); // mapper #25 wire cpu_data_out_enabled; wire [7:0] cpu_data_out; @@ -1128,7 +1142,7 @@ begin */ if (ENABLE_MAPPER_021_022_023_025 && (mapper == 6'b011000)) begin - case ({cpu_addr_in[14:12], flags[0] ? vrc_2b_low : vrc_2b_hi, flags[0] ? vrc_2b_hi : vrc_2b_low}) + case ({cpu_addr_in[14:12], vrc_2b_hi, vrc_2b_low}) 5'b00000, 5'b00001, 5'b00010, @@ -1164,7 +1178,7 @@ begin begin if (cpu_addr_in[14:12] == 3'b111) begin - case ({flags[0] ? vrc_2b_low : vrc_2b_hi, flags[0] ? vrc_2b_hi : vrc_2b_low}) + case ({vrc_2b_hi, vrc_2b_low}) 2'b00: vrc4_irq_latch[3:0] <= cpu_data_in[3:0]; // IRQ latch low 2'b01: vrc4_irq_latch[7:4] <= cpu_data_in[3:0]; // IRQ latch hi 2'b10: begin // IRQ control |