Jump to content
IGNORED

New Atari Port - Venus Express


Heaven/TQA

Recommended Posts

just for fun I checked out the minigames from this years compo and found the c64 source of the winning 1k game "Venus Express". I love the dynamic scrolling and the physics behind it or the clever level generator so i simply tried to convert it to Atari800... the code is straight forward but if you are not familiar to c64 it might be difficult little bit (thanks TMR for help!).

 

it's still beta but the code grew to 3k. it's easy when you have 8 sprites but on atari side you need the player/missle overhead + display list... but fortunatly you then don't need the "copy map to screen" routine from the c64 anymore... ;)

 

it's good exercise for coding Boinxx further as I coded some "high end" sound effects... :) or the BCD score routines...

 

at top i have just included a dummy status line but i try to avoid it and try to reproduce it like in the c64 game itself... thank god i could take the score panel from Boinxx for that... but the repositioning of the multicolour players will be little bit tough...

 

in the .zip you'll find the c64 original and the .obx atari one... when the screen flashes just press fire... please have in mind it's just beta status as the "enter next level" has not yet be tested... :)

 

just let me know how does it feel on real machine with joystick...i just played it in atari800win... it's coded in NTSC mode but works in PAL as well...

venus.zip

post-528-1136325353_thumb.jpg

post-528-1136325388_thumb.jpg

Edited by Heaven/TQA
Link to comment
Share on other sites

Aleksi did a very nice job on C64 so the kudos to his work... but as i learned it's not so easy to convert c64 games even simple ones to atari800 architecture... but Aleksi's code is very clever and more suitable for atari nature than imho for c64...

 

f.e. the whole physik engine can be taken to atari... and he has choosen the maths behind it so clever that you can write it directly into softscroll registers on c64... but not 100% it need some tweaks esp. for the hscrol register (4 pixel vs 8 pixel, reverse order etc...)

 

the levels are all 256 cars wide which is perfect for our Antic... :) and the scrolling engine and all screen calculations are damned easy...

 

so most credits have to go to Aleksi. i have reworked or newly written so far:

 

- scroll engine (rewritten)

- joystick routines (rewritten)

- sprite routines (rewritten)

- sound routines (rewritten)

- new kernel like in Boinxx to get max RAM by switching of OS.

 

the ram usage is unbelievable high...(so a 5200 port will be harder)

 

the level generator writes & fills the memory $1000-$cfff so that's why you need to switch off OS... and then you need new interrupt handlers etc...

 

so back to Thomas question...i just roughly have understood the level generator...but the random values are taken from c64 rom code (which is included in atari800 port as well... ;) no it's not a virus... ;))

 

more on the level generator tomorrow....

Link to comment
Share on other sites

oh...last comment before i got to sleep... yes... you can enter other caves...i just tested to escape from cave 1...just fly over the blinking object (carefully) then fly back straight out of the cave into the sky until the new level is build and press fire to enter again...

 

btw... should i change the thrust from pressing joystick up to fire?

Link to comment
Share on other sites

_nextcave
       jsr     Random                 ; random cave length
       and     #$03
       sta     cavelen
       jsr     Random                 ; random cave dir
       and     #$03
       tax
_cavestart
       lda.w   caveadd1,x             ; instruction ($e6 = inc, $c6 = dec)
       sta.w   caveadd_
       lda.w   caveadd2,x             ; memory location (gen or genh)
       sta.w   caveadd_+1

_caveon
       lda     #$80                   ; draw cave loop
       ldx     #$07

       jsr     Round                  ; fill top of cave cell
       inc     genh

_cblk1
       ldy     #$06
_cblk3
       sta     (gen),y                ; fill middle of cave cell
       dey
       bpl     _cblk3

       inc     genh
       dex
       bne     _cblk1

       jsr     Round                  ; fill bottom of cave cell

       lda     genh
       sec
       sbc     #$08
       sta     genh

caveadd_
       inc     genh                   ; modified by cave dir

       lda     genh                   ; check level bounds
       cmp     #$2c
       bne     _notop
       inc     genh
_notop
       cmp     #$b8
       bne     _nobot
       dec     genh
_nobot
       lda     gen
       cmp     #$28
       bne     _noleft
       inc     gen
