tag:blogger.com,1999:blog-3491384894751014452024-02-20T22:43:52.927+02:00Cult of 999Rise and Fall of Paradroid ReduxUnknownnoreply@blogger.comBlogger42125tag:blogger.com,1999:blog-349138489475101445.post-84560526422042225812010-07-25T13:21:00.007+03:002010-07-25T13:54:11.805+03:00Three Laws of RoboticsA robot may not injure a human being or, through inaction, allow a human being to come to harm.A robot must obey any orders given to it by human beings, except where such orders would conflict with the First Law.A robot must protect its own existence as long as such protection does not conflict with the First or Second Law.It's clear that droids in Paradroid violate the first two laws, but that Unknownnoreply@blogger.com3tag:blogger.com,1999:blog-349138489475101445.post-54154587945649790462010-07-18T11:46:00.006+03:002010-07-23T17:56:21.689+03:00Not dead yet, part 2It may have taken two years, but here is the newest and greatest version!Both original and Metal Edition graphics are now in the same executable, droids have slightly modified AI, high score saving should work with most common expansions (you may have to disable your disk speeder cartridge though) and there is a new frontend. Can you name all the games from where I borrowed something?Some minor Unknownnoreply@blogger.com4tag:blogger.com,1999:blog-349138489475101445.post-82124799328162730562010-01-01T18:12:00.004+02:002010-01-01T22:04:28.198+02:00Crash Boom Bang!Ever tried disrupting the last droid on ship to smithereens and entering lift when the explosion was still going on? Not? Good. That would have crashed the game right there. Very annoying, especially if you had just quadrupled your all time high score...What are the changes of someone completing a ship and entering lift before deck is shut down? I don't know, but I managed to do so! Then I Unknownnoreply@blogger.com6tag:blogger.com,1999:blog-349138489475101445.post-42007503901835439732009-12-30T20:14:00.002+02:002009-12-30T20:17:10.484+02:00NTSC BluesWhy didn't anyone remind me that it would be nice if the new front-end worked on NTSC as well...Answers on a postcard, please.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-349138489475101445.post-87902295102454216462008-07-06T19:17:00.008+03:002008-07-07T04:09:41.230+03:00Time is of the EssenceAfter reading about Mike Dailly's raster split trouble I decided to write a bit about how the top split is done in Paradroid Redux.There are three things to do when playing area begins:change background colorstart character displaystart sprite displayThe first one is just $d021 change, other two require a bit of trickery.To mask vertically scrolling characters one would usually use illegal Unknownnoreply@blogger.com8tag:blogger.com,1999:blog-349138489475101445.post-26940721214420388622008-06-23T23:43:00.003+03:002008-06-24T13:06:44.712+03:00Have a nice summer solstice(ish)To honor the sun I give you a new release - or two releases actually.My plan was to build an unified version with both graphic sets held in memory all the time, but that didn't happen due lack of memory. Too bad, having different graphics on different decks would have given some more variety to the game.I did manage to fit all necessary data into memory, but as I had to EOR fonts together there Unknownnoreply@blogger.com1tag:blogger.com,1999:blog-349138489475101445.post-2234272712453556202008-04-20T22:51:00.003+03:002008-04-29T10:08:33.265+03:00Not quite dead yetHere is little something for you who fear that the project is dead. Not much have changed though:Subgame should now take 10 seconds regardless whether you're playing on C64 or C128. That's still slightly longer than original, but way better than 12 seconds.Game should finally be Drean 64 compatible. I thought I put the code for this into the game 18 months ago, but apparently I didn't. Well, Unknownnoreply@blogger.com5tag:blogger.com,1999:blog-349138489475101445.post-87529590869443232562007-12-25T20:21:00.000+02:002008-01-02T19:51:51.525+02:00Have a nice winter solsticeFor those too busy to read any further, click here.Important: archive updated January 2nd, you need to delete old high score file as it's not compatible any more.Due to some rather unfortunate events in the family I haven't had as much time for PR as I would have liked to, so there are no major changes. Minor changes include:fixed all but one of known bugs.2500 bonus points if you clear a ship Unknownnoreply@blogger.com18tag:blogger.com,1999:blog-349138489475101445.post-76326999549615044722007-10-07T00:17:00.000+03:002007-10-07T00:55:21.706+03:00I'm sane, thank you :PContrary to some other claims I'm not crazy, or at least I imagine so.That's not the only error in Paradroid talk page - so here we have (drumroll, please)The Definite C64 Paradroid Version GuideParadroid (original), 1985Paradroid Competition Edition, 1986This one is identical to the original, except that it has some vertical blank waits removed. That allows the game run faster most of the Unknownnoreply@blogger.com6tag:blogger.com,1999:blog-349138489475101445.post-60786827886735207922007-09-24T19:24:00.000+03:002007-09-24T19:52:32.646+03:00TweakingToo little time for anything major (yet!) but scoring and subgame have seen some little changes.Bonus score if you do well in subgame. 20% bonus for each remaining pulser if you win 11-1, 40% if you win 12-02000 point bonus if you're wimp and use only transfer to overtake the ship. Not enough to compensate for score lost by not shooting droids, as I don't want to encourage that kind of cowardism Unknownnoreply@blogger.com2tag:blogger.com,1999:blog-349138489475101445.post-74869495268675561792007-09-05T13:44:00.000+03:002007-09-05T17:01:37.135+03:00Wasting timeHow can one waste gazillions of cycles to mirror one sprite? Quite easily, just forget speed and concentrate on compact code.MirrorSprite ldy #0 sty src sty .5+1 ; src = A<<6 | $4000 sec ror ror src lsr ror src sta src+1 ; ptr = X<<6 | $4000 txa sec ror ror .5+1 lsr ror .5+1 sta .5+2 ; get sprite Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-349138489475101445.post-39560482666622288882007-09-04T20:34:00.000+03:002007-09-04T21:21:25.587+03:00Byte Liberation FrontI keep surprising myself with all the memory I can squeeze out when I start trying. When reordering the multicolor charset from the Metal Edition Paradroid I finally took a good peek at the alpha charset. Eliminating duplicate chars and blanks freed another 31*8 bytes and couple more in graphics font. There are several 8-byte data areas I can scatter anywhere in the memory, but to keep it neater Unknownnoreply@blogger.com1tag:blogger.com,1999:blog-349138489475101445.post-51522381372759590902007-08-26T13:53:00.000+03:002007-08-26T14:09:27.076+03:00Lies, damned lies, and statisticsI needed something to use when deciding which tables benefit most from move to zero page, so I counted words and their occurences in all source files. In addition to giving me the info I wanted, it revealed something else.Paradroid Redux Top 30 ML Instructions 1549 lda 202 adc 119 bmi 1362 sta 175 lsr 108 iny 679 jsrUnknownnoreply@blogger.com0tag:blogger.com,1999:blog-349138489475101445.post-26131117857307083612007-08-25T20:59:00.000+03:002007-08-25T22:58:29.250+03:00Zero page roundupI finally took the time to change all zero page variable declarations from var = $02 to var ds.b 1 and removed all variables which aren't used any more. I suspected I would end up with 30 to 40 free zero page locations, but it turned out to be about 70 bytes! I swiftly used half of it for the two most used object variable tables (16 bytes each), which makes accessing them bothUnknownnoreply@blogger.com3tag:blogger.com,1999:blog-349138489475101445.post-4855177088331259392007-08-24T12:36:00.000+03:002007-08-24T12:46:24.749+03:00Squish 'emTwo bugs found and fixed, both of them having the same root cause. Whenever you change deck in lift, it's built immediately, even if you don't actually enter that deck. This avoids a delay when you exit the lift. However, if you then decide to go back to the deck where you entered lift after, game keeps previous droid/deck status intact but deck map is reset to the default state.Now, the two bugsUnknownnoreply@blogger.com0tag:blogger.com,1999:blog-349138489475101445.post-52146213209542067442007-08-19T20:05:00.000+03:002007-08-19T20:16:50.558+03:00Another week gone byAnd so time passed by with nothing extraordinarily great done...I found a bug in the latest beta - it teleports droids to the great unknown because I didn't adjust the teleport routine when I changed the waypoint system. Fixing that didn't take long, but with the released beta you need to enter another deck and come back to get droids back. Just visiting a lift doesn't work.Multicolor is almost Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-349138489475101445.post-79921839316937047212007-08-13T19:29:00.000+03:002007-08-14T00:04:51.491+03:00How about a nice game of chess?No chess here, I'm afraid. However, if you prefer more action then try the latest version of Paradroid Redux instead. Every bug listed here has been fixed (I hope).I guess I now can go back to do multicolor changes. I really should have reordered the MC font when I did the hires one, now I need to dig out old notes telling which char ended where.UpdateIt seems that this version finally runs solidUnknownnoreply@blogger.com0tag:blogger.com,1999:blog-349138489475101445.post-58564714150392894792007-08-12T21:52:00.000+03:002007-08-12T22:41:00.382+03:00Objects want to be free - but only be freed onceThis weekend wasn't all bad in spite of having both my birthday and wedding anniversary (yes, my wife wanted to make sure i wouldn't forget the latter! ;) as I found the reason for the double-free bug - or at least one of the reasons.I outlined the collision check loop(s) in an earlier entry. What's not shown in that code snippet is caching of outer loop object type, done to speed up the Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-349138489475101445.post-24933838091861484022007-08-08T20:36:00.000+03:002007-08-08T20:56:44.495+03:00Hum Bug BetatestersNo one tells me about bugs... so I just have to play the game to find them myself! :)Droid library had two bugs: every droid class text was the player class, and droid entries went from 0 to 23 instead of 1 to 24.Droid count in console was wrong, it ignored some droids.Deck layout horizontal scroll was broken. You all did know you can scroll it now, didn't you?Maintenance deck had one droid too Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-349138489475101445.post-77592459082112457932007-08-04T22:41:00.000+03:002007-08-05T01:07:54.039+03:00Morphing into multicolor modeI made a quick disassembly of Paradroid Metal Edition to see how much I need to change the code to make it possible to use either hires or multicolor graphics. The answer: not much. Color tables are different because only the lowest eight colors are available for character color and because of extra entries for multicolor registers. To use ME graphics I only have to reserve some extra space for Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-349138489475101445.post-16062984292492150602007-08-03T21:21:00.000+03:002007-08-03T21:34:21.271+03:00Weekend funAfter recovering from the last weekend I finished the latest changes. I hope I didn't break anything in the process... Check it out yourself.Lots of flicker removed when changing screens.Some internal changes which makes it run faster, although it still drops to every 3rd frame under extreme situations.Game now knows about droid visibility changes which allows some more AI.This version has most Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-349138489475101445.post-15662584372080745182007-07-24T21:59:00.000+03:002007-07-24T22:09:36.598+03:00Cleaning upNow that the worst bugs seemed to be fixed, I took some time to fix most of the flickering when the game changed screens. I did that once already, but delaying sprite writes made the flickering come back. Now everything seems to be fine except going to game mode, where sprites are delayed that one frame. I'm not sure if I bother to fix that or not - it's hard to notice the delay without slowing Unknownnoreply@blogger.com2tag:blogger.com,1999:blog-349138489475101445.post-55342364048075604022007-07-24T00:01:00.000+03:002007-07-24T00:28:11.340+03:00The mother of all bugs killedIt seems that I finally nailed it! Whenever the collision check had to swap sprite indexes (to avoid having separate routines for droid-laser and laser-droid collision, for example) it also swapped counters for outer/inner loops. lda $d015 ; active sprites and #$7e ; mask out player and player_fire sta mask ldy #7.outer_loop asl mask bcs .Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-349138489475101445.post-87166170158503116832007-07-23T11:04:00.000+03:002007-07-23T12:00:37.331+03:00Another Droid in the Wall - not any more!As expected the game has some trouble running after the changes in droid allocation, but that did make me disable all collisions (which are the only remaining thing bugging because of allocation change) and enabling them one at a time. This pinpointed droid reversal bug into droid-droid collision.Simplified droid movement logic is as followsMove droid unless it's paused.If pause count is not NULLUnknownnoreply@blogger.com0tag:blogger.com,1999:blog-349138489475101445.post-29785174290964634852007-07-21T18:55:00.000+03:002007-07-21T19:30:58.405+03:00It's working - time to break it!After couple of changes the game now seems to run solid 25 Hz on PAL C64 (and should do 30 Hz on NTSC C128 but I have no means to verify that), but to make sure it stays that way I'm finally replacing the old droid table with a proper droid allocator à la Mike. That avoids copying data every time an object is removed.Direct result of that is that I can freely add more data for each droid as I Unknownnoreply@blogger.com0