Jump to content

Shifting playfield horizontally

Recommended Posts

I want to make a (narrow) playfield shifted to the left by 4 characters, so the border is wider on the right, if possible. I know about SDMCTL and poking it to get the narrow, 32 character wide playfield, but is it also possible to shift the playfield left or right? Either would work for my purposes.

Link to comment
Share on other sites

You can only shift by fine scrolling, you can't change the border start/stop positions, so this probably doesn't suit your needs.  The fine scroll only moves the window contents and the border will remain constant.


OK, you sort of could do as you request but it'd take a kernal which switched between narrow and normal mode every scanline and would consume 2/3rds of the CPU time.  And it would only work in bitmap or 20 character text modes.


You could fudge the look you want by using a stretched Player of border colour and just not put text in that area (use normal screen width)

Additionally you can set the OS margins so you don't print to the area you're simulating as border.

Link to comment
Share on other sites

Player overlay + margins means the memory mapping will be the same.

You can do solid PM graphics without using any memory, just set the GRAF registers to all $FF.


If the memory mapping still isn't suitable you can always use custom DLists to change it.

Link to comment
Share on other sites

That would be true, if I weren't planning on using all the players for other purposes. I might actually be able to just use a normal-width screen and make sure there's nothing in the columns I want the PM to occupy (they won't be opaque and/or full-height, but rather used for a status display/map that's representative of the main display area.

Link to comment
Share on other sites

A kernal might be feasible if you had other calculations that you could do in the meantime.

In theory just switching between normal/narrow at the right intervals would work but has to be in bitmap or a 20 character mode.

Project M (the Wolf/Doom demo) uses Pokey timers to do GTIA mode changes each scanline so serves as proof you can do a kernal and CPU intensive stuff concurrently.


Unsure if Pokey Timers would be suitable for your purpose - it might be the case of lots of effort to only save several cycles per scanline.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Create New...