Tuesday, July 3, 2007

Let There Be Light

On a sunny summer day in Finland it finally happened - I gave in and started a blog about my Paradroid hack. Unlike PC remakes this one is made for the Commodore 64. (Enough links already? Can I stop it now?)

The disassembly was completed over a year ago, and since then there have been many changes. Main goal was to give it a nice speed boost, but I couldn't resist changing some other things as well. You can read more about it here, but let's recap the list:


  • Support for second fire button.
    No more accidental transfers.
  • Number of droids remaining on deck/ship shown in console
    Nicked from Paradroid'90.
  • Statistics for previous game can be viewed during intro sequence.
    Nicked from the same source...
  • Start ship can be selected from any previously visited ships.
    One more from Paradroid'90. This info is saved to disk so you can carry on from your last game.
  • Scoring changes: alert scoring is altered to match the original instructions, ship clear now has both accuracy and alert bonus (p90 is good for inspiration!). I also replaced rather stupid "lowest scre of the day" with all time high score, which is saved to disk.
  • Droid AI has changed quite a lot: droids flee/pursuit depending on their level, energy and ship alert status. Radar equipped droids do that even if player is not visible.
  • Damage calculation has changes slightly as well. Droids getting hit by friendly fire sustain same damage than from player, and explosion does sligthly less damage so it's easier to survive one. Explosions don't restart any more when hit by laser/disruptor, which makes them less deadly as well.
  • Original game killed droids when there were no free sprites, I attempt to teleport them to some other part of deck.
  • Droids bumping into each other behave randomly.

You all knew that all already, so let's end this entry with something useful to know. When writing minimal saving routine, be sure to clear memory location $02a1 beforehand. Otherwise you may get endless loop when kernal waits RS232 routines to release IEC bus. Here is the minimal version of system restore before load/save:

RestoreSystem
pha

ldx #$80 ; store game vars
.1 lda 0,x
sta $bf00,x
inx
bne .1

stx $02a1 ; avoid IEC_idle hang
stx $9d ; no messages

inc $01 ; kernal in
; IRQ will now use $0314
pla
rts

8 comments:

Mike said...

And about time too!! At last I have a simple place to look for updates!

TNT said...

I hope I won't end up spending more time playing with blog CSS than with C64 code :)

I admit that blog makes it easier to follow what's happening with Paradroid Redux, the project page doesn't have any version history. Not that releases are too frequent, though, but there are lots of "internal" versions. I think I've had something like 30 builds on the worst day. Fast assembly-test cycle makes me lazy so it's faster to try something out than think about it to see if it works.

Mike said...

Well, I'd recommend making a wider display with your css code, I found listing ASM in the narrow format a bit yucky...

TNT said...

For some reason I thought 60% + 30% is somewhere near 100%... Now it uses 75%/23% split between main/sidebar area, total width is limited to 620-800px on browsers supporting min/max-width.

Mike said...

I dont know who has 800x600 these days, 99% of folk I'd imagine have at LEAST a 17" TFT which is 1024x768 - most will have 19" which is 1280x1024...

Although... it appears the trend is towards widescreen - 1280x800...1440x1024 etc... how odd.

Anonymous said...

Excellent, I just took a 1st look at Parareduxoid yesterday and was looking for an email on the project page to write you and suggest adding dates and a listing of changes.

Then with next update after the last dated June 24th we would know what was modified.

If you plan to list here then add a link to here with next update.

On my 1st play yesterday, right after start I climbed a level and got face to face with 999. Ouch! No time to react, was trying to get used to the keyboard mapped through VICE.

True that 800x600 should now be banned. I redesigned my website a few months ago and decided to drop support for 800x600. 1024x768 should be a minimum now.

TNT said...

Hmm, you met 999 in the front portion of "bridge"? Not much room to dodge around it there :)
When I have put in all deck data the game knows which part each droid belongs to, so the random placement doesn't throw them around so much.

The game is much nicer with joystick. The latest VICE also changed keypad layout, I think. Now "2" is down, earlier versions had that mapped to "5" which was much better IMHO.


Max-width isn't there for low resolution screens, but because screen-wide text is hard to read. I need to modify my JavaScript layout toy to make it work here, after that you can resize columns to your heart's content.

TNT said...

While I remember: when I switch kernal back on, it already has two vectors redirected.

0314: inc $d019; jmp $ea81

0328: lda #1; rts

IRQ does nothing more than acks raster interrupt and exits, STOP returns "no run/stop" status.