Skip to content

Frankz/umdkv2

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

LX9R3-BASED USB MEGADRIVE DEVKIT

You'll need an lx9/r3 board:

  https://github.com/makestuff/lx9/tree/r3

...and a umdkv2-lx9/r1 board:

  https://github.com/makestuff/umdkv2-lx9/tree/r1

Preparation:

  sudo apt-get install build-essential libreadline-dev libusb-1.0-0-dev python-yaml
  mkdir $HOME/20140311
  cd $HOME/20140311
  wget -qO- http://makestuff.eu/bil | tar zxf -
  cd makestuff/
  scripts/msget.sh makestuff/hdlmake/20140311
  cd hdlmake/apps
  ../bin/hdlmake.py -g makestuff/umdkv2
  cd makestuff/umdkv2

You can build the loader & tracer like this:

  cd loader
  make deps
  cd ../logread
  make deps

You can build the VHDL like this:

  cd ../vhdl
  ../../../../bin/hdlmake.py -t ../templates/fx2min/vhdl -b lx9r3 -p fpga

You can verify the SDRAM like this:

  # Load microcontroller & FPGA:
  ../loader/lin.x64/rel/loader -i 04b4:8613 -v 1d50:602b:0002 -p J:A7A0A3A1:fpga.xsvf

  # Load random data:
  dd if=/dev/urandom of=random.bin bs=1024 count=16384
  ../loader/lin.x64/rel/loader -v 1d50:602b:0002 -f random.bin

  # Verify it
  ../loader/lin.x64/rel/loader -v 1d50:602b:0002 -f random.bin -c

You can run a game like this:

  # Load ROM & start it running:
  ../loader/lin.x64/rel/loader -v 1d50:602b:0002 -f sonic1.bin -s

You can verify the ROM data of a running game against the original ROM file like this:

  ../loader/lin.x64/rel/loader -v 1d50:602b:0002 -f sonic1.bin -c

You can get an execution-trace like this:

  ../loader/lin.x64/rel/loader -v 1d50:602b:0002 -t trace.bin
  ../logread/lin.x64/rel/logread sonic1.bin trace.bin | less

You can build the "dis68" utility to make sense of the execution trace

  scripts/build-gdb.sh
  /usr/local/bin/dis68 sonic1.bin 0x206 10

You can also do everything at a lower level using flcli from the FPGALink project:

  dd if=/dev/urandom of=random.bin bs=1024 count=16384
  flcli -v 1d50:602b:0002 -p J:A7A0A3A1:fpga.xsvf
  flcli -v 1d50:602b:0002 -a 'w0 0000000080800000;w0 "random.bin"' -b
  flcli -v 1d50:602b:0002 -a 'w0 0000000040800000;r0 1000000 "out.bin"' -b
  diff out.bin random.bin

The ROM load/save and reset-control functionality may be used from flcli too:

  # Load Sonic image and verify
  flcli -v 1d50:602b:0002 -a 'w0 0000000080040000;w0 "sonic1.bin"' -b
  flcli -v 1d50:602b:0002 -a 'w0 0000000040040000;r0 80000 "out.bin"' -b
  diff out.bin sonic1.bin

  # Release the MD from reset
  flcli -v 1d50:602b:0002 -a 'w1 00'

  # Put the MD back in reset
  flcli -v 1d50:602b:0002 -a 'w1 01'

Note that the initial memory-controller command specifies a data-length in 16-bit words, not bytes.

You can build and test the GDB bridge as follows. Note that this assumes you've built the VHDL and
installed, and that you've installed NASM with sudo apt-get install nasm, and that your computer is
capable of building x86 code (Starscream uses x86 assembler, so you can only run it on x86
machines):

make -C m68k/example
cd gdb-bridge
../scripts/build-star.sh
make MACHINE=x86

About

APP:USB MegaDrive DevKit v2

Resources

License

LGPL-3.0, GPL-3.0 licenses found

Licenses found

LGPL-3.0
COPYING.LESSER
GPL-3.0
COPYING

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Shell 30.8%
  • C 29.5%
  • VHDL 20.5%
  • Assembly 9.5%
  • C++ 7.8%
  • Makefile 1.9%