BBC Elite source, now fully documented and explained

reminisce about classic bbc micro and acorn electron games here
Related forum: adventures


cjpinder
Posts: 31
Joined: Fri Jul 03, 2020 6:00 pm
Contact:

Re: BBC Elite source, now fully documented and explained

Post by cjpinder »

Kroc wrote: Fri Sep 04, 2020 1:21 pm I'm not sure what the intention (or outcome) of the EOR is; given that it's only checked when "C" is held, so it can't be for the purposes of breaking docking computer control because that wouldn't make sense only for one direction (any direction should cancel, if this is the intention). It may be that the order of keys in the key-table is implying something else from the BBC's perspective, and they didn't correct it; `joy_down` is the "X" key, and this happens to appear 3 bytes before "C" in the key table on the C64.
This is curious as to what the C64 is trying to do!
Luckily this is one place in the source code where there is actually a comment and it says "kill phantom Cs". So I'm pretty sure the code is there because of the C64 keyboard ghosting issue where if you hold down certain key combinations it thinks another key is being held down when it isn't. Probably using A,S and X was causing C to appear to be held down when it wasn't.

Thanks,
Christian.
User avatar
Dave Footitt
Posts: 998
Joined: Thu Jun 22, 2006 10:31 am
Location: Abandoned Uranium Workings
Contact:

Re: BBC Elite source, now fully documented and explained

Post by Dave Footitt »

Like many others have said, proper amazing work =D> =D>
User avatar
MarkMoxon
Posts: 605
Joined: Thu Jul 18, 2019 4:38 pm
Contact:

Re: BBC Elite source, now fully documented and explained

Post by MarkMoxon »

melchett wrote: Fri Sep 04, 2020 6:27 pm
MarkMoxon wrote: Thu Sep 03, 2020 11:34 am Ha! That is absolutely epic! =D>
I updated this so you could destroy it with lasers too not just an energy bomb Mark...
This is great. :D I’m genuinely surprised how amenable to change this part seems to be!
melchett wrote: Fri Sep 04, 2020 6:27 pm interesting that the code auto re-spawns a space station after the explosions complete
Well, every 32 iterations round the main loop, the code checks for your relative position to the planet, and if you're in the right spot, it spawns a space station, so I guess that's what's going on - it sees you are in the right place and there’s no station, so it just spawns another. See part 14 of the main flight loop, which does the test and calls NWSPS to spawn the station.

Mark
User avatar
Diminished
Posts: 1235
Joined: Fri Dec 08, 2017 9:47 pm
Contact:

Re: BBC Elite source, now fully documented and explained

Post by Diminished »

And yet they're still stupid enough to sell you more missiles.
User avatar
Snuggsy187
Posts: 257
Joined: Wed Apr 03, 2019 9:53 pm
Contact:

Re: BBC Elite source, now fully documented and explained

Post by Snuggsy187 »

Hmmmm.....
I did exactly the same thing..... mod the code so lasers can destroy the station..... (stop the police coming out before it explodes).

I was interested to see if the station re-spawned or not !

Destroying the station is the best thing I've ever seen...... Having a bad day at work ? Just load the Elite mod and blow up the space station.

:lol:
DROP PARCHMENT > POKE LOCK > PULL PARCHMENT > CURSE > BARGE DOOR > GO DOOR
Twitter: @snuggsy187
Kroc
Posts: 12
Joined: Sun Feb 17, 2013 12:24 pm
Contact:

Re: BBC Elite source, now fully documented and explained

Post by Kroc »

The routine used to copy the ship instance to the zero-page (and to copy it back later) could do with some slight optimisation:
This is the code in the BBC version;

Code: Select all

 LDY #NI%-1             \ There are NI% bytes in the INWK workspace, so set a
                        \ counter in Y so we can loop through them

.MAL2

 LDA (INF),Y            \ Load the Y-th byte of INF and store it in the Y-th
 STA INWK,Y             \ byte of INWK

 DEY                    \ Decrement the loop counter

 BPL MAL2               \ Loop back for the next byte, ending when we have
                        \ copied the last byte from INF to INWK
