-
Asteroids #2
02/06/2022 at 20:50 • 0 commentsSo I've started converting the ROM vectors from the Asteroid game into 68000 assembler. I've also been experimenting with the different GPU effects available in the Gameduino. I've used additive blending and some blur, reduced alpha to get a sort of glow effect depending on the brightness values in the original roms.
Each point is in the format Brightness, dX, dY* 7 points for a ship ship: dc.b 0,4,6,7,-8,0,7,-4,4,7,8,-24,7,8,24,7,-4,-4,0,-20,-6 * 2 points for thrust thrust: dc.b 12,8,-4,12,-8,-4 * 13 points per rock rocks: rock1: dc.b 0,0,-4,7,-4,-4,7,-4,4,7,2,4,7,-2,4,8,6,4,8,6,0,7,4,-4,7,0,-8,7,-4,-4,7,-4,4,0,0,0,0,0,0 rock2: dc.b 0,-4,-2,7,-4,-2,7,4,-4,7,4,2,7,4,-2,7,4,4,7,-2,4,7,2,4,7,-4,4,7,-2,-2,8,-6,2,8,-4,-6,7,4,-4 rock3: dc.b 0,4,0,7,4,2,7,-4,6,7,-4,-6,7,0,6,7,-4,0,7,-4,-6,7,0,-4,7,4,-6,7,6,0,7,6,6,7,-4,2,0,0,0 rock4: dc.b 0,-2,0,7,-6,-2,6,0,-2,7,6,-4,7,6,0,6,-2,4,7,6,0,7,0,6,7,-4,6,7,-6,-2,6,-2,2,6,-4,-4,7,6,-4 * 12 points ufo: dc.b 0,4,-2,12,-8,0,0,-6,4,13,20,0,13,-6,4,12,-8,0,13,-6,-4,13,6,-4,12,2,-4,12,4,0,12,2,4,13,6,4
I obtained the original values from https://www.computerarcheology.com/Arcade/Asteroids/VectorROM.html although it seems that some of the divisors are incorrect, but fairly easy to correct. As you can see the original shapes are now appearing on screen. 4 types of rock, the player craft and the UFO.
-
Asteroids
02/02/2022 at 17:24 • 0 commentsI've started working on an asteroids conversion. I've converted the original vectors from the game to c headers. It's quite a nice piece of work as I can use the EVE GPU to create blending effects to produce a CRT like appearance.
The first job was to take the vectors from the Test screen in the rom. It works very nicely and using the brightness from the rom to feed into the additive blending I can retain the different levels of brightness and glow from the original. The different settings for the lines change the way the glow is rendered by the GPU. I'll try to write the game in 68K assembler and limit C code to the GPU functions. I'll see how that goes....
-
Screen Modes
02/01/2022 at 17:29 • 0 commentsI've added a new command to Basic. MODE - this switches from the text entry mode to the graphics mode.
LIST 1 MODE 0 5 CLS $FFFFFF: CLR 10 SIZE 16 20 CURSOR 60,60 25 LINEC $FF0000 30 GDPRINT "HELLO WORLD - PRESS A KEY" 31 SIZE 1 32 LINEC $00FF00 33 LINE 100,200,250,400,1 34 POINT 20,20,1 35 GDSWAP 45 INPUT A$ 50 MODE 1 Ready
This code plots a point, a line and displays the text. Once you enter some text it swaps back to text mode.
-
ANSI HD Terminal & Keyboard
02/01/2022 at 13:32 • 0 commentsNow has an ANSI screen and keyboard terminal. It can switch between serial console or screen console using the physical switch on the Arty board.
Data can be uploaded in S-Rec format using the ethernet connection over TCP.
-
Further Audio tests
01/22/2022 at 14:41 • 0 commentsTesting files of PCM samples and OPL3 .dro files. Here's a few examples using speech and a strikeforce dro opl2 register file.
-
Screen and keyboard
01/18/2022 at 21:36 • 0 commentsThe ps2 keyboard and monitor are working using the ANSI Dazzler mode. I will make it switchable between the telnet console and monitor/keyboard modes using one of the Arty switches memory mapped in. Obviously, in screen/keyboard mode the ethernet port will then be available for general use.
-
PCB in progress
01/17/2022 at 09:21 • 0 commentsFirst PCB is in progress. It will all run at 3.3v, breakout the Rosco style 68k bus and also provide an 8 bit RC2014 bus for a Z80 multicomp running at 10mhz which will handle slow retro cards and hardware. It will also move the GD dazzler off the arty to give me access to the chipkit pins as well as the arduino pins - increasing the gpios available, plus breakout the I2C pins from the arty as they have built in Pull-ups on.
I am looking at different level shifting techniques once I get the 3.3v running. This will give me access to 5v TTL and CMOS hardware.
On the FPGA side - I've added block ram to the map for stack variables to use which should speed up data accesses. I've also started working on code for a l1 cache. The testbench version is working.On the software side, will now start a text console using the Gameduino and keyboard ps2 integration.
-
WIP Status Update
12/29/2021 at 11:04 • 0 commentsSo we have a good system up and running and what is left to do?
We have now in place:
- TG68 68010 running at 100mhz with a double-precision FPU.
- Console via telnet over ethernet.
- 16mb DDR3 with a L2 cache.
- Gameduino, OPL3 and SDCard via SPI interfaces.
- RTC via I2C.
- FRAM Spi memory with large "rom" memory space storing ehbasic & the motorola assembler and monitor
- A simple monitor in rom (block rom)
- PS2 interface and timers running with interrupts
- The ehBasic "shell" which provides a FAT32 disk command line, access to the Gameduino commands, plus any other memory mapped peripherals using poke & peek.
- Native dis/assembler running on the 68000
- Support for an ESP32 wifi running an AT command firmware over UART
- GCC c++/c/asm toolchain with support for the full Newlib stdio and Maths libraries, FAT32 file system, OPL3, Gameduino libraries.
- I have written a C++ SPI Class which enables easy porting of other Arduino style libraries. Examples available for Gameduino, OPL3Duo and Adafruit Fram.
Work now in progress:
Hardware
PCB design to connect the 68k bus via the PMOD connectors to external hardware.
- I will provide a 48 pin socket to connect a CMOD-A7. This will provide the glue and will also have enough space to run either a 6809 or Z80 co-processor with the onboard 512k sram. By providing a co-processor I am following the design pattern from the 68000 based Capcom System 16 which used a Z80 co-processor to manage the sound chip (YM2151). This should free the main CPU up from long running hardware requests.
- External SRAM (2mb) to provide fast ram for the 68k.
- Level shifted 5v expansion ports in the RC2014 8-bit format and the Rosco 68k expansion bus format. By using these bus layouts existing open source card designs will be usable by the Merlin FPGA system and also by the co-processor.
Some form of L1 cache for the TG68k processor. I'm currently experimenting with different designs.
Software
- Port of the Arduino WifiESP AT library to allow HTTP connections from either GCC or ehBasic. I just need to port the Serial stream class to Merlin GCC.
- Co-processor Rom to control the new PCB hardware.
To-do & not started
- Addition to the bios to create a keyboard/HDMI console and tile/sprite engine using the Gameduino system
- Basic commands to control the OPL3 chips.
- Mouse interface
- USB Host
- Some form of operating system? (Not sure I need this)
-
FRAM Rom update
12/24/2021 at 21:43 • 0 commentsThe SPI fram (2x256k) has enough space for a small loader routine, the ehbasic code and tutor assembler/monitor. The video below shows the rom in action and I've also added the Fram vhdl as a separate repository.
https://learn.adafruit.com/adafruit-spi-fram-breakout
https://github.com/mattuna15/fram/ -
It Lives!
12/12/2021 at 16:33 • 0 commentsCouple of tweaks to the vhdl code and I can now execute and update the FRAM boot code.