Megalextoria
Retro computing and gaming, sci-fi books, tv and movies and other geeky stuff.

Home » Digital Archaeology » Computer Arcana » Apple » Apple II » mode7 demo article
Show: Today's Messages :: Show Polls :: Message Navigator
E-mail to friend 
Switch to threaded view of this topic Create a new topic Submit Reply
mode7 demo article [message #369618] Tue, 26 June 2018 12:13 Go to next message
Vince Weaver is currently offline  Vince Weaver
Messages: 136
Registered: April 2013
Karma: 0
Senior Member
So if anyone wants more details, there's an article on my
Apple II Mode7 Demo in the just-released PoC||GTFO 0x18.

If you don't want to download that 80MB PDF to read it, I have a much
smaller extended version of the article availble here:
http://www.deater.net/weave/vmwprod/mode7_demo/mode7_demo.pd f

Vince
Re: mode7 demo article [message #369626 is a reply to message #369618] Tue, 26 June 2018 14:11 Go to previous messageGo to next message
Anonymous
Karma:
Originally posted by: Thomas Harte

On Tuesday, 26 June 2018 12:13:28 UTC-4, vi...@pianoman.cluster.toy wrote:
> So if anyone wants more details, there's an article on my
> Apple II Mode7 Demo in the just-released PoC||GTFO 0x18.
>
> If you don't want to download that 80MB PDF to read it, I have a much
> smaller extended version of the article availble here:
> http://www.deater.net/weave/vmwprod/mode7_demo/mode7_demo.pd f
>
> Vince

Good read! I once implemented Mode 7 on an Atari Lynx, which is a 65SC02 but otherwise so different as not to be a particularly relevant comparison (it has a parallel maths unit, and a blitter) other than that I'm curious about the tilelookup(tilex, tiley) part of your inner loop.

I think I ended up with the source image being a 1 byte per pixel bitmap, and self-modifying the high part of the address prior to a lda address, y for a 2d lookup. But that prima facie expects the bitmap to be the full 64kb address space.

So you probably came up with a smarter solution?
Re: mode7 demo article [message #369631 is a reply to message #369626] Tue, 26 June 2018 15:25 Go to previous messageGo to next message
Vince Weaver is currently offline  Vince Weaver
Messages: 136
Registered: April 2013
Karma: 0
Senior Member
On 2018-06-26, Thomas Harte <thomas.harte@gmail.com> wrote:
> I'm curious about the tilelookup(tilex, tiley) part of your inner
> loop.
>
> I think I ended up with the source image being a 1 byte per pixel
> bitmap, and self-modifying the high part of the address prior to a lda
> address, y for a 2d lookup. But that prima facie expects the bitmap to
> be the full 64kb address space.
>
> So you probably came up with a smarter solution?

The lookup is extemely low-resolution.

The tile lookup is just a 64x64 grid, which wraps (by masking off the
high bits).

Each grid point is a solid-color byte, of which only half is used for
the color (the lo-res 16 colors).

To save space, on the island map the island is an 8x8 grid and the ocean
is a separate 8x4 grid, and the lookup code picks the proper one to look into.

For the checkerboard background the grid is just a 2x2 black/white grid
generated on the fly.

I probably could make it use a much finer grained background image at the
expense of a lot more RAM. I was semi-intentionally going for a blocky
look so when 64x64 looked OK I didn't try anything more elaborate.

Vince
Re: mode7 demo article [message #369685 is a reply to message #369618] Wed, 27 June 2018 21:02 Go to previous message
Anonymous
Karma:
Originally posted by: Tom Porter

When this first game out I hacked the map... I attempted to copy/simplify it but was unsuccessful at the time... (my decimal assembler may have had something to do with it). MODE 7 is the ultimate APPLE project... its right up there with Lawless Legends! Great job Vince!
  Switch to threaded view of this topic Create a new topic Submit Reply
Previous Topic: Repairing an early Apple ][+
Next Topic: Posting from IIgs
Goto Forum:
  

-=] Back to Top [=-
[ Syndicate this forum (XML) ] [ RSS ] [ PDF ]

Current Time: Thu Apr 18 16:32:55 EDT 2024

Total time taken to generate the page: 0.02982 seconds