Here's the same [unoptimised] code in the C64 disassembly to use as reference for the optimised version;

Code: Select all

        ;                                       ; bytes/tally   cycles/tally
        ;---------------------------------------;-------------------------------
        ldy # .sizeof(PolyObject)-1             ; +2    2       +2      2
:       lda [ZP_POLYOBJ_ADDR], y                ; +2    .       +5      .      
        sta ZP_POLYOBJ, y                       ; +2    .       +5      .      
        dey                                     ; +1    .       +2      .      
        bpl :-                                  ; +2    7       +3     (15)
        ;                                 loop: ;               -1  *37=555
        ;---------------------------------------;-------------------------------
        ;                                total: ;       9               556
Here's a slightly optimised version:

Code: Select all

        ;                                       ; bytes/tally   cycles/tally
        ;---------------------------------------;-------------------------------
        lda ZP_POLYOBJ_ADDR_LO                  ; +2    .       +3      .
        sta @copy+1                             ; +3    .       +4      .
        lda ZP_POLYOBJ_ADDR_HI                  ; +2    .       +3      .
        sta @copy+2                             ; +3    10      +4      14
        ldx # .sizeof(PolyObject)-1             ; +2    2       +2      2
        ;---------------------------------------;-------------------------------
@copy:  lda $8888, x                            ; +3    .       +4      .
        sta ZP_POLYOBJ, x                       ; +2    .       +4      .
        dex                                     ; +1    .       +2      .
        bpl @copy                               ; +2    8       +3     (13)
        ;                                 loop: ;               -1  *37=481
        ;---------------------------------------;-------------------------------
        ;                                total: ;       20              496
This saves just 60 cycles, but we can double that for the same optimisation applied to the routine to copy the zero-page back to the ship instance, equals 120 cycles. This saving applies for each ship in play, so for a busy screen with 10 ships floating about that would be 1'200 cycles saved!

(You could also completely unroll the loop and that takes just 370 cycles, one way -- at a cost of 186 bytes!)

EDIT: Note that the C64 has 37 bytes in an instance, not 36 like the BBC!
User avatar
jms2
Posts: 3765
Joined: Mon Jan 08, 2007 6:38 am
Location: Derby, UK
Contact:

Re: BBC Elite source, now fully documented and explained

Post by jms2 »

One of the aspects of Elite that always intrigued me was the potential to get trapped in Witchspace and attacked by the Thargoids. On the Electron version, which I had at the time, it was never clear whether this was possible, and there were various rumours suggesting how to make it happen (I seem to recall diving steeply when hyperspacing or something like that ... which never worked for me). Anyway, Mark's disassembly explains very clearly how to make it happen and I can confirm that it works in the Master version. However, I have a couple of Master-specific comments to add:

1) The Thargoids are plotted in stripy red-and-cyan.
2) Using the Escape capsule is not fatal - it just doesn't do anything at all. [EDIT - I thought that "Escape" launched the capsule but I have since discovered that it's actually "Q", so it probably is fatal after all]

I found myself left with not enough fuel to reach any other planets and so Witchspace was unescapable for me. I take it there is no other way out?
User avatar
MarkMoxon
Posts: 605
Joined: Thu Jul 18, 2019 4:38 pm
Contact:

Re: BBC Elite source, now fully documented and explained

Post by MarkMoxon »

jms2 wrote: Sat Sep 05, 2020 5:47 pm One of the aspects of Elite that always intrigued me was the potential to get trapped in Witchspace and attacked by the Thargoids. On the Electron version, which I had at the time, it was never clear whether this was possible, and there were various rumours suggesting how to make it happen (I seem to recall diving steeply when hyperspacing or something like that ... which never worked for me).
I fell for this one, too! When I was trying to work out the code, I wanted to know how to trigger witchspace, and I found the following in Ian Bell's FAQ:
How do I force a mis-jump/entry to "witch space"?

