I spent a few months building a Game Boy and Game Boy Color emulator that runs on an FPGA. It can play physical cartridges (in addition to ROM (files), and link with other Game Boys. I wrote a pretty detailed article about the development process (linked).
I had no prior experience with FPGAs, but I learned a lot along the way (and made a lot of mistakes too). I used Chisel, a Scala based HDL that compiles down to Verilog.
All of the code and precompiled bitstreams are available on GitHub— you’ll need a Pynq-Z2 development board to run it.