| |
jcompton
Registered: Feb 2006 Posts: 70 |
Release id #164803 : Star Trek - The Rebel Universe
Attention underemployed trainers looking to be the first to address a long-standing issue! Please consider offering a trainer that neutralizes the effects of the Catastrophe Pods, Mike Singleton's regrettable design decision that makes the game stupidly difficult to play without constant restarting.
https://www.lemon64.com/reviews/view.php?id=990 |
|
| |
bugjam
Registered: Apr 2003 Posts: 2579 |
Good idea - I think this game sure deserves a Gold version. I really dig that highres design. |
| |
jcompton
Registered: Feb 2006 Posts: 70 |
A worthy project, the motion is seconded.
Now, to find a taker... |
| |
jcompton
Registered: Feb 2006 Posts: 70 |
It really is a pretty clever game. The exploration elements of Elite, with more resource management, and planetary missions. |
| |
AlexC
Registered: Jan 2008 Posts: 298 |
Quote: A worthy project, the motion is seconded.
Now, to find a taker...
I guess more of challenge is to find an original today than to find a taker ;) |
| |
jcompton
Registered: Feb 2006 Posts: 70 |
Nah, both NTSC and PAL originals are in C64PP. |
| |
Exploding First
Registered: Jul 2007 Posts: 76 |
In 1989 i got the original tape paid by mother. It was about 50 DM. Really expensive in these days. After this purchase i got no original games anymore. I've still got it. |
| |
Krill
Registered: Apr 2002 Posts: 2968 |
Try this:POKE 4324,173 i.e., freeze the game, set $10e4 to $ad, restart.
This disables the "Catastrophe Pod" countdown so they never explode once you have contracted them.
You don't need to get rid of them now, but you can probably still remove them via an "Orbital Discontinuum", though i haven't tested that.
With that poke, there is technically no need to release a trained version or find the original. This little "project" cost me a few hours to dig into the game and find the magic instruction to nix, though. :) |
| |
jcompton
Registered: Feb 2006 Posts: 70 |
Nicely done! Any chance you found the seed for the random galaxy generator while you were poking around in there? :) (Presumably there's a bit more to it than, say, the Elite generator since some planets have fixed characteristics that allow you to satisfy victory conditions...) |
| |
Krill
Registered: Apr 2002 Posts: 2968 |
Didn't come across this. I found that at least one system is always close to the starting point and always has the "Catastrophe Pods" on the same planet, and i didn't play the game long enough to notice that there are any variable system/planet properties from one run to the next.
I actually assumed the universe would always be the same.
What's different across runs? |
| |
jcompton
Registered: Feb 2006 Posts: 70 |
You're right, it is always the same. In order to fit ~4000 systems into a single-load game, there's gotta be some sort of procedural routine working from a fixed random seed, ala the Elite galaxy generator documented here: http://wiki.alioth.net/index.php/Random_number_generator
(just with Mike Singleton special sauce instead of Bell-and-Braben special sauce.) |
| |
Krill
Registered: Apr 2002 Posts: 2968 |
Yeah, so with the pseudo-random number generator's seed always being the same, what were you aiming at?
Snippets of code implementing the procedural universe generation? :) |
| |
jcompton
Registered: Feb 2006 Posts: 70 |
One of the ways to make playing Elite a little fresher is to put in a new seed, since every planet will be entirely different.
It would be interesting to see what new and nearly-unlimited Rebel Universes might be created by changing just a few bits in the seed... |
| |
Krill
Registered: Apr 2002 Posts: 2968 |
Ah, i see. There might be a handy seed value somewhere in memory to just change for different universes, but there might also be many interlocked pieces of code so changing the effective seed without breaking things might be very difficult. |
| |
jcompton
Registered: Feb 2006 Posts: 70 |
Oh, agreed, it might be an unplayable mess without anything except for the One True Seed they built everything around. I'd just be curious to see that unplayable mess (or wondrous new galaxy) if anybody happens to know where those bytes live, that's all. :)
Thank you for finding the Catastrophe Pod routine and providing the quick patch. |
| |
Krill
Registered: Apr 2002 Posts: 2968 |
Quoting jcomptonthe One True Seed There might be many good seeds, but with unknown constraints on the seed number. Such as certain bits have to be clear or set, or the sum of all bytes must be zero, things in that vein. "Somebody" "should" "some time" have a look at what's really there. :)
But this reminds me of Artefacts, where i needed to find seed values that would make for exciting enough differences from one loop to the next and also not generate boring or ugly stuff within the first 5 or so minutes. The values were even different for PAL and NTSC versions, iirc. |
| |
jcompton
Registered: Feb 2006 Posts: 70 |
Like so?
.ifdef NTSC_VERSION
getrandom: eor Artefacts+$0655
.else
getrandom: eor Artefacts+$0653
.endif
(I had never seen Artefacts before! Thank you for mentioning it.) |
| |
Krill
Registered: Apr 2002 Posts: 2968 |
Indeed. Also note how that is a very very cheap pseudo-random number generator, nothing like a linear feedback shift register or the like.
But it turned out that simply reading the numbers from the re-interpreted actual program code (with the initial position acting as the seed) was random enough for my purposes. :) |
| |
Krill
Registered: Apr 2002 Posts: 2968 |
Ok, i dug a little deeper and found that no, there does not appear to be any kind of handy little seed value to play with.
Instead, there is some kind of star map with 512 byte-sized entries at $f623 plus a global "Quarantine Zone" map with 20 entries at $f60f.
System coordinates and properties seem to be derived from the entries in those maps, and the systems' names are generated from their coordinates.
The maps are readily there in memory after loading/depacking, and i haven't found any code to generate them.
So for playing around with alternative universes, you'd have to create those maps yourself, with all the unknown constraints. So... =) |
| |
jcompton
Registered: Feb 2006 Posts: 70 |
Still very cool information. Not surprising that with all of the constraints (like multiple specific paths to winning the game) they'd have to give over more data than just a six-byte seed. Thanks for digging in!
(meanwhile I have been enjoying tweaking the Artefacts seed at $1bcd, although have yet to come up with anything nearly as good as the one it ships with. Occasionally there's one where the artifact is just a rectangular slab with very little detail in sky or ground, that's kind of interesting...) |
| |
Krill
Registered: Apr 2002 Posts: 2968 |
Not sure about the constraints in this case, though.
I overwrote the star map once with the same value all over the place, and then the wireframe rebel ship was quite broken. So it could be that they actually re-used other data (namely the ship wireframe vectors) for the star map. :) |
| |
Krill
Registered: Apr 2002 Posts: 2968 |
And as for tweaking the seed in Artefacts, there are only 256 different values, iirc, at least once it's running (you can set the seed to any 16-bit pointer value, but only the low byte is increased).
The routines would just linearly read one value whenever they need some randomness and advance the read pointer, until the low byte wraps. Some runs look pretty bad then for a given routine. Mind that the re-purposed program code is not that random, after all.
There should still be more than 256 different variations as the loops keep progressing, but i have never checked the amount of read random numbers per loop, or if it is prime. :D |
| |
jcompton
Registered: Feb 2006 Posts: 70 |
I think there's another source (Local Zone?) of map data somewhere. As an experiment I filled the $f60f Quarantine Zone area with 20 bytes from random.org and the $f623 with another 512 bytes from the same site.
The Quarantine Zone was totally different, but the Local Zone still had very recognizable names, like Dizok at 53.46.03 05 LY away. (It's one of the first planets "above" your start location on the Local Zone map.)
(bytes for the curious:
$f60f: 1b 0f ca 10 f7 54 2c 32 15 10 b5 a6 1d ac d5 46 60 52 69 07
$f623: 3a 8b 03 84 aa 97 e4 5a b1 14 4a 94 49 d2 f7 ad c9 47 60 c2 92 bf 81 73 38 3d f9 ab 0f 6e 6b 59 fe 32 cf b5 db 36 17 91 06 4b f3 1d f8 84 a5 14 ca ff 43 5d 8f 40 9a 50 71 46 84 df a0 40 bb 80 4b 76 c3 4f 5f a7 d2 13 06 fe 3f ee d1 d0 c9 75 e0 f7 94 7a 3f 59 25 5f ac 24 67 eb b0 9c 5d 78 25 4e e8 68 c8 3b 9b 02 40 e1 a3 97 c5 33 d8 63 7a f0 11 10 6b 30 b9 ab f2 43 71 f9 1a c1 63 0f d4 a4 ed 25 39 a7 62 ea a4 01 e6 a8 f8 ee e6 40 27 99 8b 2b 65 f2 b6 5b b3 ca 8b 60 dc 1d 58 a8 95 76 4c 2e 99 29 78 63 bb bc 24 5e ec 10 a3 11 eb 05 c5 9e 72 0f 00 ea 65 d6 64 95 25 75 ce 4d a8 d3 1c d2 ea 44 6e b7 66 75 bf d7 2c b4 f0 a9 9b 1a 3c bb bd e8 9b 8a aa 89 71 ae 72 c0 e9 c8 9f dc 01 23 98 80 68 b9 2c 68 00 8f 78 b9 d1 52 4d 98 a4 73 4f b2 ec 01 f0 49 02 49 83 1f 81 f1 27 8f 85 b8 45 32 70 bc 23 87 f2 38 99 99 62 33 1d 35 a8 fc 1b 11 02 27 44 e8 f7 a8 82 9a 06 9e 04 f8 ff 96 39 86 a2 02 66 3a 11 fb 24 77 b0 3b 62 0e e5 9f bb 84 12 86 ac 48 d7 4b 4f 62 d7 b0 11 d2 d1 5a 1d 97 9f c6 3e f3 d2 33 e8 5b 5b 82 fa 25 b7 f9 c0 ba e9 59 66 28 53 8d a2 a5 4d be d6 33 9a 88 48 62 bf 7a cd af 22 e9 95 db 7c 8e fe ee 3d 12 91 f2 32 d9 c3 71 40 0f 00 ec 50 9d b1 c5 e8 67 20 62 9f a4 c2 00 71 7a 8b 53 10 9e
b8 f6 01 e8 a3 27 cb a0 fa 31 b4 a0 a8 1a 47 50 5a 86 76 ad dc e1 10 d5 76 72 6f 16 35 6e 30 c4 c5 c8 55 a5 bc bd 84 10 cf a7 d3 e2 c1 fd 42 99 2b 43 74 47 eb 1a 27 01 c4 f9 f9 44 9f bc b3 f0 02 ed 9e 55 87 c9 97 50 06 9a 3e f9 0b 30 3b a4 38 3c 2a 76 dc 4e 90 d8 d1 cc 47 41 17 d9 b9 88 f4 19 de 7e 48 fe ad c7 d2 26 01 d5 e2 28 e0 e6 |
| |
Krill
Registered: Apr 2002 Posts: 2968 |
Quoting jcomptonthe Local Zone still had very recognizable names, like Dizok at 53.46.03 05 LY away. (It's one of the first planets "above" your start location on the Local Zone map.) Quoting Krilland the systems' names are generated from their coordinates. It's not surprising that systems at (approximately?) the same position always have the same name, regardless of the actual star map. |
| |
Krill
Registered: Apr 2002 Posts: 2968 |
Quoting jcomptonAttention underemployed trainers looking to be the first to address a long-standing issue! Please consider offering a trainer that neutralizes the effects of the Catastrophe Pods, Mike Singleton's regrettable design decision that makes the game stupidly difficult to play without constant restarting.
https://www.lemon64.com/reviews/view.php?id=990 Quoting KrillPOKE 4324,173
i.e., freeze the game, set $10e4 to $ad, restart.
This disables the "Catastrophe Pod" countdown so they never explode once you have contracted them. jcompton: Maybe you could add the POKE somewhere in your Lemon review or another prominent place where other users with your gripe would find it? :) |
| |
jcompton
Registered: Feb 2006 Posts: 70 |
Reasonable idea, I PM'ed a moderator, let's see what happens. |
| |
jcompton
Registered: Feb 2006 Posts: 70 |
They put the info on the Lemon game profile page: https://www.lemon64.com/games/details.php?ID=2456 |
| |
Krill
Registered: Apr 2002 Posts: 2968 |
Excellent! =) |
| |
Krill
Registered: Apr 2002 Posts: 2968 |
I just noticed that this game's tape version Star Trek - The Rebel Universe differs significantly from the disk version Star Trek - The Rebel Universe - apart from the tape version having no intro screen with the theme tune.
So the "Catastrophe Pod" trainer poke is different:
Tape: POKE 4302,173 (> $10ce $ad)
Disk: POKE 4324,173 (> $10e4 $ad) Note how pretty much all the code is shifted up in memory for the disk version. The latter seems to have been made later, as it has more code (ends 8 bytes higher up in memory), with more code added in between and some routines shuffled around. The disk version seems to be a later build from a patched source.
Now the question is, apart from their binaries, do both versions differ noticeably, in gameplay or otherwise?
The tape version seems to exist in bugfixed ("100%") versions, but i haven't yet found out what was changed by the crackers there, and if those fixes are present in the disk version. |
| |
Count Zero
Registered: Jan 2003 Posts: 1920 |
Thanks for using the term "POKE" :) Triggered me to add it to https://rr.c64.org/wiki/Pokes:Star_Trek_-_The_Rebel_Universe_(T..) and (Disc) .. which triggers a bad url parser here :)
That linked Derbyshire Ram version ( Star Trek - The Rebel Universe ) has an obvious text output bug at start immediately on clicking Kirk though - the Pulsar version ( Star Trek ) is fine.
Wonder what made Derby call that 100% :) |