_noleft
       cmp     #$d0
       bne     _noright
       dec     gen
_noright
       dec     cavelen
       bpl     _caveon

       dec     cavesl
       bne     _nextcave
       dec     caves
       bne     _nextcave

 

1. first... the whole level is filled with the wall texture

2. then via random it's choosen if the cave cell is opened (or moved? --> cave dir) top, down, left, right.

3. then subroutine is "drawing", well actually erasing the wall texture top, middle or ground vise... --> "subroutine round".

4. a cave cell seems to have 8x8 character dimension

 

so actually it's like with photoshop and drawing with thik pencil... ;)

 

and random seeds are predictible and are feeded by c=64 rom code at $e700 and $ef00. so actually this 512 byte rom code is included here as well to reproduce the levels correctly.

Link to comment
Share on other sites

i played little bit the c64 version again and it seems that the collision routine there is same weak as the atari one... (the picking up of the capsules)... anybody discovered any difference between the 2 versions? i do not mean right starting position (tunnel below the space ship f.e.)

 

i tend to improve various things on this port... as i will not force me to the 1k or 4k limit... so i will add some msx and title screen with credits if you don't mind...

 

some tweaks are already added f.e. the overscan playfield...

Link to comment
Share on other sites

some tweaks are already added f.e. the overscan playfield...

993977[/snapback]

 

heaven,

 

have you every tried to run Venus on a real machine? It runs well on the emulator but not from MyDos, Picodos or the QMEG Menu.

 

What may be wrong?

 

\twh

Link to comment
Share on other sites

ok. here is the atr file...  it's just a work around i moved  the main code to $f000 and the sprite data to $0600 so it now should work on real machine... (ok bit of waste using 3k of the 130kb of a disc... ;))

995124[/snapback]

 

yeah! great stuff!! I especially enjoy the overscan!!! The game is really great. Somehow cooler than Thrust. Do you think you can eleminate the top/bottom-borders too? I think this is what the atari version of this game would make it superior to the c64 version!!!!

 

\twh

Link to comment
Share on other sites

here is the latest build as bootable ATR...

 

changes to previous version:

 

- score & timing routines adapted

- game over etc works now

 

so actually now you should be able to play it properly...

 

now...rest is polishing and making an "plus" version for the atari version...

 

btw. i have thought about using complete overscan...but question...will this not hit gameplay as you can see more of the caves than in the original version? what do you guys think... should i switch back to 40x25 mode like the c64 original?

venus.zip

Link to comment
Share on other sites

here is the latest build as bootable ATR...

 

changes to previous version:

 

- score & timing routines adapted

- game over etc works now

 

so actually now you should be able to play it properly...

 

now...rest is polishing and making an "plus" version for the atari version...

 

btw. i have thought about using complete overscan...but question...will this not hit gameplay as you can see more of the caves than in the original version? what do you guys think... should i switch back to 40x25 mode like the c64 original?

995873[/snapback]

 

:cool: :cool:

 

The complete overscan is for sure a "polishing feature". I think it's not disturbing the gameplay at all. Honestly adding overscan makes this game really atari 8bit like! You know, this one thing I really love about my XE. Rather than C64 and Atari ST (surprise, surprise) the XL/XE machines had this great overscan mode which adds so much more flexibility to any game/demo. So why abdicating this feature when we can have it for free?

 

Okay about the "Venus plus" version here what comes up to my mind:

 

* G2F opener

* G2F title screen / logo

* music in title screen / game

* highscore list / hall of fame

* rolling time - to - points effect :) (like in boulderdash)

* disk version -> to store highscores

* crash animation / sound

* transparent on screen display (what are the technical limitations here?)

-> this also means even more overscan!

* replacing the "rainbow color distortion" by text "Get ready!"

* G2F end screen (how many levels are in the game?)

* end screen music

* game over jingle

* get ready jingle

* usb mouse support -> hereby the throttle must be the button

(I can help on this)

 

and much much more :)

 

Can you open source the atari version? What about the restricitons of the original author of the game? If open sourced, everybody could contribute changes.

 

last words: Thx 2 u Heaven!!! This nice little game spent me hours of fun with my XE :) at this weekend.

 

grtx,

\twh

Link to comment
Share on other sites

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...