diff --git a/Arcade_MiST/Nintendo Radar Scope Hardware/Donkey Kong/meta/Pest Place.mra b/Arcade_MiST/Nintendo Radar Scope Hardware/Donkey Kong/meta/Pest Place.mra new file mode 100644 index 00000000..8c3aac19 --- /dev/null +++ b/Arcade_MiST/Nintendo Radar Scope Hardware/Donkey Kong/meta/Pest Place.mra @@ -0,0 +1,51 @@ + + Pest Place + 0217 + pestplce + 201912300000 + 1982 + Nintendo of America + Maze / Monkeys + Platform + Platform / Mario Bros. + dkong + + + + + + + + + + + 09 + + + + + + + + + + + + + + + + + + + + + + + + + + + 00 + + diff --git a/Arcade_MiST/Nintendo Radar Scope Hardware/Donkey Kong/rtl/dkong_MiST.sv b/Arcade_MiST/Nintendo Radar Scope Hardware/Donkey Kong/rtl/dkong_MiST.sv index a0c1e09b..478c5010 100644 --- a/Arcade_MiST/Nintendo Radar Scope Hardware/Donkey Kong/rtl/dkong_MiST.sv +++ b/Arcade_MiST/Nintendo Radar Scope Hardware/Donkey Kong/rtl/dkong_MiST.sv @@ -44,6 +44,8 @@ wire rotate = status[2]; wire [1:0] scanlines = status[4:3]; wire blend = status[5]; +wire landscape = core_mod[3]; + assign LED = ~ioctl_downl; assign AUDIO_R = AUDIO_L; assign SDRAM_CLK = clock_24; @@ -161,6 +163,7 @@ dkong_top dkong( .I_DKJR(core_mod[0]), .I_DK3B(core_mod[1]), .I_RADARSCP(core_mod[2]), + .I_PESTPLCE(core_mod[3]), .O_SOUND_DAT(audio), .O_VGA_R(r), .O_VGA_G(g), @@ -263,7 +266,7 @@ arcade_inputs inputs ( .joystick_0 ( joystick_0 ), .joystick_1 ( joystick_1 ), .rotate ( rotate ), - .orientation ( 2'b11 ), + .orientation ( {1'b1, ~landscape} ), .joyswap ( 1'b0 ), .oneplayer ( 1'b1 ), .controls ( {m_tilt, m_coin4, m_coin3, m_coin2, m_coin1, m_four_players, m_three_players, m_two_players, m_one_player} ), diff --git a/Arcade_MiST/Nintendo Radar Scope Hardware/Donkey Kong/rtl/dkong_adec.v b/Arcade_MiST/Nintendo Radar Scope Hardware/Donkey Kong/rtl/dkong_adec.v index dbe7642a..cb7bc567 100644 --- a/Arcade_MiST/Nintendo Radar Scope Hardware/Donkey Kong/rtl/dkong_adec.v +++ b/Arcade_MiST/Nintendo Radar Scope Hardware/Donkey Kong/rtl/dkong_adec.v @@ -25,6 +25,7 @@ I_CLK_EN_N, I_RESET_n, I_DKJR, I_DK3B, +I_PESTPLCE, I_AB, I_DB, I_MREQ_n, @@ -66,6 +67,7 @@ input I_CLK_EN_N; input I_RESET_n; input I_DKJR; input I_DK3B; +input I_PESTPLCE; input [15:0]I_AB; input [3:0]I_DB; input I_MREQ_n; @@ -154,7 +156,7 @@ logic_74xx138 U_4D( ); -assign O_ROM_CS_n = I_DKJR ? (&W_4D_Q[5:0] & (!I_DK3B | !(I_AB[15:12] == 4'h9 | I_AB[15:12] == 4'hD))) : &W_4D_Q[3:0]; +assign O_ROM_CS_n = I_DKJR ? (&W_4D_Q[5:0] & (!I_PESTPLCE | I_AB[15:12] != 4'hB) & (!I_DK3B | !(I_AB[15:12] == 4'h9 | I_AB[15:12] == 4'hD))) : &W_4D_Q[3:0]; // ADDR DEC 7000H - 7FFFH diff --git a/Arcade_MiST/Nintendo Radar Scope Hardware/Donkey Kong/rtl/dkong_col_pal.v b/Arcade_MiST/Nintendo Radar Scope Hardware/Donkey Kong/rtl/dkong_col_pal.v index d1ca78c7..5c73205f 100644 --- a/Arcade_MiST/Nintendo Radar Scope Hardware/Donkey Kong/rtl/dkong_col_pal.v +++ b/Arcade_MiST/Nintendo Radar Scope Hardware/Donkey Kong/rtl/dkong_col_pal.v @@ -18,6 +18,7 @@ module dkong_col_pal( input CLK_24M, input CLK_6M_EN, input I_DK3B, + input I_PESTPLCE, input I_PALBNK, input [5:0]I_VRAM_D, input [5:0]I_OBJ_D, @@ -86,8 +87,8 @@ dpram #(9,8) col2 ( ); //assign {O_R, O_G, O_B} = I_DK3B ? {W_2F_DO, W_2E_DO} : ~{W_2F_DO[3:1], W_2F_DO[3], ~W_2E_DO}; -assign O_R = I_DK3B ? W_2F_DO[7:4] : ~{W_2F_DO[3:1], W_2F_DO[3]}; -assign O_G = I_DK3B ? W_2F_DO[3:0] : ~{W_2F_DO[0], W_2E_DO[3:2], W_2F_DO[0]}; -assign O_B = I_DK3B ? W_2E_DO[3:0] : ~{W_2E_DO[1:0], W_2E_DO[1:0]}; +assign O_R = I_DK3B ? W_2F_DO[7:4] : {4{I_PESTPLCE}} ^ ~{W_2F_DO[3:1], W_2F_DO[3]}; +assign O_G = I_DK3B ? W_2F_DO[3:0] : {4{I_PESTPLCE}} ^ ~{W_2F_DO[0], W_2E_DO[3:2], W_2F_DO[0]}; +assign O_B = I_DK3B ? W_2E_DO[3:0] : {4{I_PESTPLCE}} ^ ~{W_2E_DO[1:0], W_2E_DO[1:0]}; endmodule diff --git a/Arcade_MiST/Nintendo Radar Scope Hardware/Donkey Kong/rtl/dkong_obj.v b/Arcade_MiST/Nintendo Radar Scope Hardware/Donkey Kong/rtl/dkong_obj.v index 668d705b..3d3900c0 100644 --- a/Arcade_MiST/Nintendo Radar Scope Hardware/Donkey Kong/rtl/dkong_obj.v +++ b/Arcade_MiST/Nintendo Radar Scope Hardware/Donkey Kong/rtl/dkong_obj.v @@ -31,6 +31,7 @@ module dkong_obj( input CLK_24M, input CLK_12M, input CLK_12M_EN, + input I_PESTPLCE, input [9:0] I_AB, // input [7:0] I_DB, input [7:0] I_OBJ_D, @@ -170,8 +171,9 @@ always@(posedge W_5F2_Q[0]) W_8H_Q <= W_8H_D; reg [7:0]W_6J_Q; always@(posedge W_5F2_Q[2]) W_6J_Q <= W_HD[7:0]; -wire [7:0]W_6K_D = {W_6J_Q[7],I_CMPBLKn,~I_H_CNT[9], - ~(I_H_CNT[9]|W_FLIP_2),W_6J_Q[3:0]}; +wire [7:0]W_6K_D = !I_PESTPLCE ? + {W_6J_Q[7],I_CMPBLKn,~I_H_CNT[9],~(I_H_CNT[9]|W_FLIP_2),W_6J_Q[3:0]} : + {W_6H_Q[7],I_CMPBLKn,~I_H_CNT[9],~(I_H_CNT[9]|W_FLIP_2),W_6H_Q[3:0]}; reg [7:0]W_6K_Q; always@(posedge CLK_24M) @@ -309,8 +311,9 @@ begin O_OBJ_DO <= O_OBJ_DO ; end - -wire [11:0]W_ROM_OBJ_AB = {W_6J_Q[6],W_6H_Q[6:0],W_8H_Q[3:0]^{W_6H_Q[7],W_6H_Q[7],W_6H_Q[7],W_6H_Q[7]}}; +wire [11:0]W_ROM_OBJ_AB = !I_PESTPLCE ? + {W_6J_Q[6],W_6H_Q[6:0],W_8H_Q[3:0]^{{4{W_6H_Q[7]}}}} : + {W_6J_Q[7:0],W_8H_Q[3:0]^{4{W_6H_Q[6]}}}; wire [7:0]W_OBJ_DO_7C,W_OBJ_DO_7D,W_OBJ_DO_7E,W_OBJ_DO_7F; diff --git a/Arcade_MiST/Nintendo Radar Scope Hardware/Donkey Kong/rtl/dkong_top.v b/Arcade_MiST/Nintendo Radar Scope Hardware/Donkey Kong/rtl/dkong_top.v index cffeef49..47ca2528 100644 --- a/Arcade_MiST/Nintendo Radar Scope Hardware/Donkey Kong/rtl/dkong_top.v +++ b/Arcade_MiST/Nintendo Radar Scope Hardware/Donkey Kong/rtl/dkong_top.v @@ -38,6 +38,7 @@ module dkong_top input I_DKJR, input I_DK3B, input I_RADARSCP, + input I_PESTPLCE, // VGA (VIDEO) IF output [3:0]O_VGA_R, @@ -188,6 +189,9 @@ always @(*) begin 6'h07: MAIN_CPU_A = {5'h03,W_CPU_A[10:0]}; // 0x3800-0x3FFF -> 0x1800-0x1FFF in ROM file 6'h09: MAIN_CPU_A = {5'h05,W_CPU_A[10:0]}; // 0x4800-0x4FFF -> 0x2800-0x2FFF in ROM file 6'h0B: MAIN_CPU_A = {5'h07,W_CPU_A[10:0]}; // 0x5800-0x5FFF -> 0x3800-0x3FFF in ROM file + //pestplace + 6'h16: MAIN_CPU_A = {5'h0C,W_CPU_A[10:0]}; // 0xB000-0xB7FF -> 0x6000-0x6FFF in ROM file + 6'h17: MAIN_CPU_A = {5'h0D,W_CPU_A[10:0]}; // 0xB800-0xBFFF -> 0x6000-0x6FFF in ROM file // dkong3b 6'h12: MAIN_CPU_A = {5'h0C,W_CPU_A[10:0]}; // 0x9000-0x97FF -> 0x6000-0x6FFF in ROM file 6'h13: MAIN_CPU_A = {5'h0D,W_CPU_A[10:0]}; // 0x9800-0x9FFF -> 0x6000-0x6FFF in ROM file @@ -314,6 +318,7 @@ dkong_adec adec .I_RESET_n(W_RESETn), .I_DKJR(I_DKJR), .I_DK3B(I_DK3B), + .I_PESTPLCE(I_PESTPLCE), .I_AB(W_CPU_A), .I_DB(WI_D), .I_MREQ_n(W_CPU_MREQn), @@ -348,7 +353,7 @@ dkong_adec adec ); wire W_DISPLAY = W_5H_Q[1]; // radar enable -wire W_FLIPn = W_5H_Q[2]; +wire W_FLIPn = I_PESTPLCE ^ W_5H_Q[2]; wire W_2PSL = W_5H_Q[3]; wire W_DREQ = W_5H_Q[5]; // DMA Trigger @@ -391,6 +396,7 @@ dkong_obj obj .CLK_24M(W_CLK_24576M), .CLK_12M(WB_CLK_12288M), .CLK_12M_EN(W_CLK_12288M_EN), + .I_PESTPLCE(I_PESTPLCE), .I_AB(), .I_DB(/*W_2N_DO*/), .I_OBJ_D(W_OBJ_DI), @@ -484,6 +490,7 @@ dkong_col_pal cpal .CLK_24M(W_CLK_24576M), .CLK_6M_EN(W_CLK_12288M & !W_H_CNT[0]), .I_DK3B(I_DK3B), + .I_PESTPLCE(I_PESTPLCE), .I_VRAM_D({W_VRAM_COL[3:0],W_VRAM_VID[1:0]}), .I_OBJ_D(W_OBJ_DAT), .I_CMPBLKn(W_L_CMPBLKn),