Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/coolgirl-multicart/coolgirl-famicom-multicart.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexey 'Cluster' Avdyukhin <clusterrr@clusterrr.com>2020-09-24 14:51:47 +0300
committerAlexey 'Cluster' Avdyukhin <clusterrr@clusterrr.com>2020-09-24 14:51:47 +0300
commite7a42e167c3651e33754e6a0b3ed4d0ed76a36f4 (patch)
treec241f2ed6c8cf5884b700a7d296d2977827d7a15
parenta4273c5ff99c4c2e98eae67008c726eb597f4474 (diff)
Added VRC1 mapper
-rw-r--r--CoolGirl_config.vh5
-rw-r--r--CoolGirl_mappers.vh25
2 files changed, 24 insertions, 6 deletions
diff --git a/CoolGirl_config.vh b/CoolGirl_config.vh
index 2059e87..5c31fd4 100644
--- a/CoolGirl_config.vh
+++ b/CoolGirl_config.vh
@@ -6,7 +6,7 @@ parameter ENABLE_MAPPER_021_022_023_025 = 1, // mappers #021, #022, #023, #025 -
parameter ENABLE_MAPPER_022 = 1, // mapper #022 - VRC2a (shifted CHR lines)
parameter ENABLE_VRC4_INTERRUPTS = 1, // VRC4 interrupts
parameter ENABLE_MAPPER_030 = 1, // mapper #030 - add UNROM512 features to UxROM
-parameter ENABLE_MAPPER_032 = 1, // mapper #032 - IREM G101
+parameter ENABLE_MAPPER_032 = 1, // mapper #032 - Irem's G101
parameter ENABLE_MAPPER_033_048 = 1, // mappers #033 & #048 - Taito
parameter ENABLE_MAPPER_048_INTERRUPTS = 0, // mapper #048 interrupts
parameter ENABLE_MAPPER_034_241_BxROM = 1, // mappers #034 & #241 - BxROM: Deadly Towers (Mashou), Darkseed
@@ -20,13 +20,14 @@ parameter ENABLE_MAPPER_069 = 1, // mapper #069 - Sunsoft FME-7
parameter ENABLE_MAPPER_070 = 0, // mapper #070 - Bandai: Family Trainer, Kamen Rider Club, Space Shadow
parameter ENABLE_MAPPER_071 = 1, // mapper #071 - Camerica: for Fire Hawk only
parameter ENABLE_MAPPER_073 = 0, // mapper #073 - VRC3
+parameter ENABLE_MAPPER_075 = 0, // mapper #075 - VRC1
parameter ENABLE_MAPPER_078 = 1, // mapper #078 - Irem: Holy Diver and Uchuusen - Cosmo Carrier
parameter ENABLE_MAPPER_087 = 1, // mapper #087 - Jaleco
parameter ENABLE_MAPPER_090 = 1, // mapper #090 - JY (partical support): Aladdin only
parameter ENABLE_MAPPER_090_ACCURATE_IRQ = 0,// mapper #090 accurate IRQs: for Super Mario World
parameter ENABLE_MAPPER_090_MULTIPLIER = 0, // mapper #090 multiplier: for Super Mario World protection check
parameter ENABLE_MAPPER_093 = 1, // mapper #093 - Sunsoft-2: Shanghai, Fantasy Zone
-parameter ENABLE_MAPPER_097 = 0, // mapper #097 - IREM TAMS1: only Kaiketsu Yanchamaru
+parameter ENABLE_MAPPER_097 = 0, // mapper #097 - Irem's TAM-S1: only Kaiketsu Yanchamaru
parameter ENABLE_MAPPER_112 = 0, // mapper #112 - NTDEC
parameter ENABLE_MAPPER_113 = 0, // mapper #113 - NINA-03/06
parameter ENABLE_MAPPER_118 = 1, // mapper #118 - TxSROM
diff --git a/CoolGirl_mappers.vh b/CoolGirl_mappers.vh
index 8758955..c2a7ca4 100644
--- a/CoolGirl_mappers.vh
+++ b/CoolGirl_mappers.vh
@@ -254,7 +254,7 @@ begin
begin // scanline mode
vrc4_irq_prescaler = vrc4_irq_prescaler + 1'b1; // count prescaler
if ((vrc4_irq_prescaler_counter[1] == 0 && vrc4_irq_prescaler == 114)
- || (vrc4_irq_prescaler_counter[1] == 1 && vrc4_irq_prescaler == 113)) // 114, 114, 113
+ || (vrc4_irq_prescaler_counter[1] == 1 && vrc4_irq_prescaler == 113)) // 114, 114, 113
begin
vrc4_irq_prescaler = 0;
vrc4_irq_prescaler_counter = vrc4_irq_prescaler_counter + 1'b1;
@@ -293,8 +293,8 @@ begin
// IRQ for Sunsoft FME-7
if (ENABLE_MAPPER_069 & mapper69_counter_enabled)
begin
- reg carry;
- {carry, mapper69_irq_value[15:0]} = {1'b0, mapper69_irq_value[15:0]} - 1'b1;
+ reg carry;
+ {carry, mapper69_irq_value[15:0]} = {1'b0, mapper69_irq_value[15:0]} - 1'b1;
if (mapper69_irq_enabled && carry) mapper69_irq_out = 1;
end
@@ -1100,7 +1100,7 @@ begin
4'b1101: begin
mapper69_irq_out = 0; // ack
mapper69_counter_enabled = cpu_data_in[7];
- mapper69_irq_enabled = cpu_data_in[0];
+ mapper69_irq_enabled = cpu_data_in[0];
end
4'b1110: mapper69_irq_value[7:0] = cpu_data_in[7:0]; // IRQ low
4'b1111: mapper69_irq_value[15:8] = cpu_data_in[7:0]; // IRQ high
@@ -1153,6 +1153,23 @@ begin
prg_bank_6000[3:0] = cpu_data_in[4:1];
map_rom_on_6000 = 1;
end
+
+ // Mapper #75 - VRC1
+ if (ENABLE_MAPPER_075 && (mapper == 6'b100010))
+ begin
+ case (cpu_addr_in[14:12])
+ 3'b000: prg_bank_a[3:0] = cpu_data_in[3:0]; // $8000-$8FFF
+ 3'b001: begin // $9000-$9FFF
+ mirroring = {1'b0, cpu_data_in[0]};
+ chr_bank_a[6] = cpu_data_in[1];
+ chr_bank_e[6] = cpu_data_in[2];
+ end
+ 3'b010: prg_bank_b[3:0] = cpu_data_in[3:0]; // $A000-$AFFF
+ 3'b100: prg_bank_c[3:0] = cpu_data_in[3:0]; // $C000-$CFFF
+ 3'b110: chr_bank_a[5:2] = cpu_data_in[3:0]; // $E000-$EFFF
+ 3'b111: chr_bank_e[5:2] = cpu_data_in[3:0]; // $F000-$FFFF
+ endcase
+ end
end // romsel
end // write