Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
81 commits
Select commit Hold shift + click to select a range
f43c4cb
Update issue templates
technobly Jan 3, 2020
7579ddf
Remove old issue template
technobly Jan 3, 2020
ddd5494
removed herobrine
technobly Jan 3, 2020
366c4a9
whitespace changes only (TAB-> SPACES, column alignment, comments)
technobly Jan 2, 2020
72b7989
Merge pull request #33 from technobly/fix/whitespace
rattboi Jan 3, 2020
7a41c5a
Update Hall-of-Fame #6
technobly Jan 12, 2020
ed847ca
Implements Better Reset Heuristic #31 and fixes symptom 1 of Polar Re…
technobly Jan 12, 2020
f85eca6
Fixes symptom 2 of Polar Rescue crashing #22
technobly Jan 12, 2020
b61717c
Whitespace and code style changes
technobly Jan 12, 2020
a6a1d36
Merge pull request #37 from technobly/fix/polar-rescue-and-reset-heur…
rattboi Jan 13, 2020
5e6b2ab
Update Hall-of-Fame #7
technobly Jan 20, 2020
cd8e730
Adds addressable LED control and demo
technobly Jan 13, 2020
ab93683
added Michael Simonds - Veccy Bird v1.5 - pristine
technobly Jan 20, 2020
9135c1f
added addressable LED control to Veccy Bird v1.5
technobly Jan 20, 2020
96a99b1
adds missing veccy-bird-v1.5-led.bin
technobly Jan 20, 2020
e55760d
Merge pull request #41 from technobly/feature/led
technobly Jan 22, 2020
9939a78
:warning: Added NOTICE of Current Development
technobly Jan 26, 2020
b725a2b
v0.21 Changelog
technobly Mar 31, 2020
e62c660
increased quick reset delay to 700ms, fixes #44
technobly Apr 8, 2020
0eebfc2
Merge pull request #45 from technobly/fix/issue-44
technobly Apr 9, 2020
18b4be2
implement better brightness control, fixes #46
technobly Apr 8, 2020
9a08a97
fix .gitignore
technobly Apr 9, 2020
63217b4
Merge pull request #47 from technobly/fix/issue-45
technobly Apr 10, 2020
1197c83
add back the unrolled version of this file, required for asm6809 comp…
technobly Apr 10, 2020
5b9ecd7
add static version info to multicart menu
technobly Apr 10, 2020
64cb386
adds HW/SW version RPC function 9 and demo of usage in LED Test v1.1
technobly Apr 11, 2020
117592c
Merge pull request #48 from technobly/feature/versions
technobly Apr 15, 2020
2e96c07
ignore files other than .bin/.vec and improve file handling
technobly Apr 11, 2020
20f859b
fix a bunch of the compiler warnings
technobly Apr 11, 2020
caec0a9
Merge pull request #49 from technobly/feature/27
technobly Apr 15, 2020
4e3c6eb
v0.22 Changelog
technobly Apr 15, 2020
04964e2
fixes #43 and adds complete v0.2 parts list to Digikey shared cart
technobly Apr 18, 2020
945d2ec
Update Hall-of-Fame #8
technobly Apr 18, 2020
d1fbda7
comment clean up
technobly Apr 18, 2020
0eab933
apply patches for libopencm3 USB_MSC implementation for Windows, than…
technobly Apr 18, 2020
9792ed1
move implemented SCSI commands up into the correct spot
technobly Apr 18, 2020
789776f
whitespace - convert tabs to 4 spaces
technobly Apr 18, 2020
216d6b3
Set theme jekyll-theme-cayman
technobly Apr 21, 2020
da75425
Merge pull request #53 from technobly/fix/issue-35
technobly Apr 21, 2020
f13a944
v0.23 Changelog
technobly Apr 24, 2020
0a0e98b
bump sw_ver to 0.23
technobly Apr 24, 2020
befaf1c
fix compiler warnings
technobly May 21, 2020
0de2faf
Set USB power to 500mA (was set to 100mA)
technobly May 22, 2020
ed2c759
implemented Developer Mode and a few extras
technobly May 22, 2020
5ebba2a
adds Develop Mode docs
technobly May 24, 2020
e30da83
changes from review comments
technobly May 24, 2020
5eb49b7
added standalone Developer Mode app (note: this is for reference only…
technobly May 24, 2020
b3d7af1
Merge pull request #59 from technobly/feature/23
technobly May 24, 2020
4cfb267
adds a release.sh script
technobly May 24, 2020
ab55b1b
Merge pull request #60 from technobly/feature/ci
technobly May 24, 2020
9673900
update README.md
technobly May 26, 2020
02de296
update main.c header (new header for all files)
technobly May 26, 2020
67d9e66
adds RAM Write debugging application and new dumpMemory() RPC ID 13
technobly May 26, 2020
2d4edec
makes sys_opt.hw_ver usage clearer
technobly May 26, 2020
aefde16
implements Animaction support for v0.3 hardware
technobly May 26, 2020
3b117f2
Merge pull request #61 from technobly/feature/animaction
technobly May 26, 2020
fd44acc
reduce number of colors in rainbow mode, so that no-buzz Vectrex owne…
technobly May 26, 2020
b1f412a
Merge pull request #62 from technobly/feature/led-change
technobly May 26, 2020
ffff341
Truncate filenames displayed to 16 characters and fix long filename bug
technobly May 26, 2020
54e06c4
Merge pull request #63 from technobly/fix/issue-58
technobly May 29, 2020
dc5476c
Implements #55 High Score (by @TylerBrymer PR #56)
TylerBrymer May 2, 2020
676d469
whitespace fixes
technobly May 24, 2020
f8b0525
fixes a few pointer/size comparisons
technobly May 30, 2020
37c1566
adds conditional highscore.c logging
technobly May 30, 2020
f181013
makes high_score_flag readable from parmRam with new RPC ID 16, and s…
technobly May 31, 2020
30a4a3f
Dev Mode (cart.bin) and Menu (multicart.bin) should not load a high s…
technobly Jun 5, 2020
ce3cadd
Merge pull request #64 from technobly/rebase-pr-56
technobly Jun 11, 2020
5ccee5d
PCB fingers fixes
technobly Jun 11, 2020
c48a102
Merge pull request #65 from technobly/fix/pcb-fingers
technobly Jun 11, 2020
b9706e5
Fixes #17, make all pads on addressable LEDS the same size
technobly Jun 12, 2020
2d4e6f9
add image for v0.3 wire mod
technobly Jun 15, 2020
1e51698
fixes high score save feature for v0.2 hardware
technobly Jun 15, 2020
5ce5810
add .map file to build output
technobly Jun 16, 2020
a711204
update hall-of-fame
technobly Jun 14, 2020
55c7629
add stm32f411 reference manual to docs
technobly Jun 14, 2020
c82644e
Update Dockerfile distro to Arch w/ newer arm-gcc (10.1)
bradonkanyid Jun 26, 2020
8f7bd6c
Merge pull request #66 from technobly/rattboi/update-docker
technobly Jun 26, 2020
4cc0756
parent 8f7bd6c418a04879542dceb8c7fa70403a60edf8
bradonkanyid Jun 26, 2020
6a5f11d
Merge pull request #67 from technobly/rattboi/embedded-multicart
technobly Jun 27, 2020
a4b30fb
fixes new gcc 10.1 compiler warnings
technobly Jun 27, 2020
a2dc47d
Move the `multicart.ld` target earlier, before entering docker
rattboi Jun 27, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 26 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
---
name: Bug report
about: Create a report to help us improve
title: ''
labels: bug
assignees: ''

---

## Bug Report

### Expected Behavior

What should it do?

### Observed Behavior

What did it actually do?

### Steps to Reproduce

How did you make it do that, and which firmware versions were used (git commit or release version)?

### References

Links to a video, or more info
20 changes: 20 additions & 0 deletions .github/ISSUE_TEMPLATE/enhancement-request.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
---
name: Enhancement request
about: Suggest an enhancement to an existing feature for this project
title: ''
labels: enhancement
assignees: ''

---

**Is your enhancement request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

**Describe the solution you'd like**
A clear and concise description of what you want to happen.

**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.

**Additional context**
Add any other context or screenshots about the feature request here.
20 changes: 20 additions & 0 deletions .github/ISSUE_TEMPLATE/feature-request.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
---
name: Feature request
about: Suggest a new feature for this project
title: ''
labels: feature
assignees: ''

---

**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

**Describe the solution you'd like**
A clear and concise description of what you want to happen.

**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.

**Additional context**
Add any other context or screenshots about the feature request here.
26 changes: 25 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,31 @@
- Add hardware version support for pin definitions
- Add 128KB bankswitching (V-INT pin)
- Developer mode, allow the cart to stay plugged into a computer and appear as a RAMDISK
- Figure out why Polar Rescue crashes when the sub launches

## v0.23

- Fixes issue where VEXTREME takes several minutes to mount as USB drive on Windows #53

## v0.22

- ignore all file extensions that are not .bin or .vec (case insensitive) #49
- increased quick reset delay to 700ms #45
- adds HW/SW version to VEXTREME menu and games #48
- see example in LED Test v1.1.bin

## v0.21

- :warning: Added NOTICE of Current Development
- Fixes Polar Rescue and implements a new Reset Heurisic #37
- Adds addressable LED control and demo #41
- added 3 functions to control the LEDs from a Vectrex program
- updateOne() - RPC 6
- updateAll() - RPC 4
- updateMulti() - RPC 7
- added RPC function 5 to step through rainbow control of LEDs in menu
- added "LED TEST" which uses updateMulti to show how to finely control
all of the LEDs with a test program. Press UP on the joystick, try it slowly as well :D
- added addressable LED control to Veccy Bird v1.5

## v0.2

Expand Down
35 changes: 0 additions & 35 deletions ISSUE_TEMPLATE.md

This file was deleted.

32 changes: 26 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,11 @@ VEXTREME Vectrex Multicart

We're carrying on and pushing forward the amazing work of [Sprite_tm](http://spritesmods.com/?art=veccart&page=1) and his Extreme Vectrex Multicart. He posted the code (GPLv3 License) and lots of screens of the PCB/initial schematic, but he never released the PCB. It's a great base for an inexpensive and open multicart, for developers and players alike!

:warning: Please read this NOTICE of Current Development :warning:
===

**This project is a work in progress, and is not ready for mass production.** Please observe the currently [posted issues](https://github.com/technobly/vextreme/issues) and there may be more lurking that are not yet identified. The hardware and software is evolving. You are free to build any version, contribute and/or follow along. Please note that support of these pre-releases will be very limited and if you embark on an epic adventure to build one or a few, you should feel comfortable with this type of embedded hardware and software development. There will be road bumps, but the journey is half the fun of the destination. When things appear to be stable and we've worked out most of the kinks, we'll change the version to v1.0. Only then is it advisable to mass produce.

3D Renders
===

Expand All @@ -13,15 +18,16 @@ Video Updates

Be sure to subscribe to my Youtube channel for updates! Here's my [Vectrex playlist](https://www.youtube.com/watch?v=zkJ-z77fJCw&list=PL7MgXfpGKg6CCaIQejZVb5CsTg3-5mHU0&index=1) if you want to stay laser focused on this project.

VEXTREME Discord Server
===
Join the [VEXTREME Discord server](https://discord.gg/VDssGVJ) to chat with us about the development

BOM and Parts ordering
===

All the parts are described in [veccart.csv](bom/veccart.csv)

Also, you can use this [Digi-Key shared cart](https://www.digikey.com/short/pv2qr0) if you're in a hurry. It has will have part references right on the packages for you!

:pencil: Note: The USB-C connector I chose is not available at Digi-Key, check Google for "Korean Hroparts Elec TYPE-C-31-M-12".

Also, you can use this [Digi-Key shared cart](https://www.digikey.com/short/zpdmtp) if you're in a hurry. It has will have part references right on the packages for you!

Ordering PCB's
===
Expand All @@ -36,8 +42,9 @@ Building and Flashing STM firmware
### This assumes you have these prerequisits installed:

- Docker
- dfu-util
- dfu-util v0.9
- Make
- Windows will also require these [Zadig instructions](https://github.com/profezzorn/ProffieOS/wiki/zadig)

### Build the stm32-build docker image
```
Expand Down Expand Up @@ -66,7 +73,9 @@ Found DFU: [0483:df11] ver=2200, devnum=22, cfg=1, intf=0, path="20-1.4.3", alt=

### Build and flash the STM32 image via dfu-util
```
code/veccart $ make clean all flash
code/veccart $ make clean all flash USE_HW=v0.3

// NOTE: Use v0.2 above if you have v0.2 HW, or you may use v0.3 if you make the proper mods to your board. See "Modifying v0.2 to v0.3"

// You should end up with something like this

Expand Down Expand Up @@ -94,6 +103,7 @@ code/multicart $ make docker-build
- Name: VEXTREME
- Format: MS-DOS (FAT)
- Scheme: Master Boot Record
- 512 byte page size

- Be patient, it's slow! Don't worry, copying binaries later will be fast!!

Expand All @@ -114,6 +124,16 @@ code/multicart $ make copy
asm6809 -B -o multicart.bin multicart.asm
```

Modifying v0.2 to v0.3
===

![v0.3 Mod 1](images/v0.3-mod1.png)

- To get the new reset feature of v0.3, as of v0.24 software you will need to jumper V-OE pin 12 of the cart fingers (or U3 pin 9) to STM32 pin 29 (PB10). This may change in the future, don't sell your soldering iron!
- The wire mod above also allows you to play Animaction on VEXTREME!
- More TBD


Adding Vectrex Game ROMs (Binaries)
===

Expand Down
1 change: 1 addition & 0 deletions _config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
theme: jekyll-theme-cayman
91 changes: 91 additions & 0 deletions code/ci/release.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
#!/bin/bash

# Usage:
# $ USE_SW=<tagged-version-to-release> ./release.sh
# Example: USE_SW=v0.24 ./release.sh

# we are going for the 3 fingered claw approach (try <task>)
yell() { echo "$0: $*" >&2; }
die() { yell "$*"; fail; exit 111; }
try() { "$@" || die "cannot $*"; }

GRN="\033[32m"
RED="\033[31m"
NOC="\033[0m"

# Execute in ci/ folder
STM32_DIR=../veccart
MENU_DIR=../multicart
RELEASE_DIR=../releases
SOURCE_RELEASE=v0.23
SOURCE_RELEASE_URL=https://github.com/technobly/VEXTREME/releases/download/v0.23/VEXTREME-v0.23.zip
: ${USE_SW:?"REQUIRED! Usage: USE_VER=v0.24 ./release.sh"}

main() {
try rm -rf $RELEASE_DIR/$USE_SW
try rm -f $RELEASE_DIR/vextreme-$USE_SW.zip
if [ ! -d "$RELEASE_DIR/$SOURCE_RELEASE" ]; then
if [ ! -e "$RELEASE_DIR/VEXTREME-v0.23.zip" ]; then
cd $RELEASE_DIR
curl -L "$SOURCE_RELEASE_URL" > "VEXTREME-v0.23.zip"
unzip VEXTREME-v0.23.zip
fi
fi

USE_HW=v0.2
try cd $STM32_DIR
try make clean all USE_HW=$USE_HW -s #&> /dev/null
try mkdir -p $RELEASE_DIR
try mkdir -p $RELEASE_DIR/$USE_SW
try mkdir -p $RELEASE_DIR/$USE_SW/stm32
try mkdir -p $RELEASE_DIR/$USE_SW/stm32/hardware-$USE_HW
try cp veccart.bin $RELEASE_DIR/$USE_SW/stm32/hardware-$USE_HW/stm32-sw.$USE_SW.hw.$USE_HW.bin
try cp veccart.elf $RELEASE_DIR/$USE_SW/stm32/hardware-$USE_HW/stm32-sw.$USE_SW.hw.$USE_HW.elf
try cp veccart.hex $RELEASE_DIR/$USE_SW/stm32/hardware-$USE_HW/stm32-sw.$USE_SW.hw.$USE_HW.hex
try cp veccart.list $RELEASE_DIR/$USE_SW/stm32/hardware-$USE_HW/stm32-sw.$USE_SW.hw.$USE_HW.list

USE_HW=v0.3
try make clean all -s USE_HW=$USE_HW #&> /dev/null
try mkdir -p $RELEASE_DIR/$USE_SW/stm32/hardware-$USE_HW
try cp veccart.bin $RELEASE_DIR/$USE_SW/stm32/hardware-$USE_HW/stm32-sw.$USE_SW.hw.$USE_HW.bin
try cp veccart.elf $RELEASE_DIR/$USE_SW/stm32/hardware-$USE_HW/stm32-sw.$USE_SW.hw.$USE_HW.elf
try cp veccart.hex $RELEASE_DIR/$USE_SW/stm32/hardware-$USE_HW/stm32-sw.$USE_SW.hw.$USE_HW.hex
try cp veccart.list $RELEASE_DIR/$USE_SW/stm32/hardware-$USE_HW/stm32-sw.$USE_SW.hw.$USE_HW.list

try cd $MENU_DIR
try make clean all #&> /dev/null
try mkdir -p $RELEASE_DIR/$USE_SW/VEXTREME
try cp multicart.bin $RELEASE_DIR/$USE_SW/VEXTREME/multicart.bin
try cp $RELEASE_DIR/$SOURCE_RELEASE/VEXTREME/vec.bin $RELEASE_DIR/$USE_SW/VEXTREME/vec.bin
try cp -R $RELEASE_DIR/$SOURCE_RELEASE/VEXTREME/roms $RELEASE_DIR/$USE_SW/VEXTREME/roms

try cd $RELEASE_DIR
try zip -vr VEXTREME-$USE_SW.zip $USE_SW -x "*.DS_Store" #&> /dev/null

pass
return 0;
}

pass() {
echo -e ${GRN}' 8888888b. d8888 .d8888b. .d8888b. '${NOC}
echo -e ${GRN}' 888 Y88b d88888 d88P Y88b d88P Y88b '${NOC}
echo -e ${GRN}' 888 888 d88P888 Y88b. Y88b. '${NOC}
echo -e ${GRN}' 888 d88P d88P 888 "Y888b. "Y888b. '${NOC}
echo -e ${GRN}' 8888888P" d88P 888 "Y88b. "Y88b. '${NOC}
echo -e ${GRN}' 888 d88P 888 "888 "888 '${NOC}
echo -e ${GRN}' 888 d8888888888 Y88b d88P Y88b d88P '${NOC}
echo -e ${GRN}' 888 d88P 888 "Y8888P" "Y8888P" '${NOC}
}

fail() {
echo -e ${RED}' 8888888888 d8888 8888888 888 888 '${NOC}
echo -e ${RED}' 888 d88888 888 888 888 '${NOC}
echo -e ${RED}' 888 d88P888 888 888 888 '${NOC}
echo -e ${RED}' 8888888 d88P 888 888 888 888 '${NOC}
echo -e ${RED}' 888 d88P 888 888 888 888 '${NOC}
echo -e ${RED}' 888 d88P 888 888 888 Y8P '${NOC}
echo -e ${RED}' 888 d8888888888 888 888 " '${NOC}
echo -e ${RED}' 888 d88P 888 8888888 88888888 888 '${NOC}
}

main
2 changes: 2 additions & 0 deletions code/dev/devmode/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
*.bin
*.lst
15 changes: 15 additions & 0 deletions code/dev/devmode/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
FROM alpine:3.9.4

RUN apk add --no-cache --virtual .build-deps build-base wget \
&& wget -O asm6809.tar.gz http://www.6809.org.uk/asm6809/dl/asm6809-2.12.tar.gz \
&& tar -xvf asm6809.tar.gz -C /tmp \
&& rm asm6809.tar.gz \
&& cd /tmp/asm6809-2.12 \
&& ./configure \
&& make \
&& make install \
&& rm -rf /tmp/asm6809-2.12 \
&& apk del .build-deps \
&& apk add --no-cache make

WORKDIR /build
24 changes: 24 additions & 0 deletions code/dev/devmode/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# This uses asm6809 from
# http://www.6809.org.uk/asm6809/dl/2.3/
AS = asm6809

default: docker

docker-build: Dockerfile
docker build . -t asm6809

all: docker

docker:
docker run --rm -v `pwd`:/build -u `id -u ${USER}`:`id -g ${USER}` asm6809 make devmode.bin

devmode.bin: devmode.asm
$(AS) -B -o $@ $^

clean:
rm -f devmode.bin

copy: led-test.bin
sudo mount /dev/sde1 /mnt
sudo cp devmode.bin /mnt
sudo umount /mnt
Loading