On 6502 versions, this is achieved by engaging maximum "climb" as the hyperspace countdown times out. On the BBC version, you may have to pause the game, press CTRL_X, and then resume to enable this.
Like you, I couldn't get that to work... and after tracking down the relevant code, I found that pitching is nothing to do with it, at least not on the BBC, and that CTRL and X are involved, but not together. I wonder if some of the other versions do need to be at full pitch to trigger the onslaught?
jms2 wrote: Sat Sep 05, 2020 5:47 pm I found myself left with not enough fuel to reach any other planets and so Witchspace was unescapable for me. I take it there is no other way out?
No, if you get stranded too far from the nearest system, you're stuck. I guess it's all part of the witchspace experience... :cry:

Mark
User avatar
Diminished
Posts: 1235
Joined: Fri Dec 08, 2017 9:47 pm
Contact:

Re: BBC Elite source, now fully documented and explained

Post by Diminished »

MarkMoxon wrote: Sat Sep 05, 2020 9:41 pmI wonder if some of the other versions do need to be at full pitch to trigger the onslaught?
I believe the original DOS version worked this way (which is the one that I played through BITD), but it's been a long time.
Kroc
Posts: 12
Joined: Sun Feb 17, 2013 12:24 pm
Contact:

Re: BBC Elite source, now fully documented and explained

Post by Kroc »

Just to get a second opinion on this, is this a bug here?

When the player destroys a ship, it goes through a set of checks to see if it can put a message on the screen, but the paying of bounties is tied to this check, meaning that should a message already be on screen (e.g. "incoming missile") the player will NOT get the bounty for the kill!

Code: Select all

.q2

 LDA DLY                \ If we already have an in-flight message on-screen (in
 ORA MJ                 \ which case DLY > 0), or we are in witchspace (in
 BNE KS1S               \ which case MJ > 0), jump to KS1S to skip showing an
                        \ on-screen bounty for this kill

 LDY #10                \ Fetch byte #10 of the ship's blueprint, which is the
 LDA (XX0),Y            \ low byte of the bounty awarded when this ship is
 BEQ KS1S               \ killed (in Cr * 10), and if it's zero jump to KS1S as
                        \ there is no on-screen bounty to display

 TAX                    \ Put the low byte of the bounty into X

 INY                    \ Fetch byte #11 of the ship's blueprint, which is the
 LDA (XX0),Y            \ high byte of the bounty awarded (in Cr * 10), and put
 TAY                    \ it into Y

 JSR MCASH              \ Call MCASH to add (Y X) to the cash pot

 LDA #0                 \ Print control code 0 (current cash, right-aligned to
 JSR MESS               \ width 9, then " CR", newline) as an in-flight message

.KS1S

 JMP KS1                \ Process the killing of this ship (which removes this
                        \ ship from its slot and shuffles all the other ships
                        \ down to close up the gap)
User avatar
MarkMoxon
Posts: 605
Joined: Thu Jul 18, 2019 4:38 pm
Contact:

Re: BBC Elite source, now fully documented and explained

Post by MarkMoxon »

Kroc wrote: Tue Sep 15, 2020 9:39 am Just to get a second opinion on this, is this a bug here?

When the player destroys a ship, it goes through a set of checks to see if it can put a message on the screen, but the paying of bounties is tied to this check, meaning that should a message already be on screen (e.g. "incoming missile") the player will NOT get the bounty for the kill!

Code: Select all

.q2

 LDA DLY                \ If we already have an in-flight message on-screen (in
 ORA MJ                 \ which case DLY > 0), or we are in witchspace (in
 BNE KS1S               \ which case MJ > 0), jump to KS1S to skip showing an
                        \ on-screen bounty for this kill

 LDY #10                \ Fetch byte #10 of the ship's blueprint, which is the
 LDA (XX0),Y            \ low byte of the bounty awarded when this ship is
 BEQ KS1S               \ killed (in Cr * 10), and if it's zero jump to KS1S as
                        \ there is no on-screen bounty to display

 TAX                    \ Put the low byte of the bounty into X

 INY                    \ Fetch byte #11 of the ship's blueprint, which is the
 LDA (XX0),Y            \ high byte of the bounty awarded (in Cr * 10), and put
 TAY                    \ it into Y

 JSR MCASH              \ Call MCASH to add (Y X) to the cash pot

 LDA #0                 \ Print control code 0 (current cash, right-aligned to
 JSR MESS               \ width 9, then " CR", newline) as an in-flight message

