Page 1 of 1

Turkey Shoot and Inferno

Posted: Sun Mar 13, 2022 8:30 pm
by darfpga
Hi,

VHDL code for Turkey shoot and Inferno arcade games for DE10_Lite board are available on github.com/darfpga. Feel free to port to MiSTer.

Dar.

Re: Turkey Shoot and Inferno

Posted: Mon Mar 14, 2022 8:55 pm
by aberu

Re: Turkey Shoot and Inferno

Posted: Mon Mar 14, 2022 10:39 pm
by jca
Thanks.

Dar also developed Galaga and Vectrex on the DE10-Lite and his cores are the base of the MISTer cores.

Re: Turkey Shoot and Inferno

Posted: Mon Mar 14, 2022 10:54 pm
by Xbytez
Awesome!

Dar also created one of my personal favourites the Berzerk arcade core which was also ported to MiSTer!

Re: Turkey Shoot and Inferno

Posted: Tue Mar 15, 2022 5:57 am
by shertz
I have a real turkey shoot arcade game. Looking forward to trying it out on this mister if it happens.

Re: Joust2

Posted: Tue Mar 15, 2022 11:12 pm
by darfpga
Joust2 for DE10 lite also available on https://github.com/darfpga. (No speech ATM).
Dar.

Re: Turkey Shoot and Inferno

Posted: Thu Mar 17, 2022 6:22 pm
by killersquirel
That's awesome news. I'm looking forward to these great games being ported to the MiSTer.

Re: Turkey Shoot and Inferno

Posted: Mon Mar 21, 2022 2:36 am
by aberu
I've been attempting to port Joust 2 to MiSTer (https://github.com/birdybro/Arcade-Joust2_MiSTer), I have video working, the roms and everything compiles fine, but rom loading is going to be tough because the original used sdram. It looks like this is the first time you used sdram loading (edit: nevermind, found mcr3 as an example)? I'm trying to look for a reference to compare against.

Re: Turkey Shoot and Inferno

Posted: Mon Mar 21, 2022 9:42 am
by macro
In williams2, where it currently links to each rom, you instead need to create a block of ram (internal FPGA ram is perfect for this) and instead load the rom at run time.

e.g. currently says

graph1_rom : entity work.joust2_graph1
port map(
clk => clock_12,
addr => graph_addr,
data => graph1_do
);


you need to pass these signals into the module

.dn_addr(ioctl_addr),
.dn_data(ioctl_dout),
.dn_wr(ioctl_wr && !ioctl_index),
.dn_ld(ioctl_download),

sort out which address to use and the write signal for loading this block

graph_addr_mux <= dn_addr(15 downto 0) when dn_ld='1' else graph_addr;
graph_rom_ld <= '1' when dn_addr(16 downto 14) = "001" and dn_ld='1' else '0';

(you need to set the relevant address detail to just get just this rom from the MRA block)

graph1_rom : entity work.gen_ram
generic map( dWidth => 8, aWidth => 14)
port map(
clk => clock_12,
we => graph_rom_ld,
addr => graph_addr_mux,
d => dn_data,
q => graph1_do
);

so that should turn an included rom into a ram block that loads from the MiSTer core

If your mra has rom1 (16k)
rom2 (16k)
etc.

then if this was loading rom2 then you need to check for dn_addr being between $4000-$7FFF

you also need to keep reset low whilst it is loading roms.

for an example see the code for Crazy Balloon (or any of the other arcade cores) but some of these also use the rom_index to load samples / backgrounds etc. (this is just checking for ioctl_index being equal to 0 - normal for the game roms)


hopefully all correct, feel free to ask questions!

Re: Turkey Shoot and Inferno

Posted: Mon Mar 21, 2022 12:04 pm
by aberu
Interesting, however alan suggested I get it loading as is before I do the MRA loading. My problem is that compiling the Joust2 core seems to result in rom banks a through d not getting synthesized into the design, because apparently no signals are connected.
synth-away.png
synth-away.png (69.98 KiB) Viewed 5564 times
When I check the connectivity report this is what I see for all 4 rom banks:

data Output Info Connected to dangling logic. Logic that only feeds a dangling port will be removed.

Here's an example of these four banks:

Code: Select all

-- rom17.ic26 + rom15.ic24 
bank_a_rom : entity work.joust2_bank_a
port map(
 clk  => clock_12,
 addr => addr_bus(14 downto 0),
 data => rom_bank_a_do
);
rom_bank_a_do only does:

Code: Select all

	-- rom_bank_a_do           when rom_bank_cs = '1' and (page = "010"                ) else
This commented out line of code. The same is true for rom_banks b-d. When I look at sdram_loader_de10_lite.vhd, I can see that it's doing a bit more work, so for me to port it I would have to rewrite portions of https://github.com/birdybro/Arcade-Jous ... 0_lite.vhd to work with our different configuration, I think. Which I'll try my best to do.

Re: Turkey Shoot and Inferno

Posted: Mon Mar 21, 2022 8:17 pm
by macro
that is because the de10-lite version is trying to access the bank data from ram loaded by the loader routine, and not actually using those 'rom' equivalent components.

You also have linked it directly to the addresses and data used for the MiSTer loader routine, which is transient - that's why you have to write the data to an actual ram bank (al be it read only to the actual running code and only writable by the MiSTer rom loading routine)

however, to force it back to use the original hex rom images, just change the low address routine to ...

