Jump to content
IGNORED

Phobos, Caverns of Mars 3


playsoft

Recommended Posts

In case this is of any interest, here is the build directory for this conversion. I use ca65 and have the bin sub-directory in my path.

 

The .001-.006 source code files were generated from the A8 executable using the dis6502 interactive disassembler (downloaded from the atarimax website). For these 16K games I do not worry too much about dotting the i's and crossing the t's - I just try to make sure that I have identified the code and data sections correctly.

 

With the code sections identified, most of the time it is enough to modify the h/w register equates (I pull in atari5200.inc) although this can miss some h/w locations if accesses have been done through zero page. I put hooks into the code to cater for the A8/5200 differences without disturbing the footprint of the code which is what lets me get away without doing a 100% disassemble as everything remains at its original location.

phobos.zip

  • Like 2
Link to comment
Share on other sites

Pretty prolific output of conversions lately. I've been meaning to do a couple myself - don't have a real 5200 though, and not quite the overall grasp of handling the controllers.

Does anyone have some standard routines they use?

The way I'd go about it is convert to something the A8 would have otherwise generated, and allow remapping of button inputs to keystrokes for pause, smart bomb etc.

  • Like 1
Link to comment
Share on other sites

The keypad and joystick reading code you see in phobos.s is pretty much what I do each time. For example, with the basketball conversion I had to read all 4 joysticks and then combine them into fake PORTA,B registers - but the actual reading was done in exactly the same way.

 

