mirror of
https://github.com/Gehstock/Mist_FPGA.git
synced 2026-01-18 09:02:08 +00:00
Donkey Kong: add Pest Place
This commit is contained in:
parent
789dd9729d
commit
4bfde7ba4a
@ -0,0 +1,51 @@
|
||||
<misterromdescription>
|
||||
<name>Pest Place</name>
|
||||
<mameversion>0217</mameversion>
|
||||
<setname>pestplce</setname>
|
||||
<mratimestamp>201912300000</mratimestamp>
|
||||
<year>1982</year>
|
||||
<manufacturer>Nintendo of America</manufacturer>
|
||||
<category>Maze / Monkeys</category>
|
||||
<category>Platform</category>
|
||||
<category>Platform / Mario Bros.</category>
|
||||
<rbf>dkong</rbf>
|
||||
|
||||
<buttons names="Jump,Start 1P,Start 2P,Coin" default="A,Start,Select,R" />
|
||||
|
||||
<switches default="80" base="8">
|
||||
<dip bits="0,1" name="Lives" ids="3,4,5,6"/>
|
||||
<dip bits="2,3" name="Bonus" ids="10k,15k,20k,25k"/>
|
||||
<dip bits="4,6" name="Coins" ids="1C1P,2C1P,1C1P,3C1P,1C1P,4C1P,1C1P,5C1P,1C1P"/>
|
||||
<dip bits="7" name="Lives" ids="Cocktail,Upright"/>
|
||||
</switches>
|
||||
|
||||
<rom index="1"><part>09</part></rom>
|
||||
<rom index="0" zip="pestplce.zip" md5="48576fcf2767241441d662768cc53899" type="merged|nonmerged">
|
||||
<!-- Main CPU 32k-->
|
||||
<part name="pest.1p"/>
|
||||
<part name="pest.2p"/>
|
||||
<part name="pest.3p"/>
|
||||
<part name="pest.0"/>
|
||||
<part name="pest.0"/>
|
||||
|
||||
<!-- GFX1 8k-->
|
||||
<part name="pest.o"/>
|
||||
<part name="pest.k"/>
|
||||
|
||||
<!-- GFX2 16k-->
|
||||
<part name="pest.b"/>
|
||||
<part name="pest.a"/>
|
||||
<part name="pest.d"/>
|
||||
<part name="pest.c"/>
|
||||
|
||||
<!-- Sound CPU 4k-->
|
||||
<part name="pest.4"/>
|
||||
|
||||
<!-- LUTs -->
|
||||
<part name="n82s129a.bin"/>
|
||||
<part name="n82s129a.bin"/>
|
||||
<part name="n82s129b.bin"/>
|
||||
<part name="n82s129b.bin"/>
|
||||
<part repeat="3072">00</part>
|
||||
</rom>
|
||||
</misterromdescription>
|
||||
@ -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} ),
|
||||
|
||||
@ -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
|
||||
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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;
|
||||
|
||||
|
||||
@ -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),
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user