20140321_100_7888.JPG

Bags of components for the Ocelot ordered from bitsbox.co.uk.

20140321_100_7898.JPG

Components for the TBA820M amplifier board.

20140321_101_4960.JPG

Completed amplifier board (standard usage from TBA820M datasheet).

20140322_101_4959s.JPG

Completed amplifier board (standard usage from TBA820M datasheet).

20140323_100_7848s.jpg

dsPIC33FJ128GP802 sample in tube.

20140325_102B7942.JPG

Oscilloscope in my bedroom.

20140325_102_7912s.jpg

Ocelot prototype front panel laser cut from MDF at DoES Liverpool - It was originally going to be a panel mounted into a case.

20140325_102_7920.JPG

Oscilloscope turned on for the first time for testing.

20140328_100_7945s.jpg

Original attempt at Ocelot veroboard layout, showing the power bus, PICkit header and Joystick panel bus.

20140329_100B7990.JPG

Initial layout of Ocelot soldered into veroboard; notice the DAC resistors on the right for use with the internal dsPIC33 DAC.

20140407_100_8019.JPG

Testing the Joystick interface by plugging in a Zipstik and looking for continuity through the empty DIP socket.

20140407_20171126_encoded.mkv

Testing the Joystick interface by plugging in a Zipstik and looking for continuity through the empty DIP socket.

20140409_100B8060s.JPG

PICkit in original packaging.

20140409_100_8025.JPG

Programming and debugging the dsPIC33 code through MPLAB on my laptop.

20140409_100_8040.JPG

Programming and debugging the dsPIC33 code through MPLAB on my laptop; at this point the regulator was still installed backwards!

20140410_100_8106s.JPG

Ocelot boards fully assembled, mounted into prototype plastic front panel and attached to front panel and amplifier board with ribbons. Notice the TI DAC isn't used yet.

20140410_100_8109.JPG

Ocelot boards fully assembled, mounted into prototype plastic front panel and attached to front panel and amplifier board with ribbons.

20140410_20171126_encoded.mkv

In this riveting video, the Ocelot is instructed to play ascending tones through the audio subsystem while blinking the Status LED at the same rate.

20140412_100_8166.JPG

Ocelot boards fully assembled, mounted into prototype plastic front panel and attached to front panel and amplifier board with ribbons.

20140412_100_8168.JPG

Ocelot boards fully assembled, mounted into prototype plastic front panel and attached to front panel and amplifier board with ribbons.

20140412_gravitybeam_ingame_20171126_encoded.mkv

Ocelot Arcade System Sings: Gravity Beam Ingame Theme!

20140412_gravitybeam_title_20171126_encoded.mkv

Ocelot Arcade System Sings: Gravity Beam Title Theme!

20140422_100_8192.JPG

Ocelot boards fully assembled, top view.

20140430_odetojoy_20171126_encoded.mkv

The Ocelot is alive! Here it is playing a converted MIDI of Ode to Joy while displaying a 3D cube.

20140501_100B8211.JPG

A very clear and stable image showing dots in an ellipse.

20140501_100_8203.JPG

First test program using the TI DAC! A very clear and stable image showing dots in an ellipse.

20140501_100_8222s.JPG

Design of modification to right side of Ocelot board to introduce TI DAC in place of protection resistors.

20140508_102_8226.JPG

Completed Ocelot boards with TI DAC. Shown on squared paper for size, also heavily suggests a rectangular book-sized case.

20140514_102_8231s.JPG

Ocelot case laser cut and engraved at DoES Liverpool.

20140514_102_8242.JPG

Ocelot case laser cut and engraved at DoES Liverpool.

20140514_102_8246.JPG

Use adhesive paper prior to burning to prevent scorchmarks on wood.

20140514_102_8253.JPG

Ocelot instrumentation installed into front panel. Notice my super long potentiometer.

20140514_102_8256s.JPG

Ocelot case interior before case assembly.

20140514_103_5221.JPG

Testing Ocelot with Mega Drive pad.

20140520_104B8300.JPG

Fully glued Ocelot wooden case with new potentiometer.

20140520_104B8371.JPG