--rom_do when rom_bank_cs = '1' else
rom_bank_a_do when rom_bank_cs = '1' and (page = "010" ) else
rom_bank_b_do when rom_bank_cs = '1' and (page = "110" ) else
rom_bank_c_do when rom_bank_cs = '1' and (page = "001" or page = "011") else
rom_bank_d_do when rom_bank_cs = '1' and (page = "100" or page = "101") else

and comment out accessing the single block of ram loaded by the other routine. (and put it back in later when you lose the attached roms, so different MRA's can select the different rom sets for the other games as well) - at the moment that condition would be true so the other bank accessing would never happen.
20220321_201846-screen.png
20220321_201846-screen.png (148.13 KiB) Viewed 5492 times

Re: Turkey Shoot and Inferno

Posted: Mon Mar 21, 2022 11:04 pm
by aberu
Oh darn, that was right in front of my face. I had already commented out those 4 lines but didn't think about commenting out the rom_do line. Thank you!

Re: Turkey Shoot and Inferno

Posted: Wed Mar 23, 2022 10:12 pm
by darfpga
To atrac17 your PM receipt is disabled.

Re: Turkey Shoot and Inferno

Posted: Wed Mar 23, 2022 10:28 pm
by atrac17
darfpga wrote: Wed Mar 23, 2022 10:12 pm To atrac17 your PM receipt is disabled.
I'm sorry, I thought you could respond if I DM'ed. Let me figure it out. Were you interested in it?

Edit: I am able to receive DM's now.

Re: Turkey Shoot and Inferno

Posted: Thu Mar 24, 2022 2:16 pm
by JasonA
Managed to get these cores on MiSTer. A bit more work to do (MRA supported, HiScores, DIPs, pause) and hopefully we should have them on the main repo very soon.

List of cores:

Turkey Shoot
Joust2
Mystic Marathon
Inferno

Re: Turkey Shoot and Inferno

Posted: Fri Mar 25, 2022 9:51 am
by darfpga
Hi,
Background sound and speech board for Joust2 is now available at github.com\darfpga. It is currently a standalone for DE10_lite but strait forward usable for MiSTer. Raw outputs to be mixed and controlled as desire.

Dar.

Re: Turkey Shoot and Inferno

Posted: Fri Mar 25, 2022 10:01 am
by darfpga
atrac17 wrote: Wed Mar 23, 2022 10:28 pm
darfpga wrote: Wed Mar 23, 2022 10:12 pm To atrac17 your PM receipt is disabled.
I'm sorry, I thought you could respond if I DM'ed. Let me figure it out. Were you interested in it?

Edit: I am able to receive DM's now.
Short reply is that my very old PC is far too much slow to make any compilation/debug directly for MiSTer. Dev for MAX10 is way faster than for Cyclone V.

Thank you anyway.

Dar.

Re: Turkey Shoot and Inferno

Posted: Sun Mar 27, 2022 4:47 am
by atrac17
darfpga wrote: Fri Mar 25, 2022 10:01 am
atrac17 wrote: Wed Mar 23, 2022 10:28 pm
darfpga wrote: Wed Mar 23, 2022 10:12 pm To atrac17 your PM receipt is disabled.
I'm sorry, I thought you could respond if I DM'ed. Let me figure it out. Were you interested in it?

Edit: I am able to receive DM's now.
Short reply is that my very old PC is far too much slow to make any compilation/debug directly for MiSTer. Dev for MAX10 is way faster than for Cyclone V.

Thank you anyway.

Dar.
Understood! Thanks for writing the core. Also, thanks birdybro/JasonA for porting to MiSTer.

Re: Turkey Shoot and Inferno

Posted: Tue Mar 29, 2022 4:10 am
by darfpga
Joust2 for DE10_lite now updated with background sound and speech at github.com/darfpga.

Dar.

Re: Turkey Shoot and Inferno

Posted: Fri Apr 01, 2022 9:41 am
by JasonA
Inferno is still being worked on daily for MiSTer. There is a little more work to do for joypads, and hopefully should be ready for beta sometime next week.

Then attention will be to get Turkey Shoot ready.

Re: Turkey Shoot and Inferno

Posted: Tue Apr 05, 2022 7:50 am
by JasonA
Inferno has 4-way direction for "run", and 4-way direction for "aim". As Dar also has in the code, is that run/aim are on the same direction pad, but should be split to be authentic.

Wondering if anyone objects to run/aim being on the same direction. Otherwise I will proceed with it.

Re: Turkey Shoot and Inferno

Posted: Tue Apr 05, 2022 8:20 am
by Xbytez
JasonA wrote: Tue Apr 05, 2022 7:50 am but should be split to be authentic.
Any possibility of offering via a core option the choice for twin stick use like in the Robotron: 2048 core?

Re: Turkey Shoot and Inferno

Posted: Tue Apr 05, 2022 11:46 am
by JasonA
Sure, can be done via an OSD option.

I'll add that as a future improvement one the combined run/aim is working very soon

Re: Turkey Shoot and Inferno

Posted: Wed Apr 06, 2022 2:24 pm
by JasonA
I put out an Inferno test build on Discord. The controls are very difficult in this first beta. Please help to test, and give feedback please so that I can keep improving it.

Post here or on Discord, I will try to reply either way.

Re: Turkey Shoot and Inferno

Posted: Wed Apr 06, 2022 3:59 pm
by annette
JasonA wrote: Wed Apr 06, 2022 2:24 pm I put out an Inferno test build
As not all like to use discord could you please post the test build also so others can test thanks.

Re: Turkey Shoot and Inferno

Posted: Wed Apr 06, 2022 4:03 pm
by JasonA
Arcade-Inferno_20220406.zip
(912.19 KiB) Downloaded 242 times
Here it is.