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-22 01:21:09 +0300
committerAlexey 'Cluster' Avdyukhin <clusterrr@clusterrr.com>2020-09-22 01:21:09 +0300
commit57fd0cffe295ffe5245e14776992695081297459 (patch)
tree7ce0b9153ebec339e0b436e9441277197db5010a
parent0a6059db4c2f85bbbc97d93f9489dfe841d6eb32 (diff)
512KB CHR RAM fixes
-rw-r--r--CoolGirl_mappers.vh49
-rw-r--r--CoolGirl_rev3.x/CoolGirl.v2
-rw-r--r--CoolGirl_rev4.x/CoolGirl.v2
-rw-r--r--CoolGirl_rev5.x/CoolGirl.v2
4 files changed, 31 insertions, 24 deletions
diff --git a/CoolGirl_mappers.vh b/CoolGirl_mappers.vh
index ca1995e..48efeb6 100644
--- a/CoolGirl_mappers.vh
+++ b/CoolGirl_mappers.vh
@@ -413,7 +413,7 @@ begin
// Mapper #87
if (ENABLE_MAPPER_087 && (mapper == 6'b001100))
begin
- if (cpu_addr_in[14] & cpu_addr_in[13]) // $6000-$7FFF
+ if (cpu_addr_in[14:13] == 2'b11) // $6000-$7FFF
begin
chr_bank_a[4:3] = {cpu_data_in[0], cpu_data_in[1]};
end
@@ -456,24 +456,24 @@ begin
if (cpu_addr_in[14:0] == 15'h5117)
prg_bank_d[4:0] = cpu_data_in[4:0];
if (cpu_addr_in[14:0] == 15'h5120)
- chr_bank_a = cpu_data_in;
+ chr_bank_a[7:0] = cpu_data_in[7:0];
if (cpu_addr_in[14:0] == 15'h5121)
- chr_bank_b = cpu_data_in;
+ chr_bank_b[7:0] = cpu_data_in[7:0];
if (cpu_addr_in[14:0] == 15'h5122)
- chr_bank_c = cpu_data_in;
+ chr_bank_c[7:0] = cpu_data_in[7:0];
if (cpu_addr_in[14:0] == 15'h5123)
- chr_bank_d = cpu_data_in;
+ chr_bank_d[7:0] = cpu_data_in[7:0];
if (cpu_addr_in[14:0] == 15'h5128)
- chr_bank_e = cpu_data_in;
+ chr_bank_e[7:0] = cpu_data_in[7:0];
if (cpu_addr_in[14:0] == 15'h5129)
- chr_bank_f = cpu_data_in;
+ chr_bank_f[7:0] = cpu_data_in[7:0];
if (cpu_addr_in[14:0] == 15'h512A)
- chr_bank_g = cpu_data_in;
+ chr_bank_g[7:0] = cpu_data_in[7:0];
if (cpu_addr_in[14:0] == 15'h512B)
- chr_bank_h = cpu_data_in;
+ chr_bank_h[7:0] = cpu_data_in[7:0];
if (cpu_addr_in[14:0] == 15'h5203)
begin
- mmc5_irq_line = cpu_data_in;
+ mmc5_irq_line[7:0] = cpu_data_in[7:0];
mmc5_irq_ack = 1;
end
if (cpu_addr_in[14:0] == 15'h5204)
@@ -556,7 +556,8 @@ begin
if (ENABLE_MAPPER_030 && flags[1])
begin
// One screen mirroring select, CHR RAM bank, PRG ROM bank
- {mirroring, chr_bank_a[1:0]} = {1'b1, cpu_data_in[7:6]};
+ mirroring[1:0] = {1'b1, cpu_data_in[7]};
+ chr_bank_a[1:0] = cpu_data_in[6:5];
end
end else begin // CodeMasters, blah. Mirroring control used only by Fire Hawk
mirroring[1:0] = {1'b1, cpu_data_in[4]};
@@ -631,7 +632,13 @@ begin
mapper18_irq_control[3:0] = cpu_data_in[3:0];
mapper18_irq_out = 0;
end
- 5'b11110: mirroring = cpu_data_in[1:0] ^ {1'b0, ~cpu_data_in[1]}; // $F002
+ 5'b11110:
+ case (cpu_data_in[1:0])
+ 2'b00: mirroring = 2'b01; // Horz
+ 2'b01: mirroring = 2'b00; // Vert
+ 2'b10: mirroring = 2'b10; // 1SsA
+ 2'b11: mirroring = 2'b11; // 1SsB
+ endcase
5'b11111: ; // $F003 - sound
endcase
end
@@ -663,7 +670,7 @@ begin
if (ENABLE_MAPPER_066 && (mapper == 6'b001011))
begin
prg_bank_a[3:2] = cpu_data_in[5:4];
- chr_bank_a[4:3] = cpu_data_in[1:0];
+ chr_bank_a[4:3] = cpu_data_in[1:0];
end
// Mapper #90 - JY
@@ -681,14 +688,14 @@ begin
if (cpu_addr_in[14:12] == 3'b001) // $900x
begin
case (cpu_addr_in[2:0])
- 3'b000: chr_bank_a = cpu_data_in;
- 3'b001: chr_bank_b = cpu_data_in;
- 3'b010: chr_bank_c = cpu_data_in;
- 3'b011: chr_bank_d = cpu_data_in;
- 3'b100: chr_bank_e = cpu_data_in;
- 3'b101: chr_bank_f = cpu_data_in;
- 3'b110: chr_bank_g = cpu_data_in;
- 3'b111: chr_bank_h = cpu_data_in;
+ 3'b000: chr_bank_a[7:0] = cpu_data_in[7:0]; // $9000
+ 3'b001: chr_bank_b[7:0] = cpu_data_in[7:0]; // $9001
+ 3'b010: chr_bank_c[7:0] = cpu_data_in[7:0]; // $9002
+ 3'b011: chr_bank_d[7:0] = cpu_data_in[7:0]; // $9003
+ 3'b100: chr_bank_e[7:0] = cpu_data_in[7:0]; // $9004
+ 3'b101: chr_bank_f[7:0] = cpu_data_in[7:0]; // $9005
+ 3'b110: chr_bank_g[7:0] = cpu_data_in[7:0]; // $9006
+ 3'b111: chr_bank_h[7:0] = cpu_data_in[7:0]; // $9007
endcase
end
if ({cpu_addr_in[14:12], cpu_addr_in[1:0]} == 5'b10101) // $D001
diff --git a/CoolGirl_rev3.x/CoolGirl.v b/CoolGirl_rev3.x/CoolGirl.v
index fa675a6..20d23ea 100644
--- a/CoolGirl_rev3.x/CoolGirl.v
+++ b/CoolGirl_rev3.x/CoolGirl.v
@@ -46,7 +46,7 @@ module CoolGirl # (
assign sram_addr_out[14:13] = sram_page[1:0];
assign ppu_addr_out[18:10] = ext_ntram_access
? {7'b1111111, ppu_addr_in[11:10]}
- : {{~chr_addr_mapped[18], chr_addr_mapped[17:13]} & ~chr_mask[18:13], chr_addr_mapped[12:10]};
+ : {~(chr_addr_mapped[18] & ~chr_mask[18]), chr_addr_mapped[17:13] & ~chr_mask[17:13], chr_addr_mapped[12:10]};
assign cpu_data_in = cpu_data_out_enabled ? cpu_data_out : 8'bZZZZZZZZ;
wire flash_ce_w = ~(~romsel | (m2 & map_rom_on_6000 & cpu_addr_in[14] & cpu_addr_in[13]));
diff --git a/CoolGirl_rev4.x/CoolGirl.v b/CoolGirl_rev4.x/CoolGirl.v
index a895126..fe5928c 100644
--- a/CoolGirl_rev4.x/CoolGirl.v
+++ b/CoolGirl_rev4.x/CoolGirl.v
@@ -46,7 +46,7 @@ module CoolGirl # (
assign sram_addr_out[14:13] = sram_page[1:0];
assign ppu_addr_out[18:10] = ext_ntram_access
? {7'b1111111, ppu_addr_in[11:10]}
- : {{~chr_addr_mapped[18], chr_addr_mapped[17:13]} & ~chr_mask[18:13], chr_addr_mapped[12:10]};
+ : {~(chr_addr_mapped[18] & ~chr_mask[18]), chr_addr_mapped[17:13] & ~chr_mask[17:13], chr_addr_mapped[12:10]};
assign cpu_data_in = cpu_data_out_enabled ? cpu_data_out : 8'bZZZZZZZZ;
wire flash_ce_w = ~(~romsel | (m2 & map_rom_on_6000 & cpu_addr_in[14] & cpu_addr_in[13]));
diff --git a/CoolGirl_rev5.x/CoolGirl.v b/CoolGirl_rev5.x/CoolGirl.v
index 5ecfb9f..c7c4985 100644
--- a/CoolGirl_rev5.x/CoolGirl.v
+++ b/CoolGirl_rev5.x/CoolGirl.v
@@ -45,7 +45,7 @@ module CoolGirl # (
assign sram_addr_out[14:13] = sram_page[1:0];
assign ppu_addr_out[18:10] = ext_ntram_access
? {7'b1111111, ppu_addr_in[11:10]}
- : {{~chr_addr_mapped[18], chr_addr_mapped[17:13]} & ~chr_mask[18:13], chr_addr_mapped[12:10]};
+ : {~(chr_addr_mapped[18] & ~chr_mask[18]), chr_addr_mapped[17:13] & ~chr_mask[17:13], chr_addr_mapped[12:10]};
assign cpu_data_in = cpu_data_out_enabled ? cpu_data_out : 8'bZZZZZZZZ;
wire flash_ce_w = ~(~romsel | (m2 & map_rom_on_6000 & cpu_addr_in[14] & cpu_addr_in[13]));