Fully glued Ocelot wooden case with new potentiometer.

20140520_104B8382.JPG

Fully glued Ocelot wooden case with new potentiometer.

20140520_104B8402.JPG

Fully glued Ocelot wooden case with new potentiometer.

20140520_104B8440.JPG

Fully glued Ocelot wooden case with new potentiometer.

20140525_104B8890s.JPG

3D objects testing!

20140525_104_8840.JPG

Programming Ocelot using my laptop.

20140526_104B8970.JPG

Ocelot sanding.

20140526_104B8980.JPG

Ocelot sanding.

20140526_104B9021.JPG

Ocelot sanding.

20140526_104B9073.JPG

Ocelot sanding.

20140526_104B9121.JPG

Ocelot sanding.

20140526_104B9131.JPG

Ocelot sanding.

20140526_104_8900.JPG

Woodworking stuff used to finish the Ocelot case. Remove the innards first!

20140526_104_9174.JPG

Sanded Ocelot with varnish drying.

20140526_104_9229.JPG

Ocelot case completely sanded and finished.

20140601_20171126_encoded.mkv

Ocelot displaying multiple opaque triangles simultaneously! See the next video for how this effect is applied into 3D.

20140609_20171126_encoded.mkv

This is a test of the convex hull system I prototyped for removing lines from the screen when they were overlaid by new lines. The objective was to be able to draw opaque objects onto the screen, but it was pretty glitchy and slow, so I got rid of it in the end. It would have barely been visible on the tiny screen in the end anyway.

20141207_101_5079s.jpg

Complete Ocelot design.

20151128_e7783d0b2fc2e329a81d04de2d9a5ba3.jpg

Margay image!

20151220_104_8258.JPG

Self-adhesive velcro strips used within the case to keep the boards and battery housing in place.

20160101_100_6875.JPG

View of interior of Ocelot showing board and battery holder mounted on interior wall.

20160321_20171126_encoded.mkv

First render of the Lynxwing model on the Ocelot itself. This means I have the 3D engine working (to some extent at least), and the model exporter and model interpreter all working.

20160321_Animation2.gif

Multiple 3D opaque Lynxwing spaceship objects running in Windows simulator.

20160321_lynxwing_ocelot_hi.gif

3D rendering test on Ocelot.

20160327_lynxy2.jpg

Sketch of Star Lynx himself!

20160327_lynxyfaces.png

Star Lynx face traced in Blender to create the animated face used in-game.

20160328_unimpressed_lynx_dude.gif

Animated Star Lynx face displayed using tweening within the Windows simulator.

20160330_lynxes one open.png

Variations of Star Lynx's face to be used as animation keyframes.

20160330_lynxes one open2.png

Variations of Star Lynx's face to be used as animation keyframes.

20160331_lynxemotions.gif

Star Lynx face animation test.

20160402_lynxneutral1.gif

Star Lynx face animation test.

20160402_lynxsleeps.gif

Star Lynx face animation test.

20160402_lynxsleeps2.gif

Star Lynx face animation test.

20160411_cutscene with text.gif

Test of cutscene system showing scripting, animated face and text.

20160411_shady and starlynx.gif

Very silly test of cutscene system showing ability to display multiple, scaled animated objects.

20160412_commander_test.jpg

Commander face.

20160412_commander_vectors1.png

Commander face traced in Blender for use in game.

20160412_commanderface_and_lynxface.gif

More cutscene testing between Star Lynx and the Commander. Notice this is the original script already at this point!

20160412_indeed i do know.gif

Tweening at different speeds with the Commander's smug face sequence.

20160412_indeed i do know2.gif

Tweening at different speeds with the Commander's smug face sequence.

20160416_102_8642.JPG

Ocelot in the spare bedroom for recording the cutscene sequence.

20160416_102_8643.JPG

Ocelot in the spare bedroom for recording the cutscene sequence.

20160416_20171126_encoded.mkv

The cutscene between the Commander and Starlynx as shown on the oscilloscope display. Notice he says 'lynxy' stuff instead of 'furry' stuff. Which is worse is a matter of debate.

