Track n field algorithms?

Hurray Banana

Moderator
Staff member
vacBacker
Feedback
8 (100%)
Credits
2,725CR
philmurr said:
Excellent work with that disassembly Adrian. Wish I could work things out that quickly.

And the 6809 book is very good, just been studying the same author's 8080/8085 book and his writing style makes things very clear.

Good to know
smiley1.gif
 

joe34

Active member
Credits
448CR
useful book for vectrex programming also

ooh that reminds me, dont know if anyone heard but i hear jim bagley (baggers) is working on doing bombjack for the vectrex at the moment
smiley3.gif
 

cmonkey

Active member
vacBacker
Feedback
4 (100%)
Credits
1,658CR
Battlezone said:
Good work cmonkey!

One thought I had while disassembling the 6809 for track and
field was that the "Konami custom cpu" looks very fixable with
a small daughter board should one ever break.
Has anyone done this in the past?

Thanks John. A couple of years ago I did some work on reversing the TTL logic for the K-1 equivalent on a Gyruss boot. Pretty much all Konami boots (that I've seen) which use a 6809 + TTL decryption logic use a very similar method to decrypt the code at runtime. It should be trivial, with the technology available to us these days, to "modernise" the old TTL design and stick the whole logic into a single large PAL or small CPLD.

http://www.ukvac.com/forum/the-konami1-crypto-engine-on-a-gyruss-bootleg_topic337364.html
 

Battlezone

Active member
Feedback
1 (100%)
Credits
410CR
cmonkey said:
Battlezone said:
Good work cmonkey!

One thought I had while disassembling the 6809 for track and
field was that the "Konami custom cpu" looks very fixable with
a small daughter board should one ever break.
Has anyone done this in the past?

Thanks John. A couple of years ago I did some work on reversing the TTL logic for the K-1 equivalent on a Gyruss boot. Pretty much all Konami boots (that I've seen) which use a 6809 + TTL decryption logic use a very similar method to decrypt the code at runtime. It should be trivial, with the technology available to us these days, to "modernise" the old TTL design and stick the whole logic into a single large PAL or small CPLD.

http://www.ukvac.com/forum/the-konami1-crypto-engine-on-a-gyruss-bootleg_topic337364.html

Yes perfect. Great to see you not only have the custom chip internals all sussed but you also made the step of getting the undecoded ROM to work in Mame and hardware too. Which gives us two options for anyone with a broken custom chip (i - custom roms with 6809 daughter board to fix the pinout, ii - original roms with 6809 daughter board and glue logic chip(s)).

As you correctly spotted back in 2013 it's only a handful of gates to decode on the fly and the 6809 provides the LIC signal to make it very easy to tell which byte (or two) to decode.

I didn't even get close to answering the question before you, but I did "have to" code a 6809 disassembler too
smiley2.gif
still that will be useful next time.
 

cmonkey

Active member
vacBacker
Feedback
4 (100%)
Credits
1,658CR
Let's not derail this thread too much from Vic's original post but I'll attach the source for the Gyruss sub-cpu. It's obvious that you're a hardware guru (whereas I'm really just a software guy that does a liitle hardware when I absolutely have to) so maybe you can make something of this and help people with dead K-1's.
smiley1.gif


The encrypted 6809 sub-cpu binary on a Gyruss boot is bitwise identical to the K-1 binary on a Konami board. I used the open source as9 assembler to build the final decrypted binary.

https://www.ukvac.com/forum/data/uploads/1497/gyruss_bootleg_6809_decrypted.zip
 

Battlezone

Active member
Feedback
1 (100%)
Credits
410CR
Thanks cmonkey.

Apologies Vic we have digressed a little, but the discussion did arise directly from time spent looking into the scoring algorithm question.
 

leeram

User
Credits
43CR
This is fascinating to read as a layman.

What would be fantastic is if you could work out the routine behind the swimming trick.

If you dive in, press breath 3 times, then swim you don't have to breath and is the only way you can beat certain levels.

It all seems a bit random though. I know two ways to do it so I suspect the actual way is shared by both methods.

Cheers,

Lee
 

cmonkey

Active member
vacBacker
Feedback
4 (100%)
Credits
1,658CR
OK, back on topic...

The javelin score calculating algorithm is a little more complex than the long jump algorithm but hopefully you'll be able to follow this.

Just like the long jump the game engine orders your 3 attempts into descending order and only awards points for the best attempt.

The scores are calculated as follows :-

No score for throws <= 15.00m

For throws > 15.00m

100 points per whole metre for the first 35m over the 15m threshold (up to a maximum of 3500 points)

200 points per whole metre for every whole metre over that (this would apply to throws of 51m or greater)

10 points per 10 centimetres (if throw < 50m)

OR

20 points per 10 centimetres (if throw >= 50m)

There's no extra points for unit centimetres (i.e. a throw of 75.10 would get the same score as a throw of 75.19)

It may be easier to explain with a few examples :-

A throw of 15.10 would get a score of 10 points (no score for first 15m then 10 points per 10 centimetres)

A throw of 15.19 would also get 10 points (no extra points for the meagre 9cm extra distance)

A throw of 49.00 would get 3400 points (49-15*100)

A throw of 49.50 would get 3450 points (49-15*100 + 5*10)

A throw of 50.00 would get 3500 points (50-15*100)

A throw of 50.50 would get 3600 points (50-15*100 + 5*20)

A throw of 60.00 would get 5500 points (60-25*100 + 10*200)

A throw of 75.00 would get 8500 points (75-40*100 + 25*200)

A throw of 99.90 would get 13480 points (99-64*100 + 49*200 + 9*20) -- this is the highest score attainable in the javelin event

[font="Courier New, Courier, mono"]; javelin score calculating routine [/font]

[font="Courier New, Courier, mono"]; score is calculated as follows :-[/font]

[font="Courier New, Courier, mono"]; no score for throws <= 15.00m[/font]

[font="Courier New, Courier, mono"]; for throws > 15.00m : no score for the first 15m of the throw[/font]

[font="Courier New, Courier, mono"]; 100 points per metre for the first 35 metres over the 15m threshold (up to a max of 3500 points)[/font]

[font="Courier New, Courier, mono"]; 200 points per metre for every whole metre over that (throws that are 51.00 or greater)[/font]

[font="Courier New, Courier, mono"]; 10 points per ten centimetres (if throw < 50m) OR 20 points per ten centimetres (if throw >= 50m)[/font]

[font="Courier New, Courier, mono"]D47E: A6 2C LDA ,Y ; get tens of metres [/font]

[font="Courier New, Courier, mono"]D480: C6 28 LDB #$0A ; B = 10[/font]

[font="Courier New, Courier, mono"]D482: 3D MUL ; multiply tens of metres by 10, storing result in B[/font]

[font="Courier New, Courier, mono"]D483: EB 03 ADDB $1,Y ; add metres to B[/font]

[font="Courier New, Courier, mono"]D485: D7 D3 STB $51 ; store B (whole metres) at $2851[/font]

[font="Courier New, Courier, mono"]D487: C0 27 SUBB #$0F ; subtract 15 from B (whole metres), storing result in B[/font]

[font="Courier New, Courier, mono"]D489: 25 B5 BCS $D4C8 ; branch if throw < 15m[/font]

[font="Courier New, Courier, mono"]D48B: C1 0B CMPB #$23 ; compare B (whole metres - 15) with 35[/font]

[font="Courier New, Courier, mono"]D48D: 25 82 BCS $D499 ; branch if throw was < 50m[/font]

[font="Courier New, Courier, mono"]D48F: 86 01 LDA #$23 ; A = 35[/font]

[font="Courier New, Courier, mono"]D491: 97 D0 STA $52 ; store A at $2852 (init the loop counter)[/font]

[font="Courier New, Courier, mono"]D493: C0 01 SUBB #$23 ; subtract 35 from B (whole metres-15), storing result in B[/font]

[font="Courier New, Courier, mono"]D495: D7 D1 STB $53 ; store B (whole metres - 50) at $2853[/font]

[font="Courier New, Courier, mono"]D497: 20 2C BRA $D49D ; unconditional branch[/font]

[font="Courier New, Courier, mono"]
[/font]

[font="Courier New, Courier, mono"]D499: D7 DA STB $52 ; throw was < 50m so store B (whole metres - 15) at $2852 (init the loop counter)[/font]

[font="Courier New, Courier, mono"]D49B: 0F 7B CLR $53 ; clear $2853 to zero[/font]

[font="Courier New, Courier, mono"]
[/font]

[font="Courier New, Courier, mono"]D49D: 96 DA LDA $52 ; load A from contents of $2852 (this value will be either 35 (if throw was >= 50m) [/font]

[font="Courier New, Courier, mono"] ; or the result of (whole metres - 15) if throw was < 50m)[/font]

[font="Courier New, Courier, mono"]D49F: 27 30 BEQ $D4B3 ; branch if it's zero (no metre multiplier for throws of 15.XXm)[/font]

[font="Courier New, Courier, mono"]D4A1: CE 5E F4 LDU #$DC76 ; point U at the score lookup table (100 points)[/font]

[font="Courier New, Courier, mono"]D4A4: BD F7 96 JSR $D514 ; calculate score, store at $2b74[/font]

[font="Courier New, Courier, mono"]D4A7: 96 7B LDA $53 ; load A from contents of $2853 (whole metres - 50)[/font]

[font="Courier New, Courier, mono"]D4A9: 97 DA STA $52 ; store A at $2852[/font]

[font="Courier New, Courier, mono"]D4AB: 27 2E BEQ $D4B3 ; branch if it's zero (we only get enhanced multiplier if throw > 50m)[/font]

[font="Courier New, Courier, mono"]D4AD: CE 54 F0 LDU #$DC78 ; point U at the score lookup table (200 points)[/font]

[font="Courier New, Courier, mono"]D4B0: BD F7 96 JSR $D514 ; calculate score, store at $2b74[/font]

[font="Courier New, Courier, mono"]
[/font]

[font="Courier New, Courier, mono"]D4B3: A6 00 LDA $2,Y ; get tens of centimetres[/font]

[font="Courier New, Courier, mono"]D4B5: 97 D0 STA $52 ; store at $2852 (init the loop counter)[/font]

[font="Courier New, Courier, mono"]D4B7: 27 27 BEQ $D4C8 ; branch if zero (no score for zero centimetres)[/font]

[font="Courier New, Courier, mono"]D4B9: CE 54 F8 LDU #$DC70 ; point U at the score lookup table (10 points)[/font]

[font="Courier New, Courier, mono"]D4BC: 96 79 LDA $51 ; load A from contents of $2851 (whole metres)[/font]

[font="Courier New, Courier, mono"]D4BE: 81 BA CMPA #$32 ; compare with 50[/font]

[font="Courier New, Courier, mono"]D4C0: 25 21 BCS $D4C5 ; branch if throw was < 50m (we only get enhanced multiplier if throw > 50m)[/font]

[font="Courier New, Courier, mono"]D4C2: CE 5E 50 LDU #$DC72 ; else point U at the score lookup table (20 points)[/font]

[font="Courier New, Courier, mono"]D4C5: BD 57 96 JSR $D514 ; calculate score for tens of centimetres, store at $2b76[/font]

[font="Courier New, Courier, mono"]D4C8: 39 RTS [/font]
 

cmonkey

Active member
vacBacker
Feedback
4 (100%)
Credits
1,658CR
And yet ironically I see it totally the other way around Jon! You're the one with the real skill in my eyes, what I do here is just a bit of fun. Good luck when you attempt the T&F world record.
 

cmonkey

Active member
vacBacker
Feedback
4 (100%)
Credits
1,658CR
The score calculating routine for the hammer throw is almost identical to the javelin, it's just the distance thresholds which differ slightly.

No score for throws of 10.00m or less

100 points per metre for the first 40 metres over the 10m threshold

200 points per metre for anything over 50m

10 points per 10 centimetres (if throw < 50m)

20 points per 10 centimetres (if throw >= 50m)

no points for unit centimetres

Maximum score attainable in hammer throw (for a throw of 99.90m) is therefore 13980 (40*100 + 49*200 + 9*20)

[font="Courier New, Courier, mono"]; hammer throw score calculating routine[/font]

[font="Courier New, Courier, mono"]; score is calculated as follows :-[/font]

[font="Courier New, Courier, mono"]; no score for throws <= 10.00m[/font]

[font="Courier New, Courier, mono"]; for throws > 10.00m : no score for the first 10m of the throw[/font]

[font="Courier New, Courier, mono"]; 100 points per metre for the first 40 metres over the 10m threshold (up to a max of 4000 points)[/font]

[font="Courier New, Courier, mono"]; 200 points per metre for every whole metre over that (throws that are 51.00 or greater)[/font]

[font="Courier New, Courier, mono"]; 10 points per ten centimetres (if throw < 50m) OR 20 points per ten centimetres (if throw >= 50m)[/font]

[font="Courier New, Courier, mono"]D4C9: A6 2C LDA ,Y ; get tens of metres[/font]

[font="Courier New, Courier, mono"]D4CB: C6 22 LDB #$0A [/font]

[font="Courier New, Courier, mono"]D4CD: 3D MUL ; multiply by 10, storing result in B[/font]

[font="Courier New, Courier, mono"]D4CE: EB A9 ADDB $1,Y ; add metres to B[/font]

[font="Courier New, Courier, mono"]D4D0: D7 73 STB $51 ; store whole metres at $2851[/font]

[font="Courier New, Courier, mono"]D4D2: C0 88 SUBB #$0A ; subtract 10 from whole metres, store result in B[/font]

[font="Courier New, Courier, mono"]D4D4: 25 1F BCS $D513 ; branch if throw < 10m (no score)[/font]

[font="Courier New, Courier, mono"]D4D6: C1 AA CMPB #$28 ; compare (whole metres - 10) with a value of 40 [/font]

[font="Courier New, Courier, mono"]D4D8: 25 22 BCS $D4E4 ; branch if throw was < 50m[/font]

[font="Courier New, Courier, mono"]D4DA: 86 A0 LDA #$28 ; A = 40[/font]

[font="Courier New, Courier, mono"]D4DC: 97 7A STA $52 ; store A at $2852 (init the loop counter)[/font]

[font="Courier New, Courier, mono"]D4DE: C0 A0 SUBB #$28 ; subtract 40 from (whole metres - 10), store result in B[/font]

[font="Courier New, Courier, mono"]D4E0: D7 71 STB $53 ; store B (whole metres - 10 - 40) at $2853[/font]

[font="Courier New, Courier, mono"]D4E2: 20 86 BRA $D4E8 ; unconditional branch[/font]

[font="Courier New, Courier, mono"]
[/font]

[font="Courier New, Courier, mono"]D4E4: D7 70 STB $52 ; throw was < 50m so store B (whole metres - 10) at $2852 (init the loop counter)[/font]

[font="Courier New, Courier, mono"]D4E6: 0F D1 CLR $53 ; clear $2853 to zero[/font]

[font="Courier New, Courier, mono"]
[/font]

[font="Courier New, Courier, mono"]D4E8: 96 7A LDA $52 ; A = contents of $2852 (this will be either 40 (if throw was >= 50m) or (whole metres - 10) (if throw was < 50m but > 10m)[/font]

[font="Courier New, Courier, mono"]D4EA: 27 9A BEQ $D4FE ; branch if it's zero (no metre multipler for throws of 10.00m)[/font]

[font="Courier New, Courier, mono"]D4EC: CE F4 FE LDU #$DC76 ; point U at the score lookup table (100 points)[/font]

[font="Courier New, Courier, mono"]D4EF: BD F7 36 JSR $D514 ; calculate whole metre score for first 40m, store result at $2b74[/font]

[font="Courier New, Courier, mono"]D4F2: 96 D1 LDA $53 ; A = contents of $2853 (whole metres - 50)[/font]

[font="Courier New, Courier, mono"]D4F4: 97 70 STA $52 ; store A at $2852[/font]

[font="Courier New, Courier, mono"]D4F6: 27 84 BEQ $D4FE ; branch if zero (we only get enhanced multiplier if throw > 50m)[/font]

[font="Courier New, Courier, mono"]D4F8: CE F4 F0 LDU #$DC78 ; point U at the score lookup table (200 points)[/font]

[font="Courier New, Courier, mono"]D4FB: BD FD 3C JSR $D514 ; calculate whole metre score for metres over 50m, store result at $2b74[/font]

[font="Courier New, Courier, mono"]
[/font]

[font="Courier New, Courier, mono"]D4FE: A6 AA LDA $2,Y ; gets tens of centimetres[/font]

[font="Courier New, Courier, mono"]D500: 97 70 STA $52 ; store at $2852 (init the loop counter)[/font]

[font="Courier New, Courier, mono"]D502: 27 8D BEQ $D513 ; branch if zero (no score for zero centimetres)[/font]

[font="Courier New, Courier, mono"]D504: CE FE F2 LDU #$DC70 ; point U at the score lookup table (10 points)[/font]

[font="Courier New, Courier, mono"]D507: 96 79 LDA $51 ; get whole metre throw distance[/font]

[font="Courier New, Courier, mono"]D509: 81 BA CMPA #$32 ; was the throw < 50m (we only get enhanced multiplier if throw > 50m)[/font]

[font="Courier New, Courier, mono"]D50B: 25 2B BCS $D510 ; branch if throw was < 50m[/font]

[font="Courier New, Courier, mono"]D50D: CE 54 FA LDU #$DC72 ; else point U at the score lookup table (20 points)[/font]

[font="Courier New, Courier, mono"]D510: BD F7 96 JSR $D514 ; calculate score for tens of centimetres, store at $2b76[/font]

[font="Courier New, Courier, mono"]D513: 39 RTS [/font]
 

cmonkey

Active member
vacBacker
Feedback
4 (100%)
Credits
1,658CR
The score calculations for the 100m race are based on 3 tiers.

No score awarded for times of 15.00 or above

For times between 11.00 and 14.99 : ((14 - number of whole seconds) * 2000) + ((100 - subseconds) * 20)

For times between 10.00 and 10.99 : (4 * 2000) + ((100 - subseconds) * 30)

For times less than 10.00 : (whole seconds less than 10 * 3000) + (4 * 2000) + ((100 - subseconds) * 30)

Of course you're probably already familiar with the Easter Egg in the 100m and 110m hurdles whereby if you finish with exactly the same time as the opponent you will receive a 1000 point bonus. If you're playing against another human, rather than the CPU, then both players will receive the bonus.

[font="Courier New, Courier, mono"]; score calculating routine for the 100m race[/font]

[font="Courier New, Courier, mono"];[/font]

[font="Courier New, Courier, mono"]; score is calculated as follows :-[/font]

[font="Courier New, Courier, mono"]; no score for times of 15.00 or above[/font]

[font="Courier New, Courier, mono"]; for times between 11.00 and 14.99 : ((14 - number of whole seconds) * 2000) + ((100 - subseconds) * 20)[/font]

[font="Courier New, Courier, mono"]; for times between 10.00 and 10.99 : (4 * 2000) + ((100 - subseconds) * 30)[/font]

[font="Courier New, Courier, mono"]; for times less than 10.00 : (whole seconds less than 10 * 3000) + (4 * 2000) + ((100 - subseconds) * 30)[/font]

[font="Courier New, Courier, mono"];[/font]

[font="Courier New, Courier, mono"]D3CE: A6 2C LDA ,Y ; get tens of seconds (BCD value)[/font]

[font="Courier New, Courier, mono"]D3D0: C6 28 LDB #$0A[/font]

[font="Courier New, Courier, mono"]D3D2: 3D MUL ; multiply by 10 and store result in B[/font]

[font="Courier New, Courier, mono"]D3D3: EB 03 ADDB $1,Y ; add BCD seconds value to B[/font]

[font="Courier New, Courier, mono"]D3D5: D7 D3 STB $51 ; store whole seconds result at $2851[/font]

[font="Courier New, Courier, mono"]D3D7: C1 27 CMPB #$0F ; compare B with 15[/font]

[font="Courier New, Courier, mono"]D3D9: 24 C2 BCC $D425 ; branch if B >= 15 (no score if time is greater than 15.00)[/font]

[font="Courier New, Courier, mono"]D3DB: C6 26 LDB #$0E ; B = 14[/font]

[font="Courier New, Courier, mono"]D3DD: D0 D9 SUBB $51 ; subtract player's whole seconds from 14, storing result in B[/font]

[font="Courier New, Courier, mono"]D3DF: C1 26 CMPB #$04 ; compare result with a value of 4[/font]

[font="Courier New, Courier, mono"]D3E1: 25 88 BCS $D3ED ; branch if whole seconds are > 11[/font]

[font="Courier New, Courier, mono"]
[/font]

[font="Courier New, Courier, mono"]; player's time is less than 11.00 seconds[/font]

[font="Courier New, Courier, mono"]D3E3: 86 26 LDA #$04 ; A = 4[/font]

[font="Courier New, Courier, mono"]D3E5: 97 D0 STA $52 ; store at $2852 (init the loop counter)[/font]

[font="Courier New, Courier, mono"]D3E7: C0 2C SUBB #$04 ; subtract 4 from B[/font]

[font="Courier New, Courier, mono"]D3E9: D7 DB STB $53 ; store result at $2853 (number of whole seconds less than 10)[/font]

[font="Courier New, Courier, mono"]D3EB: 20 2C BRA $D3F1 ; unconditional branch[/font]

[font="Courier New, Courier, mono"]
[/font]

[font="Courier New, Courier, mono"]; player's time is between 11.00 and 14.99 [/font]

[font="Courier New, Courier, mono"]D3ED: D7 DA STB $52 ; store 14 - player's seconds at $2852 (init the loop counter)[/font]

[font="Courier New, Courier, mono"]D3EF: 0F 71 CLR $53 ; clear $2853 to zero[/font]

[font="Courier New, Courier, mono"]
[/font]

[font="Courier New, Courier, mono"]D3F1: 96 D0 LDA $52 ; get 14 - player's seconds[/font]

[font="Courier New, Courier, mono"]D3F3: 27 30 BEQ $D407 ; branch if zero (no whole second multiplier for times between 14.00 and 14.99)[/font]

[font="Courier New, Courier, mono"]D3F5: CE 5E FC LDU #$DC7E ; point U at the score lookup table (2000 points)[/font]

[font="Courier New, Courier, mono"]D3F8: BD FD 9C JSR $D514 ; calculate score for (14 - whole seconds)[/font]

[font="Courier New, Courier, mono"]D3FB: 96 7B LDA $53 ; get contents of $2853 into A (number of whole seconds under 10 seconds)[/font]

[font="Courier New, Courier, mono"]D3FD: 97 DA STA $52 ; store at $2852 (init the loop counter)[/font]

[font="Courier New, Courier, mono"]D3FF: 27 24 BEQ $D407 ; branch if zero (no enhanced multiplier if time was not under 10 seconds)[/font]

[font="Courier New, Courier, mono"]D401: CE 5E 02 LDU #$DC80 ; point U at the score lookup table (3000 points)[/font]

[font="Courier New, Courier, mono"]D404: BD F7 96 JSR $D514 ; calculate score for whole seconds under 10[/font]

[font="Courier New, Courier, mono"]
[/font]

[font="Courier New, Courier, mono"]; now calculate score for subseconds (tenths/hundredths of seconds)[/font]

[font="Courier New, Courier, mono"]D407: A6 0A LDA $2,Y ; get tenths of seconds (BCD value)[/font]

[font="Courier New, Courier, mono"]D409: C6 82 LDB #$0A [/font]

[font="Courier New, Courier, mono"]D40B: 3D MUL ; multiply by 10 and store result in B[/font]

[font="Courier New, Courier, mono"]D40C: EB 0B ADDB $3,Y ; add BCD hundredths of seconds to B[/font]

[font="Courier New, Courier, mono"]D40E: D7 D8 STB $50 ; store at $2850[/font]

[font="Courier New, Courier, mono"]D410: 86 46 LDA #$64 ; A = 100[/font]

[font="Courier New, Courier, mono"]D412: 90 D2 SUBA $50 ; subtract subseconds from 100 and store result in A[/font]

[font="Courier New, Courier, mono"]D414: 97 70 STA $52 ; store that result at $2852 (init the loop counter)[/font]

[font="Courier New, Courier, mono"]D416: CE 5E 5C LDU #$DC74 ; point U at the score lookup table (30 points)[/font]

[font="Courier New, Courier, mono"]D419: 96 D9 LDA $51 ; get whole seconds from player's finishing time[/font]

[font="Courier New, Courier, mono"]D41B: 81 23 CMPA #$0B ; compare with 11[/font]

[font="Courier New, Courier, mono"]D41D: 25 8B BCS $D422 ; branch if player's finishing time was less than 11.00 seconds[/font]

[font="Courier New, Courier, mono"]D41F: CE FE 50 LDU #$DC72 ; else point U at the score lookup table (20 points)[/font]

[font="Courier New, Courier, mono"]D422: BD 57 36 JSR $D514 ; calculate the score for the subseconds [/font]

[font="Courier New, Courier, mono"]D425: 39 RTS [/font]

[font="Courier New, Courier, mono"]
[/font]

[font="Courier New, Courier, mono"]
[/font]
 

cmonkey

Active member
vacBacker
Feedback
4 (100%)
Credits
1,658CR
tronads said:
Have you seen anything to indicate why the first throw on the javelin is always less distance regardless of your speed / angle ?

I haven't, but then again I've been concentrating all my efforts on the score calculating algorithms themselves rather than looking for strange behaviours in the game engine. Do you have any kind of proof that the first throw on the javelin is always less distance than the second/third throws if the speed/angle are the same on all 3 throws? A video to prove this perhaps? If it's repeatable behaviour then I'll be able to figure out why the game engine does this.
 
Top