Game objectives
- Emulator used: BizHawk 2.8.0
- best ending
Note: this game depends on an uninitialized RAM state, and the optimal TAS solution varies for different platforms (GB/GBC/GBA). I will describe the details later.
I chose GBA-mode for console verification purpose. Thanks to ViGadeomes for resyncing the original GB-mode movie.
To achieve the best ending, you have to earn $5,963,776.
For this purpose, it will be fastest to get a jackpot (about $5,000,000) of $5 slot machine twice. (It is a little slower to use a jackpot (about $1,000,000) of $1 slot machine)
The RNG of this game is frame-dependant, and it converts frame counter into random number.
The reel value of a slot machine is determined by the timing which you operate (insert coin and pull the arm) the slot machine.
In conclusion, you can get black seven if you operate when the frame counter is 0x0A, 0x4B, 0x6A, or 0xA8.
This follows from the tables below:
The route of cursor movement is important, because the screen starts to scroll after you move cursor to the same direction for a while.
In this run, I did the first slot machine operation just in time.
I put some useful memory (logical) addresses:
address | description |
---|
$C0C0 | frame counter |
$C0C4-$C0C7 | random number buffer |
$C0C8-$C0CB | reel values of slot machine |
$C0D7 | whether the condition of the best ending is fulfilled |
$C0D8 | money ($25600 units) |
$C0D9 | money ($100 units) |
$C0DA | money ($10 units) |
$C0DB | money ($5 units) |
$C0DC | money ($1 units) |
$C0DE | money (u24le) |
$C0F5 | screen scroll x |
$C0F6 | screen scroll y |
$C0F9 | cursor x |
$C0FA | cursor y |
The frame counter ($C0C0) is not initialized on a boot, and its initial value varies for different platforms (GB/GBC/GBA).
So, the optimal TAS solution also varies for different platforms (GBC/GBA movies are thanks to ViGadeomes):
The number 5963776 is 0x5B0000 in hex. But I'm not sure where the number comes from.
"5963" seems to be the pun on a Japanese word "ご苦労さん", but it might be just an accidental coincidence.
("ご苦労さん" means "Thanks for your hard work" with a bit of sarcasm)
feos: Claiming for judging.
feos: The fact that optimal memory values depend on uninitialized RAM is not a problem as long as you don't edit the initial startup state
arbitrarily. Even though console startup states are not fully deterministic, they are not completely random and
depend on certain hardware world factors.
When it comes to emulation, we can simulate some real-world hardware factors, but in TASing we can't afford non-determinism. So most emulators enforce a startup state that makes overwhelming majority of games work correctly, even if there's no real-world precedent for that exact state. There are emulators that can be configured to replicate actual device startup states more precisely than usual, and it's mostly fine to use those explicit options. Because even if they are not absolutely accurate, they are very compatible, and on top of that, they guarantee even chances for a speed competition.
Even then, the core used in all 3 movies does not provide options for tweaking the startup state, and using
emulator defaults in that regard is 100% legitimate for all our needs.
feos: Restored judgment text that got lost to concurrent editing.
feos: Added original movie's rerecord count.