Jump to content
IGNORED

Flashback Portable F4 Bankswitching


cd-w

Recommended Posts

I'm having some difficulty getting basic F4 bankswitching working on the Atari Flashback Portable (FBP). I was investigating why Juno First doesn't work on the FBP and immediately hit an issue with the bankswitching. I have written the simplest possible bankswitching test (see attached), but the FBP just hangs when I run it.

 

I initially assumed that the FBP didn't support F4 bankswitching, but then I encountered this thread with some F4 bankswitch conversions: http://atariage.com/forums/topic/258970-atari-flashback-portable-compatibility-list/?p=3653305

The F4 versions (e.g. Gyruss and Mr Do's castle) work fine on the FBP.

 

Does anyone have any theories why my bankswitching code might be choking the FBP?

 

Thanks,

Chris

 

f4test.zip

Edited by cd-w
  • Like 2
Link to comment
Share on other sites

After testing a few more permutations, the problem appears to be the detection of F4 bankswitching in the FBP rather than the code itself. It seems the FBP needs a lot of evidence of F4 bankswitching before it will select this method. The attached code is identical to the previous one, but with the blank space filled with bankswitching ("sta $FFF4, etc.") instructions.

 

So far, I have found the following with the FBP:

  • TIA emulation is rather basic - early HMOVEs don't work, and sprite positioning is off by a few pixels.
  • Bankswitching detection could be better.
  • Some illegal opcodes appear to work, e.g. LAX, NOP variations

Chris

 

f4test_working.zip

 

  • Like 4
Link to comment
Share on other sites

After testing a few more permutations, the problem appears to be the detection of F4 bankswitching in the FBP rather than the code itself. It seems the FBP needs a lot of evidence of F4 bankswitching before it will select this method. The attached code is identical to the previous one, but with the blank space filled with bankswitching ("sta $FFF4, etc.") instructions.

 

So far, I have found the following with the FBP:

  • TIA emulation is rather basic - early HMOVEs don't work, and sprite positioning is off by a few pixels.
  • Bankswitching detection could be better.
  • Some illegal opcodes appear to work, e.g. LAX, NOP variations

Chris

 

attachicon.giff4test_working.zip

 

This is awesome! :) Nice work cd-w! I'm going to try getting CBS RAM working based on your experiments. One reason it may not be working is because my demo has no bank switching instrunctions in it yet at all, just empty unused banks besides the first one - I'll set them all up with bank switching instructions and CBS RAM reads/updates to see if that can trigger detection

 

... the fact that you have to have many of the instructions in a row in the unused space sounds like it was looking for just a single one of those instructions at the spots that known games have them and you happened to hit one of those spots with this technique.

Link to comment
Share on other sites

OK, I Got CBS RAM chip working! :)

 

Here's a version of Scrollout Follow the Ball that works on the portable console along with the incompatible versions.

 

Here is the source with CBS RAM working and bank switching as well:

SCROLLOUT Follow the Ball.asm

It's a template for anyone who wants to write CBS RAM games for the portable and also has the ASDK Framework for writing abstract assembly games (mario world style virtual worlds with timemapping).

 

I can revising vwBASIC to work on the portable via CBS RAM now that this is ironed out! :)

 

I already had the bankswitching working probably because I have a switchboard at the top of each bank in the design for the asm with multiple bank switching calls that triggered it. My error in the CBS RAM was actually similar to the problem I had getting supercharger RAM to work on an actual supercharger - I bet those other versions of Scrollout won't work on a real CBS RAM cart either for anyone who can actually burn one - I was identifying the first RAM block as $DO and the next two as $0, all $0 didn't work but all $FF did the trick to init the RAM...

 

  • Like 1
Link to comment
Share on other sites

Got PIXELS working on the portable too and fixed a pre-existing bug for the giant score that still worked in Stella and on older consoles.

 

The code was:

 

ldy 11

 

Should have been:

 

ldy #11

 

Inadvertantly relying on preinitialized memory again - probably a lot of simple fixes could be made like that for programs that aren't working.

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.

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

Loading...
  • Recently Browsing   0 members

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