.KS1S

 JMP KS1                \ Process the killing of this ship (which removes this
                        \ ship from its slot and shuffles all the other ships
                        \ down to close up the gap)
Good catch, Kroc! That does indeed look like in-flight messages prevent you from earning a bounty.

Perhaps your Cobra's messaging service is single-tasking and can't transmit details of the kill to GalCop if it's busy displaying messages about missiles and stuff? Then again, it does register a kill for the rank progression, so yeah, perhaps it's a bug. :-)

Is it the same in the C64 version?

Mark
Kroc
Posts: 12
Joined: Sun Feb 17, 2013 12:24 pm
Contact:

Re: BBC Elite source, now fully documented and explained

Post by Kroc »

MarkMoxon wrote: Tue Sep 15, 2020 9:54 am Is it the same in the C64 version?
Yeah, I'm working through the C64 code and documenting it, using your BBC code as reference. I noticed the bug in the C64 code but wanted to double-check if the BBC was exhibiting the same behaviour
User avatar
dominicbeesley
Posts: 2210
Joined: Tue Apr 30, 2013 12:16 pm
Contact:

Re: BBC Elite source, now fully documented and explained

Post by dominicbeesley »

I seem to recall that when playing BITD... most disappointing
User avatar
CHRISJJ
Posts: 352
Joined: Sun Feb 02, 2014 1:34 am
Contact:

Re: BBC Elite source, now fully documented and explained

Post by CHRISJJ »

cjpinder wrote: Wed Sep 02, 2020 11:35 pmBut even when I did Elite-TNK 20 years ago I had "modern" systems to help me. Angus was working on a BBC Model B, just a few years after Elite was released.
Hmm. Angus told me he used a BBC Micro with 6502 second processor.

So I think it very unlikely he was stuck with only a Model B.

Not that that changes the fact his Elite-III was a great achievement. Almost as great has another one of his. With none of our dev tools or dev system docs, going only by end-user code, he created a brilliant code module for the Hybrid Music System. In that (unlike Elite adaptations), he's unique - to my knowledge.
User avatar
MarkMoxon
Posts: 605
Joined: Thu Jul 18, 2019 4:38 pm
Contact:

Re: BBC Elite source, now fully documented and explained

Post by MarkMoxon »

MarkMoxon wrote: Sun Aug 30, 2020 3:11 pm I'm also planning to turn this repository into a more navigable website
Quick update on this: the companion website version is now done, and can be found at www.bbcelite.com.

Mark
User avatar
CHRISJJ
Posts: 352
Joined: Sun Feb 02, 2014 1:34 am
Contact:

Re: BBC Elite source, now fully documented and explained

Post by CHRISJJ »

Kroc wrote: Tue Sep 01, 2020 9:02 pmBell & Braben both disliked the Commodore 64
Citation?
MartinH
Posts: 458
Joined: Tue Jan 14, 2020 8:38 pm
Contact:

Re: BBC Elite source, now fully documented and explained

Post by MartinH »

I've been looking through the source code (well the excellent comments) to see if I could discover the reason for something that has puzzled me for over 30 years...