20160511_shipfly1.gif

First tests of Starlynx Lynxwing flying within the Windows simulator. Aiming reticule is working too. Ship is clamped to a rectangular region.

20160512_shipfly2.gif

First tests of Starlynx Lynxwing flying within the Windows simulator.

20160512_shipfly3.gif

First tests of Starlynx Lynxwing flying within the Windows simulator.

20160711_panning around ship.gif

3D view of Lynxwing.

20160719shipfly.gif

Lynxwing flying through a starfield with 3D building objects in the background.

20160723_output.mkv

The Lynxwing ship with flight controls and a starfield and some randomly-placed background objects as shown on the real oscilloscope screen. The flightschedule system hadn't been written yet.

20170518_air1.png

Design of the 'butterfly' air enemy, AIR1.

20170518_air2_bug.png

Wireframe and polygon views of the 'moth' air enemy, AIR2.

20170518_air2_bug2.png

Wireframe and polygon views of the 'moth' air enemy, AIR2.

20170518_ground1.png

Design of the 'mantis' ground enemy, GROUND1.

20170518_ground2.png

Design of the 'spider' ground enemy, GROUND2.

20170926.gif

Ship flying through a scripted level with various 3D backgruond furniture heading towards the camera. Enemy formations are in! Look at 'em all go! Enemy behaviour seems to be in as well, the enemies are correctly banking and tilting up.

20171003flying.gif

Enemies in the air and on the ground, appearing in formations and heading towards the player and tilting according to their behaviour.

20171004_fly1.gif

Bonus objects are in - the points ring model is in the game, but there's no collision detection yet.

20171004_fly2.gif

Enemy formations again, the second bonus ring (powerup) is here.

20171006_collisions.gif

The enemies can now fire at the player (complicated 3D math!) and the player can be hit by enemy projectiles, 'causing the ship to be forced to one side, the model to change, and the ship to flash.

20171006_collisions2.gif

There is a third ship model with even more prongs snapped off for critical damage.

20171016_bossimpact.gif

The Menace Mantis' head has basic wobbling behaviour and can be shot at! The ending cutscene part of the flightschedule system is implemented - notice the 'Return to base' dialogue is as it is in the final game.

20171016_bossimpactfight.gif

The Mentace Mantis now has behaviour to fire at the player!

20171017_menacemantis_idle.gif

I have modelled and positioned the Menace Mantis' hands, so it can now enter this super awesome looking menacing animation while all of its components are idle.

20171019_mantisattackcompilcation.gif

I have programmed in a series of attacks for the Menace Mantis to execute: lower swipes, upper swipes, vertical swipes. Both hands can execute any combination of these independently.

20171019_mantisbossfight.gif

Here the player is fighting the Menace Mantis! The hands have collision detection and the hands can now fire rows of projectiles at the player. These are the same as the enemy projectiles so they collide with the player as expected. When the hands run out of hit points, they twitch and fly into the distance Master Hand style. The 'protect the head' behaviour of the hands when the head is attacked directly is also here. All the stages of the Menace Mantis boss fight are present, in fact! The game can be won! The damaged Lynxwing being shown in the ending cutscene was a happy coincidence, it wasn't intentional, but it looks great!

20171019_mantisverticalattack.gif

This is Menace Mantis' vertical attack.

20171022_IMG_20171022_194132_DRO.jpg

Taking pictures of the boss sequence in the spare bedroom.

20171022_IMG_20171022_194144_DRO.jpg

Showing the ingame sequence on the oscilloscope screen.

20171022_IMG_20171022_194153_DRO.jpg

Catsden City level inroduction sequence.

20171022_IMG_20171022_194709_DRO.jpg

Menace Mantis' introduction shown on the oscilloscope screen.

20171022_IMG_20171022_194725_DRO.jpg

Menace Mantis boss fight shown on the oscilloscope screen.

20171022_matt.mkv

A full run-through of the Star Lynx level sequence filmed on my Canon camera. This is why I got the camcorder out to do the advert!

20171108_out.mkv

Ocelot playing the Final Fantasy 1 battle music! This is a test of the MIDI conversion code.