Posts for DigitalDuck

Experienced Forum User, Published Author, Active player (319)
Joined: 12/20/2022
Posts: 33
Location: UK
Patashu wrote:
Manic Miner Jet Set Willy Dizzy Treasure Island Dizzy
Done. As for my personal wishlist, there are lots of games I'd like to see TASed and it's certainly beyond my abilities to do them all, even if I had infinite time. Miner Willy series:
  • Manic Miner (1 loop, Max Score)
  • Jet Set Willy (any%, WRITETYPER)
  • Jet Set Willy II (any%, 100%)
  • Jet Set Willy II+e.22 (any%, 100%)
  • Jet Set Willy Nightmare Edition
  • Manic Panic
  • Jet Set Willy Altered Reality
  • Manic Jet Set Willy
Dizzy series:
  • Dizzy: The Ultimate Cartoon Adventure (any%, Max Score)
  • Treasure Island Dizzy (any%, Max Score)
  • Fantasy World Dizzy
  • Magicland Dizzy
  • Spellbound Dizzy
  • Dizzy: Prince of the Yolkfolk
  • Crystal Kingdom Dizzy (any%, All Perfects)
  • Crystal Kingdom Dizzy Remake
  • Wonderful Dizzy
  • Fast Food
  • Kwik Snax (any%, All Perfects)
  • Panic Dizzy
  • Dizzy Down the Rapids
Other classic Spectrum games I'd like to see/do:
  • The Trap Door (any%, Max Score)
  • Jetpac
  • Lunar Jetman
  • Destructo
  • Chaos: The Battle of Wizards
  • Lords of Chaos
  • Spindizzy
  • Ant Attack
  • Skool Daze
  • Back to Skool
  • Equinox
  • Highway Encounter
  • Alien Highway
  • Cauldron
  • Cauldron II: The Pumpkin Strikes Back
  • Quazatron
  • Strike Force Cobra
  • The Way of the Exploding Fist
  • Firelord
  • Uridium/Uridium Plus
Other modern Spectrum games I'd like to see/do:
  • Jumpin' Jupiter (+ Prelude)
  • Last Train to Tranz Central (Part 1, Part 2)
  • Just a Gal
  • Bonnie and Clyde
  • Cocoa and the Time Machine
  • Cocoa 2: Twenty Four Hour Parsley People (Episode 1, Episode 2 any%, Episode 2 100%, Episode 3)
  • Valley of Rains
  • DRIFT! (any%, Max Score)
  • DRIFT! 2K22 (any%, Max Score)
  • The Dark Redux (+ Lost Pages)
  • Travel Through Time (Story, EVA)
  • Lava
  • The Swarm is Coming
  • Angels
  • Lava Birds
  • Metal Man Remixed
  • Rubinho Cucaracha
  • Hakkenkast
  • Don Quioxte
  • 🔺🟢🟦
