+Dave C Posted November 28, 2022 Share Posted November 28, 2022 So - was wondering about possible techniques for a game to detect *which* hardware it might be running on. Example: checking for random vs non random values on certain read addresses, etc. I’m not thinking about this in terms of trying to detect if you are running under emulation, thinking about this in terms of games that break the fourth wall by incorporating aspects of the player’s system external to the game itself (if you have ever played Metal Gear Solid games there’s situations where the contents of your save files gets discussed, intentional glitching, asking you to switch controller ports mid boss battle) Quote Link to comment Share on other sites More sharing options...
Thomas Jentzsch Posted November 28, 2022 Share Posted November 28, 2022 You can detect some TIA variants by checking collisions. If the positioning is slightly different, the collision will not trigger (or vice versa). Quote Link to comment Share on other sites More sharing options...
+Dave C Posted November 28, 2022 Author Share Posted November 28, 2022 51 minutes ago, Thomas Jentzsch said: You can detect some TIA variants by checking collisions. Aha, very cool! I was hoping there would be some techniques like that. Quote Link to comment Share on other sites More sharing options...
+SpiceWare Posted November 28, 2022 Share Posted November 28, 2022 You can analyze ZP RAM to determine 2600 or 7800. We use that for things like pausing gameplay via 7800's PAUSE momentary switch and 2600's TV Type toggle, which are wired to the same input line but must be handled differently. 1 Quote Link to comment Share on other sites More sharing options...
+Andrew Davie Posted November 29, 2022 Share Posted November 29, 2022 It's possible (with ARM) to auto-detect TV system (PAL/NTSC/SECAM). This could come under that category of breaking the 4th wall by using that knowledge, somehow. 1 Quote Link to comment Share on other sites More sharing options...
+Dave C Posted November 30, 2022 Author Share Posted November 30, 2022 On 11/29/2022 at 12:51 AM, Andrew Davie said: It's possible (with ARM) to auto-detect TV system (PAL/NTSC/SECAM). This could come under that category of breaking the 4th wall by using that knowledge, somehow. That's interesting. I was thinking about things like what if the player has to somehow "use" the system internals to say, battle to intentionally fix a glitchy scan rate. In which case knowing the TV system might be useful. Or at least make different capabilities available depending on what machine you are on. The other fourth wall idea in my head revolves around whether or not it's feasible to physically pull the cartridge out of the machine and put it back in reliably and without incident. Then you could have a situation where you ask the player to pull the cartridge - continue in a 128-byte RAM-only kernel - and then after completing the RAM-only section put the cartridge back in to continue. (Update: I can see from forum search this sort of thing has been discussed before) Quote Link to comment Share on other sites More sharing options...
alex_79 Posted November 30, 2022 Share Posted November 30, 2022 (edited) 19 minutes ago, Dave C said: Or make different capabilities available depending on what machine you are on. All 2600 consoles and compatibles/clones have the same capabilities. But you could detect extra hardware attached to it (savekey, AtariVox, Pluscart internet connection, etc) 19 minutes ago, Dave C said: The other fourth wall idea in my head revolves around whether or not it's feasible to physically pull the cartridge out of the machine and put it back in reliably and without incident. It's possible (it's used sometimes to dump cartridges using the 2600 console itself), but it's not 100% reliable (pulling out the old cart doesn't cause problems usually, but the program crashes sometimes when you insert the new one), and likely not 100% safe too. Not something you want to use in a game. Edited November 30, 2022 by alex_79 Quote Link to comment Share on other sites More sharing options...
+Dave C Posted November 30, 2022 Author Share Posted November 30, 2022 9 hours ago, alex_79 said: It's possible (it's used sometimes to dump cartridges using the 2600 console itself), but it's not 100% reliable (pulling out the old cart doesn't cause problems usually, but the program crashes sometimes when you insert the new one), and likely not 100% safe too. Not something you want to use in a game. Makes sense. Asking someone to damage/crash their system would not be cool - there would have to be a way to physically protect the console. The presence of save files and internet could do a lot. Access to a clock would let you change the game on certain holidays, etc. Quote Link to comment Share on other sites More sharing options...
+SpiceWare Posted November 30, 2022 Share Posted November 30, 2022 10 hours ago, Dave C said: That's interesting. If you'd like more info Part 6 of the CDFJ tutorial goes into detail on the 2600/7800 detection as well as the NTSC/PAL/SECAM detection. It contains lots of reference links. Quote Link to comment Share on other sites More sharing options...
ZackAttack Posted December 1, 2022 Share Posted December 1, 2022 9 hours ago, Dave C said: Access to a clock would let you change the game on certain holidays, etc. Weather and daylight could be interesting too. Quote Link to comment Share on other sites More sharing options...
+Dave C Posted December 1, 2022 Author Share Posted December 1, 2022 11 hours ago, SpiceWare said: If you'd like more info Part 6 of the CDFJ tutorial goes into detail on the 2600/7800 detection as well as the NTSC/PAL/SECAM detection. It contains lots of reference links. Thanks I'm interested to start on that tutorial - hoping to carve out some time over the holidays to work on projects. 1 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.