In the summer of 1990 I was doing my usual thing of flying around the starting systems shooting things up and failing to dock at the space stations. Something curious happened: I destroyed a pirate ship (either with the pulse laser or a missile, I don't recall) and received a bounty of 8000+ credits. I'd never seen that size of bounty before and never have since.

If I'm reading the source code correctly, though, that bounty should be impossible - as far as I can see, when you kill something the game reads two values from the blueprint, adds them together, and adds the result to the cash pot. I can't see any sort of multiplier that would account for my 8000+ credit bounty.

That said, I always thought my version of Elite was a bit quirky anyway:
  • Every once in a while you could shoot something and end up with negative credits. This made it pretty tricky to build up any sort of cash - I remember once getting to a space station with a negative credit balance and being unable to buy anything, even fuel!
  • Encounters with Thargoids would always lead to screen corruption, and would even corrupt the console portion of the screen - and that corruption wouldn't clear until exiting the game.
  • I remember once following a trader after it had left the station all the way to the system's sun - at which point it vanished. When I checked the local and galaxy map I was in a completely different system and galaxy! (I don't know if this actually supposed to happen, but I've never heard anyone else mention it).
I always put this down to my version being faulty, but now I'm not so sure. My copy was on cassette and came in a large-format plastic box, with Acornsoft and Superior Software branding. In game all the branding was Acornsoft. What's making me think something else was going on is that nobody else I've ever spoken to has encountered these problems - and I doubt that Superior would have tinkered around with working code to introduce bugs for a re-release game. So I'm thinking it might have been a combination of hardware causing these quirks.

The beeb itself was an early-ish model. I think my dad brought it home in 1983. The OS rom was never upgraded, so would have been whatever Acorn were shipping in '83. The only other non-stock thing the machine had was a rom my dad installed (I think it was called Toolkit Plus) and a Kempston joystick in BBC Micro colours.

Sadly the machine and the game are long gone, so the mystery of the 8000+ credit bounty is probably going to remain a mystery.
VectorEyes
Posts: 572
Joined: Fri Apr 13, 2018 2:48 pm
Contact:

Re: BBC Elite source, now fully documented and explained

Post by VectorEyes »

Interesting. Back in the Day, I had a BBC Micro that had lots of modifications. Replay installed, a ROM/RAM board of some description, a dual 1770 and 8271 disc interface, etc. I think every game (including Elite and Exile) ran on it fine ... except Stryker's run. I didn't even know there was anything wrong with it until a friend came round and told me that the enemies and helicopters were in the wrong positions. And if you got far enough, you started to see corruption in some of the graphics.

I would imagine it was either some obscure hardware issue, or that the disc was faulty in a way that allowed it to load and run, but with duff data. Sadly, like you, the hardware and software that reproduced the issue are long gone!
User avatar
ash73
Posts: 223
Joined: Wed Feb 03, 2016 10:51 pm
Location: Cheshire, UK
Contact:

Re: BBC Elite source, now fully documented and explained

Post by ash73 »

Just wanted to pop onto the thread to say thank you to @cjpinder for the work you did writing Elite The New Kind, I've been blitzing it the last couple of weeks and really enjoyed it, it's a superb conversion! It's given me a lot of fun over Christmas, and I finally got to elite after all these years!

I know it's a long time ago now, but did you write up a blog about the work you did? It would be interesting to read a bit more about it.
User avatar
Arcadian
Site Admin
Posts: 4221
Joined: Fri Nov 24, 2000 12:16 pm
Contact:

Re: BBC Elite source, now fully documented and explained

Post by Arcadian »

The video of Mark's talk from the November ABug event is now online! :)

http://abug.org.uk/index.php/2020/11/07 ... ing-elite/
Please subscribe to the ABug YouTube channel!
User avatar
BigEd
Posts: 6261
Joined: Sun Jan 24, 2010 10:24 am
Location: West Country
Contact:

Re: BBC Elite source, now fully documented and explained

Post by BigEd »

Well done Dave!
User avatar
scarybeasts
Posts: 1052
Joined: Tue Feb 06, 2018 7:44 am
Contact:

Re: BBC Elite source, now fully documented and explained

Post by scarybeasts »

This was a fun talk. Thanks Dave for putting up a polished production, and thanks Mark for the talk and all the effort behind it!

I was very interested in the section about tidying up the vectors from time to time, otherwise the ships get wobbly. Sounds like a lot of fun -- don't suppose there are any screenshots or video with these wobbly ships?


Cheers
Chris
User avatar
MarkMoxon
Posts: 605
Joined: Thu Jul 18, 2019 4:38 pm
Contact:

Re: BBC Elite source, now fully documented and explained

Post by MarkMoxon »

scarybeasts wrote: Tue Jan 26, 2021 1:21 am This was a fun talk. Thanks Dave for putting up a polished production, and thanks Mark for the talk and all the effort behind it!

I was very interested in the section about tidying up the vectors from time to time, otherwise the ships get wobbly. Sounds like a lot of fun -- don't suppose there are any screenshots or video with these wobbly ships?
There are indeed. :-) Here's a quick video of me trying and failing to dock with a wonky (and collapsing) space station:

