cd-w Posted December 27, 2016 Share Posted December 27, 2016 (edited) 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 December 27, 2016 by cd-w 2 Quote Link to comment Share on other sites More sharing options...
cd-w Posted December 29, 2016 Author Share Posted December 29, 2016 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 4 Quote Link to comment Share on other sites More sharing options...
+SpiceWare Posted December 30, 2016 Share Posted December 30, 2016 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. Quote Link to comment Share on other sites More sharing options...
Mr SQL Posted January 7, 2017 Share Posted January 7, 2017 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 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. Quote Link to comment Share on other sites More sharing options...
Mr SQL Posted January 7, 2017 Share Posted January 7, 2017 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... 1 Quote Link to comment Share on other sites More sharing options...
Mr SQL Posted January 8, 2017 Share Posted January 8, 2017 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. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
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.