Skip to content
15 changes: 8 additions & 7 deletions info.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,20 @@ project:
# Source files must be in ./src and you must list each source file separately, one per line.
# Don't forget to also update `PROJECT_SOURCES` in test/Makefile.
source_files:
- "audio_interface.v"
- "bg_line.v"
- "bg_object.v"
- "bg_object_rom.v"
- "bg_render.v"
- "debounce.v"
- "dino_game_top.v"
- "dino_render.v"
- "dino_rom.v"
- "gamepad_pmod.v"
- "game_over_sound_player.v"
- "graphics_top.v"
- "hvsync_generator.v"
- "jump_sound_player.v"
- "lfsr.v"
- "obs_render.v"
- "obs_rom.v"
Expand All @@ -31,13 +39,6 @@ project:
- "player_physics.v"
- "score.v"
- "score_render.v"
- "audio_interface.v"
- "jump_sound_player.v"
- "game_over_sound_player.v"
- "bg_object.v"
- "bg_object_rom.v"
- "bg_render.v"
- "bg_line.v"


# The pinout of your project. Leave unused pins blank. DO NOT delete or add any pins.
Expand Down
67 changes: 45 additions & 22 deletions src/dino_game_top.v
Original file line number Diff line number Diff line change
Expand Up @@ -19,24 +19,48 @@ module tt_um_uwasic_dinogame #(parameter CONV = 2) (
wire game_tick_60hz;
wire [1:0] game_tick_20hz; // two consecutive pulses generated ([0] and then [1]), enabling pipelining

wire debounce_countdown_en; // pulse on rising edge of 5th vpos bit
wire button_up;
wire button_down;
// Gamepad Pmod support
wire gamepad_pmod_latch = ui_in[4];
wire gamepad_pmod_clk = ui_in[5];
wire gamepad_pmod_data = ui_in[6];
wire gamepad_is_present; // HIGH when gamepad is connected
wire gamepad_up;
wire gamepad_down;
wire gamepad_start; // Can leverage start, select from SNES
wire gamepad_b;
wire gamepad_y;
wire gamepad_select;
wire gamepad_left;
wire gamepad_right;
wire gamepad_a;
wire gamepad_x;
wire gamepad_l;
wire gamepad_r;

button_debounce button_up_debounce (
// Synchronizes pmod_data, pmod_clk, pmod_latch signals to system clock
// domain.
gamepad_pmod_single gamepad_pmod (
// Inputs:
.clk(clk),
.rst_n(rst_n),
.countdown_en(debounce_countdown_en),
.button_in(ui_in[0]),
.button_out(button_up)
);

button_debounce button_down_debounce (
.clk(clk),
.rst_n(rst_n),
.countdown_en(debounce_countdown_en),
.button_in(ui_in[1]),
.button_out(button_down)
.pmod_latch(gamepad_pmod_latch),
.pmod_clk(gamepad_pmod_clk),
.pmod_data(gamepad_pmod_data),

// Outputs:
.is_present(gamepad_is_present),
.up(gamepad_up),
.down(gamepad_down),
.start(gamepad_start),
.b(gamepad_b),
.y(gamepad_y),
.select(gamepad_select),
.left(gamepad_left),
.right(gamepad_right),
.a(gamepad_a),
.x(gamepad_x),
.l(gamepad_l),
.r(gamepad_r)
);

// GAME STATE SIGNALS
Expand Down Expand Up @@ -67,9 +91,9 @@ module tt_um_uwasic_dinogame #(parameter CONV = 2) (
.clk(clk),
.rst_n(rst_n),
.game_tick(game_tick_20hz),
.button_start(button_up),
.button_up(button_up),
.button_down(button_down),
.button_start(gamepad_start),
.button_up(gamepad_up),
.button_down(gamepad_down),
.crash(crash),
.player_position(player_position),
.game_frozen(game_frozen),
Expand Down Expand Up @@ -133,7 +157,7 @@ module tt_um_uwasic_dinogame #(parameter CONV = 2) (
obs_rom obs_rom_inst_2 (.clk(clk), .rst(~rst_n), .i_rom_counter(obs_rom_counter_2), .i_obs_type(obstacle2_type), .o_sprite_color(obs_color_2));
bg_object_rom bg_object_rom_inst (.clk(clk), .rst(~rst_n), .i_rom_counter(bg_objects_rom_counter), .o_sprite_color(bg_object_color));
wire [15:0] score;

score_render #(.CONV(CONV), .OFFSET(120)) score_inst_1 (
.clk(clk),
.rst(~rst_n),
Expand All @@ -142,7 +166,7 @@ module tt_um_uwasic_dinogame #(parameter CONV = 2) (
.i_vpos(vpos),
.o_score_color(score_color_1)
);

score_render #(.CONV(CONV), .OFFSET(110)) score_inst_2 (
.clk(clk),
.rst(~rst_n),
Expand Down Expand Up @@ -234,7 +258,6 @@ module tt_um_uwasic_dinogame #(parameter CONV = 2) (
.o_game_tick_60hz(game_tick_60hz),
.o_game_tick_20hz(game_tick_20hz[0]),
.o_game_tick_20hz_r(game_tick_20hz[1]),
.o_vpos_5_r(debounce_countdown_en),
.o_collision(crash)
);

Expand Down Expand Up @@ -263,6 +286,6 @@ module tt_um_uwasic_dinogame #(parameter CONV = 2) (
assign uio_oe = 8'b10000000;

// List all unused inputs to prevent warnings
wire _unused = &{ena, ui_in[7:2], uio_in, 1'b0};
wire _unused = &{ena, ui_in[7], ui_in[3:0], uio_in, gamepad_start, gamepad_b, gamepad_y, gamepad_select, gamepad_left, gamepad_right, gamepad_a, gamepad_x, gamepad_l, gamepad_r, gamepad_is_present, 1'b0};

endmodule
Loading
Loading