Regarding the keypad, in the first couple of conversions I used an IRQ interrupt but I subsequently switched to key held checks in the vertical blank (I had to do this in ATARI BLAST! because I'm using a Pokey timer for the sprites). The other bits of operating system and hardware I do as required by the program. For example, Savage Pond was using the o/s count down timers.

 

It is the controllers which are most likely not to be emulated correctly but if you end up doing a conversion before you have real h/w you would have no shortage of testers here. The first release of GTIABlast! (as it was then) on the 5200 was developed completely blind as I did not have any h/w at the time and the Ultimate SD is not supported by any of the emulators.

Link to comment
Share on other sites

In case this is of any interest, here is the build directory for this conversion. I use ca65 and have the bin sub-directory in my path.

 

The .001-.006 source code files were generated from the A8 executable using the dis6502 interactive disassembler (downloaded from the atarimax website). For these 16K games I do not worry too much about dotting the i's and crossing the t's - I just try to make sure that I have identified the code and data sections correctly.

 

With the code sections identified, most of the time it is enough to modify the h/w register equates (I pull in atari5200.inc) although this can miss some h/w locations if accesses have been done through zero page. I put hooks into the code to cater for the A8/5200 differences without disturbing the footprint of the code which is what lets me get away without doing a 100% disassemble as everything remains at its original location.

 

 

this .i'm sure,will encourage people to do even more conversions

Link to comment
Share on other sites

To fully complete the Caverns saga...

 

Start = begin game

Pause = pause game

Reset = select level

 

There is a cheat in the A8 original where shift + control + tab takes you to the next sub-level (A..P). I have remapped this to the * key.

 

 

i didn't know about this one,

and

 

its the best of the 3,

now really the "saga" is complete on the 5200

 

:thumbsup:

Link to comment
Share on other sites

In case this is of any interest, here is the build directory for this conversion.

Yes! Thank you, Paul! I've been too shy to ask for this sort of thing from anyone to date! :ponder: This will be very interesting. And thanks for this new conversion, too.

  • Like 1
Link to comment
Share on other sites

Anyone else try this on a real 5200? The reason why I ask is that I can not get the ship to move right...only left, up, or down...

 

Yes I've played it quite a bit. Works fine on my system. Sounds like your controller may need adjusting?

 

Oh and thanks for the conversion Paul!

  • Like 1
Link to comment
Share on other sites

I tried a different controller and still have the same problem, Must be the inter-action between my Atarimax cart and my 5200. I have the same problem with Pole Position.

I haven't had any problems with it using my Atarimax cart, though I've had similar problems with Zaxxon. That's a bit unfortunate.

Link to comment
Share on other sites

I tried a different controller and still have the same problem, Must be the inter-action between my Atarimax cart and my 5200. I have the same problem with Pole Position.

It's probably your 5200 itself that needs calibrated. See the recent "Stupid joystick tricks - Horizontal motion issue" thread for instructions on how to do so.

 

http://atariage.com/forums/topic/216798-stupid-joystick-tricks-horizontal-motion-issue/?view=getnewpost

Link to comment
Share on other sites

Recently I was having trouble moving down - with both of my joysticks - on games which were previously ok. I calibrated the 5200 and that did the trick.

 

In my recent conversions I check for the pot values being less than $42 for left/up and greater than $A2 for right/down.

 

In future conversions (and possibly ATARI BLAST! although that may end up with proper analogue control eventually) I am thinking of either:

 

(1) Keeping to this method --- it's the simplest!

 

(2) An automatic calibration based on the lowest and highest pot values read during the game.

 

(3) An optional manual calibration which can be run at start up

 

Regarding (3) I have put together a quick test program which is attached.

 

The status line at the top shows the joystick values, averaged over 8 frames which is why you can see them ramp up and down quickly.

 

To calibrate your joystick you should follow the on-screen instructions - push the joystick in the direction indicated and press the fire button to record the appropriate pot value. Once you have done this for all four directions and a centred stick, it will calculate the thresholds for digital joystick emulation. You are then able to move a square around to check that it works ok.

 

By default I calculate the thresholds with 50% dead space - i.e. so that you need to move the joystick 50% in order to register a change in direction. By pressing * (after the calibration is complete) you can switch to 33% dead space - i.e. you don't need to move the joystick so far. You can switch back to 50% by pressing #. At any time you can restart the alignment process by pressing reset.

 

I'd be interested in knowing what pot values other people are seeing. Below are the readings from my two controllers.

 

left = 04 right = CC up = 02 down = B7 centre = 63 60

left = 26 right = C5 up = 01 down = B6 centre = 7E 62

cal.bin

Link to comment
Share on other sites

...I'd be interested in knowing what pot values other people are seeing. Below are the readings from my two controllers.

 

left = 04 right = CC up = 02 down = B7 centre = 63 60

left = 26 right = C5 up = 01 down = B6 centre = 7E 62

My beater 4 port with Wico Command Control analog joystick:

 

left = 01 right = E4 up = 01 down = E4 center = 6A 65

 

Calibration program is cool, but I'd like games to have a nice amount of dead zone that assumes the console is in proper calibration.

I understand why some Atari games like Galaxian and Ms. Pacman had an auto calibration routine... but I know it plays havoc for people trying to use digital to analog converts.. like the Masterplay Interface.

 

Keep up the excellent work!

  • Like 1
Link to comment
Share on other sites

Looks like I was using $40 and $a4 as my threholds in my joystick read routines (at least for one of my conversions I ripped this from). Not sure why I didnt use A instead of stickval and x for the comparisons though.

 

 

lda $E802

cmp #114+50

rol stickval

cmp #114-50

rol stickval

lda $E803

cmp #114+50

rol stickval

cmp #114-50

rol stickval

lda $E800

cmp #114+50

rol stickval

cmp #114-50

rol stickval

lda $E801

cmp #114+50

rol stickval

cmp #114-50

rol stickval

lda stickval

eor #2+8+32+128

sta SPORTA

 

All of my conversions I kind of made a mini atari computer like os just adding features as they were needed. I used dis6502 to make a rough dissassembly, changed references to hardware locations, only a couple vector references needed altered because I was using my own mini os with all of the vectors where they are in the computers (except for IRQ, NMI, hardcoded in ROM). Patches were then inserted where needed. Sometimes calling subroutines to read, or sometimes having the vbi update shadow registers (like for console register, keyboard, joystick).

  • Like 1
Link to comment
Share on other sites

Looks like I was using $40 and $a4 as my threholds in my joystick read routines (at least for one of my conversions I ripped this from). Not sure why I didnt use A instead of stickval and x for the comparisons though.

 

 

lda $E802

cmp #114+50

rol stickval

cmp #114-50

rol stickval

lda $E803

cmp #114+50

rol stickval

cmp #114-50

rol stickval

lda $E800

cmp #114+50

rol stickval

cmp #114-50

rol stickval

lda $E801

cmp #114+50

rol stickval

cmp #114-50

rol stickval

lda stickval

eor #2+8+32+128

sta SPORTA

 

All of my conversions I kind of made a mini atari computer like os just adding features as they were needed. I used dis6502 to make a rough dissassembly, changed references to hardware locations, only a couple vector references needed altered because I was using my own mini os with all of the vectors where they are in the computers (except for IRQ, NMI, hardcoded in ROM). Patches were then inserted where needed. Sometimes calling subroutines to read, or sometimes having the vbi update shadow registers (like for console register, keyboard, joystick).

 

Thank you, nice to hear you'd used almost identical thresholds so I'll continue using these. I did notice when porting Savage Pond that it takes the 5200 a little longer to get to your dli routine so there is a little less time available before you need to do the WSYNC.

Link to comment
Share on other sites

  • 3 weeks later...

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.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...