https://www.bbcelite.com/media/wonky_el ... _elite.mp4

and here's a still image that shows the stretching in action (though the video shows it better):

wonky_elite.png

This is pretty easy to try for yourself. All you need to do is NOP out the call to JSR TIDY in the MVEIT routine, which disables the orthonormal tidying code. Here's a version with this already done (this is a JSBeeb link to 'Wonky Elite'):

https://bbc.godbolt.org/?autoboot&disc= ... _elite.ssd

The easiest way to get a wonky station is to fly around it for a while - as long as the station stays on the radar, it should keep stretching (you don't have to keep it in sight). It takes a few minutes, but once it starts breaking, it will start to collapse, as in the video. It's easiest to do this with the station as it doesn't move in space, but the same principal applies to all ships, if you can keep them in the vicinity (though it doesn't break the planet or sun, as they use totally separate code).

It just shows why they had to implement the TIDY routine, and how the errors in the small angle approximation soon start to add up if you don't correct them.

Mark
Last edited by MarkMoxon on Tue May 04, 2021 1:04 pm, edited 2 times in total.
User avatar
rmbrowngr
Posts: 619
Joined: Sat Jan 13, 2018 12:46 pm
Location: Dionysos, Greece
Contact:

Re: BBC Elite source, now fully documented and explained

Post by rmbrowngr »

Just been enjoying the video by Mark on the abug site http://abug.org.uk/index.php/2020/11/07 ... ing-elite/. Fantastic suff. =D>

After seeing the video and visiting his website www.bbcelite.com, I realised the version of Elite that I had back in the 80's for the Electron had the bug which blocked Galactic Hyperdrive. What have I've been missing all these years!
Richard B
Acorn Electrons issue 4 and 6, MRB, Plus 1 x2, Plus 3, AP6 x2, AP5, Pegasus 400, BeebSCSI, Gotek, Raspberry Pi Co-processor, GoSDC MBE.
BBC B+ 64K (128K upgraded) with Duel OS, Raspberry Pi Co-processor and Gotek.
User avatar
Arcadian
Site Admin
Posts: 4221
Joined: Fri Nov 24, 2000 12:16 pm
Contact:

Re: BBC Elite source, now fully documented and explained

Post by Arcadian »

For anyone not following the ABug events section, Mark will present 'Explaining Elite - Part 2' at the Sat 6th February ABug at 3pm ... details below ...

Image

Or, in text format ...

6502 Second Processor Elite:

Tube communication
Adding colour
The scrolling demo

Disc Elite:

Extended text tokens
Docking/flight code split
Ship blueprint files
Missions
Docking computer

Link to the sign-up thread for the session:
viewtopic.php?f=25&t=21618
Please subscribe to the ABug YouTube channel!
AJW
Posts: 984
Joined: Sun Feb 15, 2004 2:01 pm
Contact:

Re: BBC Elite source, now fully documented and explained

Post by AJW »

Can you comment on the maths or method how they implemented a circle moving around the surface of a sphere and stripes rotating around a sphere?
User avatar
MarkMoxon
Posts: 605
Joined: Thu Jul 18, 2019 4:38 pm
Contact:

Re: BBC Elite source, now fully documented and explained

Post by MarkMoxon »

AJW wrote: Tue Jun 21, 2022 7:49 am Can you comment on the maths or method how they implemented a circle moving around the surface of a sphere and stripes rotating around a sphere?
Good question! This is one of the parts of the code that I don't fully understand, though I have documented what it does (I just don't know why it does it).

Here's a work-in-progress document on drawing craters (the full circles that move around the planet's surface, as in Diso):

https://www.bbcelite.com/deep_dives/dra ... aters.html

and here's another one that talks about drawing meridians and equators (the crossed lines that rotate around the planet, as in Lave):

https://www.bbcelite.com/deep_dives/dra ... ators.html

