Jump to content
  • Advertisement
  • entries
  • comments
  • views

Business with the Z80

Sign in to follow this  


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):

Download binaries for TI-83/TI-83 Plus [Ion/MirageOS]

Yes, yes, I have a little 'something' about 3D tunnels.
Sign in to follow this  


Recommended Comments

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...

Share this comment

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Advertisement

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!