Devin Posted February 23, 2008 Share Posted February 23, 2008 You definitely need to have a level based on the Atari Age logo! Well, there's a very, very, very, very small chance that less than a dozen of the original levels can be converted properly to the VCS, in which case it would make sense to fill some gaps with custom levels. You can take the risk and try and design such a level if you really want to straight away, using either the Jumpman - Under Construction tool or the Jumpman Lives! editor. The later can only do basic levels with bullets as obstacles, but is overall easier to use. Much more challenging would be creating new levels with Jumpman Zero, which requires real programming, but offers fancy 3D effects Hmmm, I think I distinctly heard a gauntlet being thrown down. I can help with some levels, but I'm quite busy with my goofy-little-homebrew. I'll take a look at those links. It might quite fun to create some levels based on landmarks - perhaps Johannisburg Castle. Quote Link to comment Share on other sites More sharing options...
Cybergoth Posted February 25, 2008 Author Share Posted February 25, 2008 Continuing with "Bombs Away" tomorrow Well, I did start with "Bombs Away", but when I was working on it I had so many ideas of optimizing ROM usage for "Robots I" that I switched back to it and just did that instead. So I spent the last three nights hand-optimizing all 12 kernels required for "Robots I" individually, as well as the data they required. A pretty boring excercise actually, but still it did the job of reducing the required ROM space from 2,5K to 1,5K. On the way I made all bombs removable already, so there's also something new to look at in the attached binary Still ahead lies the really hard part of adding the robot sprites display code to all 12 kernels. The tightest is ROBOTSIKERNEL8, so next I'm trying to breakthrough here. I have an idea that might at least do the trick of grouping the free cycles together for another little step, let's hope it'll work out... One major descission I made after all the recent experiences is to shrink this project to a healthier level in order to get it done. Seeing that I can sink almost a full month just into perfecting the display of a single level is just too alarming. So I decided to have Jumpman 2600 fit into 32K, which by my estimate means 14 levels. This will probably still keep me busy for the next two years, but it will make an actual release much more realistic. Second descission I made, is that once I have the display for the first two levels completed, I will stop converting more levels and make those two fully playable first instead. I'm having nightmares of spending a whole year converting levels, only to find out that something doesn't work out in the end robots.zip Quote Link to comment Share on other sites More sharing options...
vdub_bobby Posted February 26, 2008 Share Posted February 26, 2008 One major descission I made after all the recent experiences is to shrink this project to a healtier level in order to get it done. Seeing that I can sink almost a full month just into perfecting the display of a single level is just too alarming. So I decided to have Jumpman 2600 fit into 32K, which by my estimate means 14 levels. This will probably still keep me busy for the next two years, but it will make an actual release much more realistic. Second descission I made, is that once I have the display for the first two levels completed, I will stop converting more levels and make those two fully playable first instead. I'm having nightmares of spending a whole year converting levels, only to find out that something doesn't work out in the end Good decisions and, as a plus, it means we get a playable version sooner. Quote Link to comment Share on other sites More sharing options...
+batari Posted February 26, 2008 Share Posted February 26, 2008 If you need to go 64k, you could use the remaining X07 boards. With a simplified banking scheme with just 16 hotspots, and making sure bankswitches always occur in the first 2k of each bank, it should work just fine. Quote Link to comment Share on other sites More sharing options...
Cybergoth Posted February 27, 2008 Author Share Posted February 27, 2008 If you need to go 64k, you could use the remaining X07 boards. With a simplified banking scheme with just 16 hotspots, and making sure bankswitches always occur in the first 2k of each bank, it should work just fine. That is very cool to have this option for the worst case. It might be that even simplest levels will require whole banks, so that 64K is almost mandatory to produce enough content. And I just saw that Eckhard commited the X07 driver for Stella, so there's good news in that regard as well Quote Link to comment Share on other sites More sharing options...
+batari Posted February 27, 2008 Share Posted February 27, 2008 If you need to go 64k, you could use the remaining X07 boards. With a simplified banking scheme with just 16 hotspots, and making sure bankswitches always occur in the first 2k of each bank, it should work just fine. That is very cool to have this option for the worst case. It might be that even simplest levels will require whole banks, so that 64K is almost mandatory to produce enough content. And I just saw that Eckhard commited the X07 driver for Stella, so there's good news in that regard as well I guess nobody told him that I had already written a Stella X07 driver for testing the holiday cart... Quote Link to comment Share on other sites More sharing options...
Cybergoth Posted February 27, 2008 Author Share Posted February 27, 2008 I guess nobody told him that I had already written a Stella X07 driver for testing the holiday cart... No idea who wrote it, I just saw who commited it. Maybe it even is yours Quote Link to comment Share on other sites More sharing options...
+batari Posted February 27, 2008 Share Posted February 27, 2008 I guess nobody told him that I had already written a Stella X07 driver for testing the holiday cart... No idea who wrote it, I just saw who commited it. Maybe it even is yours I didn't release it, so either it's a duplicate effort or he hacked into my computer Quote Link to comment Share on other sites More sharing options...
supercat Posted February 28, 2008 Share Posted February 28, 2008 And I just saw that Eckhard commited the X07 driver for Stella, so there's good news in that regard as well Though as yet neither the X07 nor 0840 drivers include a feature I think should be added to future builds: when a condition arises which could cause a random bank switch, do a random bank switch. The notable cases occur with the following access sequences: 0840: 0 1xxx xPxx xxxx -- Legitimate bank switch 1 1xxx xQxx xxxx -- Could leave either bank P or Q selected X07: 0 1xxx PPPP 1101 -- Legitimate bank switch x xxxx xxxx xxxx (something other than a legitimate bank switch) 1 1xxx QQQQ 1101 -- Could leave PPPP, QQQQ, or any 'mixture' thereof selected X07: 0 1xxx PPPP 1101 -- Legitimate bank switch x xxxx xxxx xxxx (something other than a legitimate bank switch) x xxxx xxxx xxxx (something other than a legitimate bank switch) 1 1xxx QQQQ 1101 -- Could leave PPPP, QQQQ, or any 'mixture' thereof selected The remedy for the 0840 issue is to run all bank switch instructions either from RAM or from the bottom 2K of the selected bank. For X07, I would advise the same thing except that putting the instruction sequence "NOP $08xD / BRK" at address $1FF8 of a bank is safe (the BRK will generate fetches of $1FFB and $1FFC, but not $1FFD). Quote Link to comment Share on other sites More sharing options...
+batari Posted February 28, 2008 Share Posted February 28, 2008 The only problem with that idea is 0840 and X07 boards just had trouble with certain 7800s. But such a feature should be selectable from the command line for development. Also useful for development is a setting to eliminate zero page reads acting as immediate. We've already figured out that certain EPROMs don't behave this way. Quote Link to comment Share on other sites More sharing options...
supercat Posted February 28, 2008 Share Posted February 28, 2008 The only problem with that idea is 0840 and X07 boards just had trouble with certain 7800s. True, but I don't see any reason why any software should be written for those schemes that would be troubled by the random bank switches. Unless some smart-alec decides to use the 'random' switching as a random number generator, or unless someone wants to deliberately make a game incompatible with some machines, I wouldn't see much reason to disable the feature. Though on further consideration, it may be better to have the game jam and display the PC than perform a random bankswitch, especially given that in the failure scenarios a bank switch could occur in the middle of a memory fetch resulting in a byte being read that's different from what's in any bank. Quote Link to comment Share on other sites More sharing options...
+batari Posted February 28, 2008 Share Posted February 28, 2008 The only problem with that idea is 0840 and X07 boards just had trouble with certain 7800s. Though on further consideration, it may be better to have the game jam and display the PC than perform a random bankswitch, especially given that in the failure scenarios a bank switch could occur in the middle of a memory fetch resulting in a byte being read that's different from what's in any bank. That depends on the philosophy of emulator developers. If the goal is to emulate a 2600 as accurately as possible, that means what some 7800s might do is irrelevant to the goal. If the goal is to promote the 2600 homebrew scene, maybe sacrificing a little 2600 emulation accuracy is worth it. Quote Link to comment Share on other sites More sharing options...
Cybergoth Posted February 28, 2008 Author Share Posted February 28, 2008 I guess nobody told him that I had already written a Stella X07 driver for testing the holiday cart...No idea who wrote it, I just saw who commited it. Maybe it even is yours I didn't release it, so either it's a duplicate effort or he hacked into my computer Hm... now you're puzzling me. Eckhard is the #1 2600 guru on this planet to me, but even he can't write a X07 driver when you didn't at least provide him with the specs, no? Or were they published somewhere in a public area? Quote Link to comment Share on other sites More sharing options...
+batari Posted February 28, 2008 Share Posted February 28, 2008 I guess nobody told him that I had already written a Stella X07 driver for testing the holiday cart...No idea who wrote it, I just saw who commited it. Maybe it even is yours I didn't release it, so either it's a duplicate effort or he hacked into my computer Hm... now you're puzzling me. Eckhard is the #1 2600 guru on this planet to me, but even he can't write a X07 driver when you didn't at least provide him with the specs, no? Or were they published somewhere in a public area? My theory is that he got ahold of Supercat's z26 code, and reverse-engineered it and adapted it to Stella. But... it may be better this way, as my code probably isn't as good as his Quote Link to comment Share on other sites More sharing options...
Cybergoth Posted February 28, 2008 Author Share Posted February 28, 2008 But... it may be better this way, as my code probably isn't as good as his Ah, come on! If you want to have a look, it's here: http://stella.cvs.sourceforge.net/stella/stella/src/emucore/ Quote Link to comment Share on other sites More sharing options...
+batari Posted February 28, 2008 Share Posted February 28, 2008 (edited) But... it may be better this way, as my code probably isn't as good as his Ah, come on! If you want to have a look, it's here: http://stella.cvs.sourceforge.net/stella/stella/src/emucore/ Hmmm... You tell me. Eckhard's code: if((address & 0x180f) == 0x080d) bank((address & 0xf0) >> 4); else if((address & 0x1880) == 0) { if((myCurrentBank & 0xe) == 0xe) bank(((address & 0x40) >> 6) | (myCurrentBank & 0xe)); } Mine: if ((address & 0x180F) == 0x080D) bank((address & 0x00F0) >> 4); if ((myCurrentBank >= 14) && ((address & 0x1880) == 0)) bank(14+((address & 0x0040) >> 6)); Edit: Similar, but different. Edited February 28, 2008 by batari Quote Link to comment Share on other sites More sharing options...
Cybergoth Posted February 28, 2008 Author Share Posted February 28, 2008 Edit: Similar, but different. Well, his "else if" will be executed more efficiently (if the logic still works the same), but he has an additional "or" condition you don't have in the second branch. Also the order in which the conditions in the second branch are tested is different, so depending on how often they usually fail/succeed, either yours or his is better Just considering the plain C point of view, not what the code actually does. Quote Link to comment Share on other sites More sharing options...
+batari Posted February 28, 2008 Share Posted February 28, 2008 Edit: Similar, but different. Well, his "else if" will be executed more efficiently (if the logic still works the same), but he has an additional "or" condition you don't have in the second branch. Also the order in which the conditions are tested is different, so depending on how often they usually fail/succeed, either yours or his is better Just considering the plain C point of view, not what the code actually does. Oops, the code I posted isn't correct (missing a 14+.) Xcode tools put the correct one in a weird place and I posted the wrong code. Without the 14+ there's no way my code would work Quote Link to comment Share on other sites More sharing options...
Eckhard Stolberg Posted February 28, 2008 Share Posted February 28, 2008 I guess nobody told him that I had already written a Stella X07 driver for testing the holiday cart...No idea who wrote it, I just saw who commited it. Maybe it even is yours I didn't release it, so either it's a duplicate effort or he hacked into my computer Hm... now you're puzzling me. Eckhard is the #1 2600 guru on this planet to me, but even he can't write a X07 driver when you didn't at least provide him with the specs, no? Or were they published somewhere in a public area? My theory is that he got ahold of Supercat's z26 code, and reverse-engineered it and adapted it to Stella. But... it may be better this way, as my code probably isn't as good as his There already was code for Stella and z26? If you guys keep discussing emulator related things in the holiday cart forum and even improve the emulators there, I guess I should join too. So, how do I join the holiday cart programmers club, and what's the secret handshake? You and Supercat mentioned X07 bankswitching somewhere in the public discussion of the holiday cart, so I asked Supercat for details. And since I was helping Steve with 4A50 support for Stella anyway, I thought I'd add support for X07 too. Most of the work was spend in getting my old Stella programming setup to work again. Writing the actual X07 class was only a couple of minutes of mostly cut & paste. Sending you an email to ask for a copy of your code probably would have taken longer. Ciao, Eckhard Stolberg Quote Link to comment Share on other sites More sharing options...
Eckhard Stolberg Posted February 28, 2008 Share Posted February 28, 2008 Though as yet neither the X07 nor 0840 drivers include a feature I think should be added to future builds: when a condition arises which could cause a random bank switch, do a random bank switch. The notable cases occur with the following access sequences: 0840: 0 1xxx xPxx xxxx -- Legitimate bank switch 1 1xxx xQxx xxxx -- Could leave either bank P or Q selected X07: 0 1xxx PPPP 1101 -- Legitimate bank switch x xxxx xxxx xxxx (something other than a legitimate bank switch) 1 1xxx QQQQ 1101 -- Could leave PPPP, QQQQ, or any 'mixture' thereof selected X07: 0 1xxx PPPP 1101 -- Legitimate bank switch x xxxx xxxx xxxx (something other than a legitimate bank switch) x xxxx xxxx xxxx (something other than a legitimate bank switch) 1 1xxx QQQQ 1101 -- Could leave PPPP, QQQQ, or any 'mixture' thereof selected The remedy for the 0840 issue is to run all bank switch instructions either from RAM or from the bottom 2K of the selected bank. For X07, I would advise the same thing except that putting the instruction sequence "NOP $08xD / BRK" at address $1FF8 of a bank is safe (the BRK will generate fetches of $1FFB and $1FFC, but not $1FFD). Does this affect all consoles or just those 7800's that have the 'Dark Chambers' fix? Also in your blog you mentioned that there is a chance of a random bank switch before the cart is set to a known state by the first bankswitching instruction. How likely is that to happen, and how many cycles could the game run before such a random switch is almost certain to have happened? You are righ though. For programmers it would be good, if the emulator informs them when they are doing something that they shouldn't do or that might cause compatibility issues on certain consoles. It might even be a good idea to have a seperate TIA handler to emulate the TIA89 consoles (the ones that have problems with Kool Aide Man). But seeing how slow emulator development is these days, I wouldn't expect too many of these features to be included in the emulators anytime soon. Ciao, Eckhard Stolberg Quote Link to comment Share on other sites More sharing options...
Cybergoth Posted March 18, 2008 Author Share Posted March 18, 2008 And work on the project continues... The bad news first: - I ultimately decided to drop Robots I. - I'm cancelling any during-play changes of the playfield. Both of these descissions come more or less from my plans of making 2 levels playable now. I realized that the space-optimized playfield data I did for "Robots I" would kill me in regards of "bomb collision detection" and "player situation analysis". This also means that I can't convert any levels that are fully assymetrical and require 12 or more kernels top to bottom. Not sure how many/which that are right now. Less than a handfull I think. Same goes with playfield changes. With lots of overhead it may have been possible to "map" the RAM buffers I was using for live playfield changes back into the appropriate positions of the layout data, but in the end I decided that I didn't want to add this to the already enormous task-list for this conversion at all... For The good news, I'm making good progress on "Bombs Away", see the attachment bombsaway.zip Quote Link to comment Share on other sites More sharing options...
Cybergoth Posted March 19, 2008 Author Share Posted March 19, 2008 Managed to add a second single line sprite to "Bombs Away". Move it around with the 2nd joystick - this level is looking very promising now. Next I'll add the rope and then investigate wether I can do repositionings or wether the bombs require flicker or both bombsaway.zip Quote Link to comment Share on other sites More sharing options...
aceha1 Posted June 5, 2008 Share Posted June 5, 2008 Wow, if you pull this off, you are the single coolest human that I know of! Quote Link to comment Share on other sites More sharing options...
+Nathan Strum Posted June 5, 2008 Share Posted June 5, 2008 He's pretty cool anyway... Seawolf alone pretty-much cemented that. Quote Link to comment Share on other sites More sharing options...
Cybergoth Posted June 5, 2008 Author Share Posted June 5, 2008 At times I can be a real idiot as well though Regarding Jumpman, it's all stalled once again, I'm getting nothing done these days. Not sure if it's a burn out, but in general when coming home from work after 8-10 hours of programming for food, I prefer enjoying my kids and once they sleep I'm playing games instead of programming them. After a while that usually swings back to programming, but it didn't do so yet and I'm not forcing things that are supposed to be fun 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.