DrWho198 Posted November 6, 2015 Share Posted November 6, 2015 (edited) I'm looking into some bankswitching shemes from the hardware level and when I got to the FE banswitching I got into somewhat of a puzzle. In this documentation "http://www.classic-games.com/atari2600/bankswitch.html" you will read that FE uses 2 hotspots "01FE" and "11FE". However, in the stella debugger you can read: FE cartridge, two 4K banks Doesn't support bankswitching with hotspots, but instead watches A13 of called addresses: Bank 0 @ $F000 - $FFFF (A13 = 1) Bank 1 @ $D000 - $DFFF (A13 = 0) This confuses me, does or does not EA use hotspots? And if A13 is used, how does the hardware/cartridge detect this since there is no a13 line on the cartridge. in the end I want my dumping hardware be able to trigger bankswitching on this cartridge. So accurate knowlage is needed. Edited November 6, 2015 by DrWho198 Quote Link to comment Share on other sites More sharing options...
Wickeycolumbus Posted November 7, 2015 Share Posted November 7, 2015 If you haven't seen this, it should be pretty helpful: atariage.com/forums/topic/194935-new-atari-2600-mappers-and-hardware-document/ I've heard that some FE carts are also out there as F8, so thats a potential issue. No way to tell without dumping as far as I know. 1 Quote Link to comment Share on other sites More sharing options...
DrWho198 Posted November 7, 2015 Author Share Posted November 7, 2015 (edited) I do not need to know what type of card it is as my program detects this by bruteforcing with a twist of logic. But to keep it reliable I need the exact response. right now I'm having trange behavior in which the cartridge sometimes does the bankswitch and sometimes it does not. I did notice that timing has an influence on the bankswitching... which puzzles me even more. I do manage to trigger bankswitches... but I have no idea what the exact trigger is. understanding it at a hardware level would really help. edit: the document at the link does indeed help... it kind of confirms a feeling that I had about the cartridge reacting upon the data lines so it can monitor what opcode was read. I'll have to try this out later tonight. Edited November 7, 2015 by DrWho198 Quote Link to comment Share on other sites More sharing options...
alex_79 Posted November 7, 2015 Share Posted November 7, 2015 Check also the original David Crane's patent: http://www.google.com/patents/EP0116455A2 1 Quote Link to comment Share on other sites More sharing options...
DrWho198 Posted November 7, 2015 Author Share Posted November 7, 2015 Thanks Moonsweeper. Right now I can do some bankswitching, But it all makes no sense comparing it to the data I read. I also have no idea if it is all a coincidence or if this is a valid way of switching banks. I only have the pal decathlon cartridge to test with. I will have a look at the patent, maybe this will shed a light on the issue. Quote Link to comment Share on other sites More sharing options...
+batari Posted November 10, 2015 Share Posted November 10, 2015 Not sure if this helps, but I understand FE uses the value the 6507 puts on the stack, so A13 should be available in D5 during a bankswitch. In a cart dumper, it would be a matter of asserting D5 at the right time. Something tells me that there is more to this but I can't remember. 1 Quote Link to comment Share on other sites More sharing options...
DrWho198 Posted November 12, 2015 Author Share Posted November 12, 2015 I'm not sure if I follow you with the A13 being available in D5... Can you discribe what you mean by this a bit more? What makes this so hard is the fact that there is no Atari involved, no memory and no registers. I'll have to pass the correct data to the cartridge just like the atari would output. And to be honest I'm new at this. What I'm guessing right now is that the cartridge checks what bytes it passes back through the data lines. There is no way for the cartridge to know what the byte is used for. So the only way is to wait for bytes which are used for the correct opcode and then monitor the data right after. And this is where I'm puzzled, because if this theory is correct then shouldn't the cartridge trigger a bankswitch when I read the bytes from the cartridge in sequence at the right possition? Or am I missing something else that needs to be done to trigger it? What I also don't know is if the cartridge can tell the difference between for instanse "$00" or "$00 $00 $00". There is no clocking signal, so I guess the cartridge could not tell the difference, or could it? Right now I'm a bit tired of lookin for a perfect solution. I will look at it again soon, but I have my hands full doing other stuff. to be continued (PS: if anyone has more information, please share, I will need it) Quote Link to comment Share on other sites More sharing options...
Eckhard Stolberg Posted November 17, 2015 Share Posted November 17, 2015 (PS: if anyone has more information, please share, I will need it) In case you haven't found this yourself already: We have recently discussed this problem in this thread http://atariage.com/forums/topic/242264-help-with-dumping-fe-carts-for-clone-project/?do=findComment&comment=3313924 1 Quote Link to comment Share on other sites More sharing options...
DrWho198 Posted November 17, 2015 Author Share Posted November 17, 2015 wonderful! I did miss that one apparently he tries to do the same thing, only I use a arduino and windows client. I might make the dumper fw more inteligent if I get everything working. I'll be reading the results of his findings tomorrow. Quote Link to comment Share on other sites More sharing options...
DrWho198 Posted November 24, 2015 Author Share Posted November 24, 2015 (edited) GOT IT !!! The information at http://atariage.com/forums/topic/242264-help-with-dumping-fe-carts-for-clone-project/?do=findComment&comment=3313924 did help to get the breaktrough, but sadly it was not 100% correct. After some very thorough checking I managed to pinpoint what exactly triggers the bankswicthing in FE cartridges. It turns out that all what is needed is the data pins to have D5(pin 15) high (or D6 if you use the reverence in this post) which would be the 5th bit and have the adres lines pointing at $01FE. If you have pin D5 low while pointing at $01FE then you select bank 0. Now maybe someone can confirm this, but I think this could be triggered by the following code: LDA #$20 STA $01FE I'm not sure about this because I'm not sure what STA does to the data lines. Edited November 24, 2015 by DrWho198 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.