Submission #8315: eien86's NES Arkanoid "warpless" in 10:56.12

(Link to video)
Nintendo Entertainment System
warpless
EmuHawk 2.9.0 (Core: NesHawk)
39432
60.0988138974405
0
PowerOn
Arkanoid (U) [!].nes
Submitted by eien86 on 6/4/2023 11:34:33 AM
Submission Comments

Introduction

This movie improves 905 frames (15 seconds) off award-winning [3943] NES Arkanoid "warpless" by Chef Stef in 11:11.18

Software + Hardware

Rom Information

Rom: Arkanoid (U) [!]
  • SHA1: 230FC31D2C2EB20E78711C82574F29F28117EBA3
  • MD5: 0CCC1A2FE5214354C3FD75A6C81550CC

Emulator

  • EmuHawk 2.9.0 (Core: NESHawk)

Routing Bot

  • Bot: JaffarPlus
  • Routing Core: QuickNES
  • Platform: 'The Jaffanator' - AMD Ryzen Threadripper 3990X (64 cores, 128 threads) + 256Gb RAM (Average Exploration Performance: 1.2M States/s)

Comparison Movie & Timing


               Old           New          Diff
   Round     Initial Total Initial Total  Stage  Total
    Boot          0    566      0    566      0      0
     1          566    989    566    975    -14    -14
 Transition    1555    296   1541    296      0      0
     2         1851    826   1837    822     -4     -4
 Transition    2677    296   2659    296      0      0
     3         2973    605   2955    591    -14    -14
 Transition    3578    296   3546    296      0      0
     4         3874    759   3842    720    -39    -39
 Transition    4633    296   4562    296      0      0
     5         4929   1027   4858    956    -71    -71
 Transition    5956    296   5814    296      0      0
     6         6252    489   6110    489      0      0
 Transition    6741    296   6599    296      0      0
     7         7037    622   6895    605    -17    -17
 Transition    7659    296   7500    296      0      0
     8         7955    249   7796    266     17     17
 Transition    8204    296   8062    296      0      0
     9         8500    508   8358    508      0      0
 Transition    9008    296   8866    296      0      0
     10        9304    697   9162    697      0      0
 Transition   10001    296   9859    296      0      0
     11       10297   1478  10155   1463    -15    -15
 Transition   11775    296  11618    296      0      0
     12       12071    625  11914    625      0      0
 Transition   12696    296  12539    296      0      0
     13       12992    475  12835    461    -14    -14
 Transition   13467    296  13296    296      0      0
     14       13763    747  13592    747      0      0
 Transition   14510    296  14339    296      0      0
     15       14806   1353  14635   1223   -130   -130
 Transition   16159    296  15858    296      0      0
     16       16455    579  16154    551    -28    -28
 Transition   17034    296  16705    296      0      0
     17       17330    694  17001    657    -37    -37
 Transition   18024    296  17658    296      0      0
     18       18320    626  17954    545    -81    -81
 Transition   18946    296  18499    296      0      0
     19       19242    671  18795    624    -47    -47
 Transition   19913    296  19419    296      0      0
     20       20209    521  19715    521      0      0
 Transition   20730    296  20236    296      0      0
     21       21026    444  20532    444      0      0
 Transition   21470    296  20976    296      0      0
     22       21766    536  21272    536      0      0
 Transition   22302    296  21808    296      0      0
     23       22598   1266  22104   1292     26     26
 Transition   23864    296  23396    296      0      0
     24       24160    892  23692    883     -9     -9
 Transition   25052    296  24575    296      0      0
     25       25348   1181  24871   1104    -77    -77
 Transition   26529    296  25975    296      0      0
     26       26825    732  26271    732      0      0
 Transition   27557    296  27003    296      0      0
     27       27853   1457  27299   1404    -53    -53
 Transition   29310    296  28703    296      0      0
     28       29606    772  28999    726    -46    -46
 Transition   30378    296  29725    296      0      0
     29       30674   1448  30021   1268   -180   -180
 Transition   32122    296  31289    296      0      0
     30       32418   1259  31585   1221    -38    -38
 Transition   33677    296  32806    296      0      0
     31       33973   1013  33102   1013      0      0
 Transition   34986    296  34115    296      0      0
     32       35282    764  34411    748    -16    -16
 Transition   36046    296  35159    296      0      0
     33       36342   1113  35455   1113      0      0
 Transition   37455    296  36568    296      0      0
     34       37751    703  36864    703      0      0
 Transition   38454    296  37567    296      0      0
     35       38750    612  37863    604     -8     -8
 Transition   39362    296  38467    296      0      0
     36       39658    678  38763    668    -10    -10
 Last Input   40336     85  39431     76     -9   -905
 Boss Dies    40421         39507                 -914

Explanation

I have a lot of respect for the incredible work that both Chef Stef (and Baxter) did in the previous movies. We all took very different routes and improved on each other. Not much can be added to their detailed explanations, except to talk about what I did differently.
Although I use a bot, I take different approach than Chef Stef:
  • They built a C-based reverse engineered version of the game, yielding enourmous speedups compared to a using a lua on top of bizhawk. My approach, simply compiling my bot against quickNES (C++) is a bit less sophisticated, but by no means slow. The fact that it took them a year of execution on a 6-core machine but took me a month to do this one on a 64-core machine gives an idea of the relative performances.
  • They built a decision tree based on the 8 possible angles a ball can take, I went full brute, allowing any x position for the paddle when a ball is in the 'hittable' layer. To compensate for the impossibly large exploration space, I pruned the action space to either pressing "L" or "R" -- standing still was not an option. This paid off pretty nicely, I must say.
The main difficulty during making this movie was the bonus score screen. After finishing some levels, you get 'punished' with extra score -- I believe this has to do with the amount of enemies you killed, but so far haven't been able to decode it (nor did I spend much time to research it either).

Future Work

Before starting this project I tried to get in contact with Chef Stef via DM (and Discord). I had no luck, but also didn't try any further. This is the thing: their approach to this game and mine are not entirely mutually exclusive; if we were to join forces in the future, we could even be talking about optimality here.
So here it is: Chef Stef, if you are reading this, HMU and let's kill this game once and for all.

Re-Record Count

The re-record (load state, change input, advance state) count of this movie is: 2,529,914,332,046. I'd like to ask for this value be properly represented in the publication. I'll keep the execution logs for a while if someone wants to check them out.

nymx: Claiming for judging.

nymx: I am simply amazed! I really thought Chef_Stef ended this game. 15 seconds is a HUGE deal and I congratulate you on this outstanding work!
It was also nice to see how you took a different approach. You are truly one of the great BOTers of this community.
I'm following suit, as with the past submission, by accepting this version to "Stars" for publication!
fsvgm777: Processing.
feos: Cleared rerecords so they show up as unknown looks like the new site doesn't have this logic that we got used to on the old site...
Last Edited by adelikat on 9/8/2023 12:10 AM
Page History Latest diff List referrers