Jump to content

Photo

Flashback Portable F4 Bankswitching


5 replies to this topic

#1 cd-w OFFLINE  

cd-w

    Stargunner

  • 1,616 posts
  • Juno First!
  • Location:Glasgow, UK

Posted Tue Dec 27, 2016 8:10 AM

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

 

Attached File  f4test.zip   9.58KB   53 downloads


Edited by cd-w, Tue Dec 27, 2016 8:10 AM.


#2 cd-w OFFLINE  

cd-w

    Stargunner

  • Topic Starter
  • 1,616 posts
  • Juno First!
  • Location:Glasgow, UK

Posted Thu Dec 29, 2016 10:27 AM

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

 

Attached File  f4test_working.zip   9.89KB   58 downloads

 



#3 SpiceWare ONLINE  

SpiceWare

    Draconian

  • 12,747 posts
  • Medieval Mayhem
  • Location:Planet Houston

Posted Fri Dec 30, 2016 1:22 PM

Has anybody tried extensions other than .BIN?  On the Harmony you can use .F4 to override the bankswitching scheme to F4 in case the detection routine failed.



#4 Mr SQL OFFLINE  

Mr SQL

    River Patroller

  • 2,097 posts

Posted Sat Jan 7, 2017 10:23 AM

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. 



#5 Mr SQL OFFLINE  

Mr SQL

    River Patroller

  • 2,097 posts

Posted Sat Jan 7, 2017 11:48 AM

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:

Attached File  SCROLLOUT Follow the Ball.asm   96.37KB   31 downloads

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

 



#6 Mr SQL OFFLINE  

Mr SQL

    River Patroller

  • 2,097 posts

Posted Sun Jan 8, 2017 12:42 PM

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.






0 user(s) are browsing this forum

0 members, 0 guests, 0 anonymous users