I'd also like to see Tau Ceti and The Sentinel, but anything that can be considered a completion for these are very long (although I guess shorter than Desert Bus Max Score).
Experienced Forum User, Published Author, Active player (319)
Joined: 12/20/2022
Posts: 33
Location: UK
zaphod77 wrote:
Now you patch the load routine so that after the load is finished, and before the routine returns, it JSRS to another bit of code you poked in that changes the RAM of the game. say, to disable sprite to sprite collision checks. it just patches blind.
I'd argue this is where it fails - you're not loading the game with the standard loader anymore, you've created a custom loader, which is explicitly not allowed.
Experienced Forum User, Published Author, Active player (319)
Joined: 12/20/2022
Posts: 33
Location: UK
zaphod77 wrote:
Pokes can be used to do many things that are not okay. for example you can poke in a small ML routine, and then redirect a vector to it and that could affect the game later. It's very possible if you are clever enough to add a cheat before load by pure POKEing.
Can you give an example of POKEs done before load that add a cheat to the game in some way? I'm not aware of any way to change the system in such a way that performing the standard LOAD command results in the game being modified, but I'd be interested to see otherwise.
Experienced Forum User, Published Author, Active player (319)
Joined: 12/20/2022
Posts: 33
Location: UK
Thanks for the review!
Faddy3 wrote:
One other thing I forgot. on publication of the original Dizzy TAS there is of course a lengthy part of the video that is just loading the game with rather annoying sounds. Of course timing should start from power on but for the sake of Youtube could whoever uploads this to the official TAS channel put in a chapter mark that allows people to jump easily to when the game has finished loading.
It would be nice to have this as a general feature for microcomputer runs - even when loading from disk a large portion of the start of the run is loading, and this is obviously far worse when loading from tape. A timestamp for when the loading finishes would go a long way, at least for games only have the one initial load. At the same time, within minutes of the video going live there are always four comments with said timestamp (and twelve more complaining about the loading sound). It's probably not a necessity.
Experienced Forum User, Published Author, Active player (319)
Joined: 12/20/2022
Posts: 33
Location: UK
Eyy, this was one on my eventual to-do list, glad to see it getting done. Good work.
Experienced Forum User, Published Author, Active player (319)
Joined: 12/20/2022
Posts: 33
Location: UK
feos wrote:
It looks similar to arbitrarily setting OS time during your PC game movie. The OS allows to set it freely and directly, so as long as you don't change the game it's legitimate. With Spectrum and C64, BASIC was the way to use the system, so setting system variables that way also sounds good. If the game doesn't break from your system tweaks, even the current rules already allow it. And even if it breaks, as long as the system explicitly exposes such a setting to the user, it also feels okay to at least have it as a separate branch. We've had this with Flash games that would work very differently if you resize the window arbitrarily, which was entirely possible with original Adobe Flash Player, but looked like a one-off exception, so it was unclear how to handle it officially. Now I'm getting the bigger picture.
This is clear and essentially matches the consensus, thanks for the confirmation.
Experienced Forum User, Published Author, Active player (319)
Joined: 12/20/2022
Posts: 33
Location: UK
So I've been speedrunning for a few years now and gained a reputation for running Spectrum games (even though I run lots of other games too, it's just that not many other people do Spectrum games); I decided to get into tool-assisted runs of the games I'm more familiar with, as there aren't many of those for the Spectrum either (especially when it comes to the more classic games) and submitted a couple of movies already. But I have a query which affects future submissions of mine... The Spectrum, like many microcomputers of the era, boots into a BASIC prompt. This allows the user to enter programs and modify memory with simple commands, as normal and expected usage of the computer. On a few occasions, developers have issued patches to their games in the form of programs you type in and run before loading the game, and it would seem silly to not allow it for these cases. On the other hand, this also means you can write your own patches to do literally anything, and completely trivialise any game by removing all enemies, starting in the end room, or just overwriting the code with an entirely new game, and this would obviously not be in the spirit of the game - they're effectively the same as Game Genie codes, which are typically banned. The grey area comes with manipulating memory before loading a game. The aforementioned patches typically work by writing a custom loader, which then ignores the original game's loader and runs its own instructions after loading the game data. If the original game's loader is used, and isn't modified in any way, it's not possible to patch the game as the game data will overwrite data currently in memory. However, it's rare for game data to load and fill the entire RAM, and usually certain areas of memory are deliberately left untouched; especially system variables. Many games use the FRAMES variable (3 bytes at 0x5C78), which counts the number of frames since the computer was turned on, to seed the random number generator. This variable can be set by the user manually before loading the game to manipulate RNG; this doesn't require a special loader and doesn't change any of the game data - should this be allowed? Some games use built-in system routines and fail to set system variables before using them (e.g. using the BASIC keyboard interpreter without setting auto-repeat times); these could easily be changed before loading the game to modify behaviour without modifying the game itself. Should this be allowed? Some games read general memory not loaded or initialised by the game itself; it could easily be the case that, in normal and expected usage of the system, this memory just happens to be set to something beneficial to the run. Should this be allowed? We discussed this a couple of years ago with regards to RTA speedrunning in the Speedtrum Specrunning Discord, and came to the conclusion that as long as the game is loaded from the very start, using the standard LOAD "" in regular Spectrum BASIC, the built-in Tape Loader (for 128K machines and later), or using a type-in program provided by the developer themselves, any prior activity is allowed, including any arbitrary setting of system variables. However, all custom loaders (save for the aforementioned developer provided ones) are prohibited, as is interrupting the loading process to modify memory during or after loading. There are a couple of justifications for this: 1. RNG manipulation can make or break some runs, and runners playing on real hardware are already at a massive disadvantage when it comes to waiting four minutes for the game to load between attempts - imagine if they had to load the game dozens of times just to get the right seed! Allowing the FRAMES variable to be set reduces this discrepancy significantly. (There are still issues with getting the right seed due to tape loading times, and we don't recommend loading from tape as a result, but still...) 2. Other memory addresses not being initialised correctly is an existing bug in the game; no bug or glitch is being introduced or added, merely exploited, and exploiting bugs is a natural part of speedrunning. Obviously 1 is not a consideration for a TAS; but even so I lean towards allowing this as it massively lowers the discrepancy between minimising actual gameplay time and minimising the TAS frame count. (What if waiting 20 minutes before loading the game means you can complete it a few seconds faster? An extreme example for sure, but possible.) I haven't tagged this as [ZXS] as this can also apply to C64 games, as well as CPC in the future. TL;DR: do I have to load a game with LOAD "" or can I load it with POKE 23673,42: LOAD "" ?
Experienced Forum User, Published Author, Active player (319)
Joined: 12/20/2022
Posts: 33
Location: UK
Darkman425 wrote:
At the 9:59 mark in the YouTube encode (starting at frame 39476 of the input file) at the end of The Warehouse I noticed a bunch of keys being pressed in the input display. I assume this only has a hidden message in the inputs when observed and doesn't affect gameplay?
Correct - it's impossible to get past the first trolley without a long wait, so I added a small message in the middle. It never presses a key while the game is checking for that key so it has zero impact on gameplay.
Darkman425 wrote:
I did get this to sync with the Software Productions Ltd. .tzx version of the game. There is an alternate version with a different hash but I didn't test if the run would sync on that version, though I assume not due to possible different tape loading times.
The tape loading is almost exactly the same, and it's possible it does sync early on, but the reason I explicitly use the Software Projects version is that the graphical changes in The Warehouse mean you can complete it a single in-game frame faster.
Darkman425 wrote:
For my point of comparison, I used the publication for the GBA version to check any possible route differences: [2762] GBA Manic Miner by DaJaWi in 13:15.73 General observations:
  • Obstacles move faster in the GBA version so a lot of the differences in routing is due to different waiting cycles.
  • The GBA version gives Willy a larger vertical hitbox for gathering treasures both above and below him. This does change how the GBA run approached some stages.
For the most part enemy cycles are the same or at least similar enough to be comparable - the whole game in general runs faster on the GBA, and most routes that work on the Spectrum version also work just as well on the GBA (only exceptions due to enemy cycles as far as I know are Wacky Amoebatrons and The Warehouse). The item collection difference is quite significant (major effects on Ore Refinery and The Warehouse), but more significant is the conveyor behaviour. On the GBA version, you can run against a conveyor as long as you are facing in that direction, but on the Spectrum version you must already be moving in that direction. Central Cavern, Eugene's Lair, Skylab Landing Bay, The Sixteenth Cavern, and Solar Power Generator all need very different routes for both versions because of this (in The Sixteenth Cavern, the reason the GBA run has to avoid the top-right flag bug is because you can't hold your position on the conveyor without turning around, and you don't have a frame to spare to turn around again after you jump up). I'd like to go through the GBA version and try to improve it at some point; from what I can tell, The Menagerie, The Endorian Forest and The Warehouse should be doable the way the Spectrum version does it (with a few minor changes for The Warehouse) and there are a couple of frames to be saved in some of the GBA exclusive levels too. Thanks for the review!