simozzer / Oric6502

Trying to re-learn 6502 for the Oric computer
2 stars 1 forks source link

This is very much a work in progress!!

The basic idea is to create a split screen scrolling maze game using 6502 Assembly code on for the Oric 1 and Oric Atmos.

I first coded the routines to do this back in 1983 (before any other games were using split-screen scrolling). Unfortunately the tapes I recorded from my Oric have long since disappeared (As has my memory of 6502 Assembly).

I seem to remember I'd got as far as having the split screen scrolling working, with some basic keyboard processing, randomly moving 'monsters', and some interupt driven music.

I'm just starting to re-learn the stuff I knew back then. I'll continue to update this repo with my work (stuff that isn't yet working will be uploaded, just for me to keep track of where I'm at, but won't be called from 'main').

The main idea is to keep the 'maze' stored as a block/array of bytes, with each BIT used to denote if there is a maze wall or not. At runtime the routine for drawing the maze will process the maze data and plot the current state of the maze on the screen for the current top-left position.

I'm not intending on pixel level scrolling. Ideally the scrolling will be performed on a character level (as a future enhancement maybe the maze will be 'magnified'. So 1 bit set in the maze data will be a 2 * 2 character in the maze, and this will be scrolled 1 char at a time?)

I'll repeat - this is very much a work in progress.

TODO (in approximate order):

Would be nice to

The aim of this bit of coding was, origionally, to provide a scrolling area which is much bigger than the Oric screen The aim

Bits that might be re-used

Offscreen layout

The split screen scroller

The tracker and sound effects

Rom independent sound

Keyboard mapper

KNOWN ISSUES ~~Keyboard not as responsive as I would like (add keys as parameters to player data and only lookup the keys required, rather than doing a full scan)~~

IDEAS/ TODOS Score (length or time survived) Level (faster and more obstacles) Leave no trail for next x moves Add obstacles Remove obstacles Explode other player Jump x places in a direction Draw lines into area (vert or horizontal or both) Collectables (collect in order?)