• entries
222
606
• views
591122

1044 views

I have been pretty busy with Brass and Latenite over the last few days - Latenite has had a few little adjustments/improvements/fixes, but also has a few new holes in it which means that it is unsuitable for release. I'm adding the ability to hook help files to projects rather than each project being loaded with every help file - this has the extra bonus that Brass will be able to compile help files straight from the source, which will then be reloaded on each build by Latenite.

I did something unheard of over the weekend as well - I read the SDK manual for the TI-83 Plus. Mainly because I was trying to work out how some of the function calls worked, but also the stuff they talk about with regards to applications (as opposed to programs - applications fill multiple 16KB pages of ROM on the calculator, programs are variable sizes and are copied to RAM location \$9D93 for execution) was pretty interesting - and it sounds pretty nightmarish! I'll download some of the application development tools, see if I can puzzle them out and then try and recreate their behaviour in Brass. It's yet another output format - Brass can, with the .binarymode directive, switch between a number of binary output formats, including TI calculator formats (TI-73, TI-82, TI-83, TI-83+, TI-85, TI-86), raw binary and a number of hex text files (Intel, Intel word address, MOS technology and Motorola).

I'd never really understood how the LCD display driver worked on the TI-83 Plus, and the SDK documentation was pretty useful - even though I still can't quite work out why the X axis goes from top-to-bottom and the Y axis goes from left-to-right. It turns out direct access to the LCD can produce some very fast results... (and the world's worst greyscale):

Yes, yes, I have a little 'something' about 3D tunnels.

start developing stuff for my ti-92 :D

the tunnel looks nice :)

EDIT: btw is the pattern generated with a few bits XORed?

Indeed, you are correct; it's a bit like this:
wall_colour = (angle_table[x,y] + angle_offset) XOR (depth_table[x,y] + depth_offset)

...where the angle_offset and the depth_offset are the position the viewer is inside the tunnel (the tables are all precomputed, x,y is the current pixel being drawn). I then check bit 5 of the result - if it is not set, I leave the space blank. If it is set, I then check bit 3 - if it is set, I draw a black pixel, if it's not set I draw a grey pixel.

The grey pixel isn't really a grey pixel as such, I just AND it with a bitmask (%10101010) before writing it if it's grey. The bitmask is flipped each scanline (%01010101) and then flipped again at the end of each frame to produce a bad, flickery greyscale effect. Every 8 pixels is a single byte on the display, so I build up 8 pixels at a time before writing to the LCD data port.

I'd love to develop for the 92 (if I had one!) as it would give me a chance to learn how to use the MC68000 CPU...

## Create an account

Register a new account