It's on my list to go back and try to work these out, as the maths isn't super-complex... it's just eluding me how the equations work. If anyone knows more about this, it would be great to know!

Usual disclaimer: there may be mistakes in my interpretation of the code. The above contain links to the source, so you can check it out for yourself.

Mark
bob147
Posts: 340
Joined: Thu May 02, 2019 10:02 pm
Contact:

Re: BBC Elite source, now fully documented and explained

Post by bob147 »

One question did occur when reading about getting your combat rank and how it's entirely based on kill count. I'm a fan of tool assisted speed runs and hypothetical 'perfect play', @MarkMoxon given your knowledge of the underlying mechanics of the game, what do you reckon is the fastest way to reach Elite? I guess it matters which version we use as I believe the Master version rewards you for going after the more dangerous ships with extra points whereas the standard beeb version doesn't.

I suspect it'll end up being something dull like camping in front of the space station and blasting away for a very long time, but I'm imagining a careful series of inputs to manipulate the random number generation and spawn a large number of ships right in front of us or something equally fun! :D
gfoot
Posts: 987
Joined: Tue Apr 14, 2020 9:05 pm
Contact:

Re: BBC Elite source, now fully documented and explained

Post by gfoot »

I'm pretty good at spawning a large number of Vipers, not so good at shooting them though!

It does seem likely to be the fastest way though, so long as you tool up enough to survive the battle. That is, assuming the police do count to your score...
User avatar
MarkMoxon
Posts: 605
Joined: Thu Jul 18, 2019 4:38 pm
Contact:

Re: BBC Elite source, now fully documented and explained

Post by MarkMoxon »

bob147 wrote: Mon Feb 20, 2023 3:52 pm One question did occur when reading about getting your combat rank and how it's entirely based on kill count. I'm a fan of tool assisted speed runs and hypothetical 'perfect play', @MarkMoxon given your knowledge of the underlying mechanics of the game, what do you reckon is the fastest way to reach Elite? I guess it matters which version we use as I believe the Master version rewards you for going after the more dangerous ships with extra points whereas the standard beeb version doesn't.

I suspect it'll end up being something dull like camping in front of the space station and blasting away for a very long time, but I'm imagining a careful series of inputs to manipulate the random number generation and spawn a large number of ships right in front of us or something equally fun! :D
Good question!

In all Acornsoft versions apart from the BBC Master, sitting outside a space station and destroying Vipers is by far the most efficient method. Stick military lasers on your rear view, launch, slow down and kill the cops as they leave the station, and you should be good. If one gets away, you can ignore it until it gets annoying, and then just hop away to another station, then dock, rinse and repeat. It's boring as can be, but I can't think of a way to get combat points faster.

Also, do the missions if you're on the disc or 6502SP versions. Each one is worth 256 combat points, so not too shabby.

On the BBC Master this is a much trickier question, as they nerfed the above approach. Given the number of points on offer, I think there are two optimal strategies:
  • Keep on intentionally mis-jumping into witchspace and farming Thargoid motherships. Each mothership is worth 2.66 points, though at 0.13 points per Thargon, I'd probably ignore them. Keep on forcing jumps into witchspace and you could rack up the points, at the cost of your sanity. Do this between two systems that are really close, so you don't run out of fuel and get stranded. You can trigger a mis-jump by first pausing, pressing X and unpausing (you only need to do this once - it also shows the authors' names on the title screen). Then you can hold down CTRL once you have initiated your hyperspace jump, and you'll end up in witchspace.
  • Jump into anarchy systems and kill pirates. Pirate Cobras and Pythons are worth 1.16 points each, which is only beaten by the Fer-de-Lance at 1.25... so becoming a fugitive *and* killing pirates would probably be the best approach, as that way you would also attract bounty hunters you could mow down. And this approach is fun, too, which is kinda the point.
Everything else is small change, really. See the ship points toward the end of this article:

https://www.bbcelite.com/deep_dives/combat_rank.html

I can't think of any way of gaming the RNG to get better spawn rates, apart from hacking the code, and that's definitely cheating!

Mark
Post Reply

Return to “8-bit acorn software: classic games”