eien86
He/Him
Judge, Skilled player (1872)
Joined: 3/21/2021
Posts: 261
Location: Switzerland
QuickerNES project is an attempt at making QuickNES even faster on modern x86-64 systems for the purposes of botting. Nevertheless, it preserves all functionality of QuickNES so it could be adopted into other projects. The main features are:
  • Core re-record performance improvement of 20~68% across 20 games (see benchmark results)
  • Implements all 54 mappers in the libretro fork (+mapper 70, which is a copy of mapper 154)
  • Test set of 28 movies that replicate QuickNES final state hash
  • CI pipeline with 2 open source game tests
  • Overall code modernization and simplification
  • Added FourScore input support
Feedback and collaboration are highly appreciated. Github: https://github.com/SergioMartin86/quickerNES
Intel(R) Xeon(R) CPU E5-2640 v3 @ 2.60GHz
[] -----------------------------------------
[] Running Script:          'solarJetman.anyPercent.test'
[] Cycle Type:              'Rerecord'
[] Emulation Core:          'QuickerNES'
[] ROM File:                'roms/Solar Jetman - Hunt for the Golden Warpship (U) [!].nes'
[] Controller Types:        'Joypad' / 'None'
[] Sequence File:           'solarJetman.anyPercent.sol'
[] Sequence Length:         45983
[] ********** Running Test **********
[] Elapsed time:            2.785s
[] Performance:             16512.037 inputs / s
[] Final State Hash:        0x36907574EC8EA671B4DA0F218061F830
[] -----------------------------------------
[] Running Script:          'solarJetman.anyPercent.test'
[] Cycle Type:              'Rerecord'
[] Emulation Core:          'QuickNES'
[] ROM File:                'roms/Solar Jetman - Hunt for the Golden Warpship (U) [!].nes'
[] Controller Types:        'Joypad' / 'None'
[] Sequence File:           'solarJetman.anyPercent.sol'
[] Sequence Length:         45983
[] ********** Running Test **********
[] Elapsed time:            4.280s
[] Performance:             10744.714 inputs / s
[] Final State Hash:        0x36907574EC8EA671B4DA0F218061F830
[] -----------------------------------------
[] Running Script:          'ninjaGaiden2.anyPercent.test'
[] Cycle Type:              'Rerecord'
[] Emulation Core:          'QuickerNES'
[] ROM File:                'roms/Ninja Gaiden II - The Dark Sword of Chaos (U) [!].nes'
[] Controller Types:        'Joypad' / 'None'
[] Sequence File:           'ninjaGaiden2.anyPercent.sol'
[] Sequence Length:         34660
[] ********** Running Test **********
[] Elapsed time:            1.955s
[] Performance:             17726.412 inputs / s
[] Final State Hash:        0x48AE6B19DD9F073FB5372B7C09531361
[] -----------------------------------------
[] Running Script:          'ninjaGaiden2.anyPercent.test'
[] Cycle Type:              'Rerecord'
[] Emulation Core:          'QuickNES'
[] ROM File:                'roms/Ninja Gaiden II - The Dark Sword of Chaos (U) [!].nes'
[] Controller Types:        'Joypad' / 'None'
[] Sequence File:           'ninjaGaiden2.anyPercent.sol'
[] Sequence Length:         34660
[] ********** Running Test **********
[] Elapsed time:            2.379s
[] Performance:             14566.769 inputs / s
[] Final State Hash:        0x48AE6B19DD9F073FB5372B7C09531361
[] -----------------------------------------
[] Running Script:          'saintSeiyaKanketsuHen.anyPercent.test'
[] Cycle Type:              'Rerecord'
[] Emulation Core:          'QuickerNES'
[] ROM File:                'roms/Saint Seiya - Ougon Densetsu Kanketsu Hen (J) [!].nes'
[] Controller Types:        'Joypad' / 'None'
[] Sequence File:           'saintSeiyaKanketsuHen.anyPercent.sol'
[] Sequence Length:         86170
[] ********** Running Test **********
[] Elapsed time:            3.839s
[] Performance:             22443.442 inputs / s
[] Final State Hash:        0x84AF16B4FD569A7A64EA90CE8B61D797
[] -----------------------------------------
[] Running Script:          'saintSeiyaKanketsuHen.anyPercent.test'
[] Cycle Type:              'Rerecord'
[] Emulation Core:          'QuickNES'
[] ROM File:                'roms/Saint Seiya - Ougon Densetsu Kanketsu Hen (J) [!].nes'
[] Controller Types:        'Joypad' / 'None'
[] Sequence File:           'saintSeiyaKanketsuHen.anyPercent.sol'
[] Sequence Length:         86170
[] ********** Running Test **********
[] Elapsed time:            5.111s
[] Performance:             16860.098 inputs / s
[] Final State Hash:        0x84AF16B4FD569A7A64EA90CE8B61D797
[] -----------------------------------------
[] Running Script:          'ninjaGaiden2.pacifist.test'
[] Cycle Type:              'Rerecord'
[] Emulation Core:          'QuickerNES'
[] ROM File:                'roms/Ninja Gaiden II - The Dark Sword of Chaos (U) [!].nes'
[] Controller Types:        'Joypad' / 'None'
[] Sequence File:           'ninjaGaiden2.pacifist.sol'
[] Sequence Length:         36619
[] ********** Running Test **********
[] Elapsed time:            2.090s
[] Performance:             17524.484 inputs / s
[] Final State Hash:        0x1416C007FF37D6AFEA66F68B7A406AFE
[] -----------------------------------------
[] Running Script:          'ninjaGaiden2.pacifist.test'
[] Cycle Type:              'Rerecord'
[] Emulation Core:          'QuickNES'
[] ROM File:                'roms/Ninja Gaiden II - The Dark Sword of Chaos (U) [!].nes'
[] Controller Types:        'Joypad' / 'None'
[] Sequence File:           'ninjaGaiden2.pacifist.sol'
[] Sequence Length:         36619
[] ********** Running Test **********
[] Elapsed time:            2.540s
[] Performance:             14419.377 inputs / s
[] Final State Hash:        0x1416C007FF37D6AFEA66F68B7A406AFE
[] -----------------------------------------
[] Running Script:          'novaTheSquirrel.anyPercent.test'
[] Cycle Type:              'Rerecord'
[] Emulation Core:          'QuickerNES'
[] ROM File:                'roms/nova.nes'
[] Controller Types:        'Joypad' / 'None'
[] Sequence File:           'novaTheSquirrel.anyPercent.sol'
[] Sequence Length:         45472
[] ********** Running Test **********
[] Elapsed time:            2.463s
[] Performance:             18462.086 inputs / s
[] Final State Hash:        0xDCA3AB50199A6C7D302815FD029ABA27
[] -----------------------------------------
[] Running Script:          'novaTheSquirrel.anyPercent.test'
[] Cycle Type:              'Rerecord'
[] Emulation Core:          'QuickNES'
[] ROM File:                'roms/nova.nes'
[] Controller Types:        'Joypad' / 'None'
[] Sequence File:           'novaTheSquirrel.anyPercent.sol'
[] Sequence Length:         45472
[] ********** Running Test **********
[] Elapsed time:            3.875s
[] Performance:             11733.855 inputs / s
[] Final State Hash:        0xDCA3AB50199A6C7D302815FD029ABA27
[] -----------------------------------------
[] Running Script:          'superMarioBros3.warps.test'
[] Cycle Type:              'Rerecord'
[] Emulation Core:          'QuickerNES'
[] ROM File:                'roms/Super Mario Bros. 3 (U) (PRG0) [!].nes'
[] Controller Types:        'Joypad' / 'None'
[] Sequence File:           'superMarioBros3.warps.sol'
[] Sequence Length:         37520
[] ********** Running Test **********
[] Elapsed time:            2.611s
[] Performance:             14370.167 inputs / s
[] Final State Hash:        0xE50B887F4F822E774B0C4F573AB15CBB
[] -----------------------------------------
[] Running Script:          'superMarioBros3.warps.test'
[] Cycle Type:              'Rerecord'
[] Emulation Core:          'QuickNES'
[] ROM File:                'roms/Super Mario Bros. 3 (U) (PRG0) [!].nes'
[] Controller Types:        'Joypad' / 'None'
[] Sequence File:           'superMarioBros3.warps.sol'
[] Sequence Length:         37520
[] ********** Running Test **********
[] Elapsed time:            3.164s
[] Performance:             11857.682 inputs / s
[] Final State Hash:        0xE50B887F4F822E774B0C4F573AB15CBB
[] -----------------------------------------
[] Running Script:          'princeOfPersia.anyPercent.test'
[] Cycle Type:              'Rerecord'
[] Emulation Core:          'QuickerNES'
[] ROM File:                'roms/Prince of Persia (U) [!].nes'
[] Controller Types:        'Joypad' / 'None'
[] Sequence File:           'princeOfPersia.anyPercent.sol'
[] Sequence Length:         55827
[] ********** Running Test **********
[] Elapsed time:            2.491s
[] Performance:             22409.348 inputs / s
[] Final State Hash:        0xAB63F2184FB378CFF979E6469EECF8BD
[] -----------------------------------------
[] Running Script:          'princeOfPersia.anyPercent.test'
[] Cycle Type:              'Rerecord'
[] Emulation Core:          'QuickNES'
[] ROM File:                'roms/Prince of Persia (U) [!].nes'
[] Controller Types:        'Joypad' / 'None'
[] Sequence File:           'princeOfPersia.anyPercent.sol'
[] Sequence Length:         55827
[] ********** Running Test **********
[] Elapsed time:            4.093s
[] Performance:             13640.464 inputs / s
[] Final State Hash:        0xAB63F2184FB378CFF979E6469EECF8BD
[] -----------------------------------------
[] Running Script:          'saintSeiyaOugonDensetsu.anyPercent.test'
[] Cycle Type:              'Rerecord'
[] Emulation Core:          'QuickerNES'
[] ROM File:                'roms/Saint Seiya - Ougon Densetsu (J) [!].nes'
[] Controller Types:        'Joypad' / 'None'
[] Sequence File:           'saintSeiyaKanketsuHen.anyPercent.sol'
[] Sequence Length:         86170
[] ********** Running Test **********
[] Elapsed time:            4.268s
[] Performance:             20189.193 inputs / s
[] Final State Hash:        0xF891041923962228B2D1BD71F3CB6933
[] -----------------------------------------
[] Running Script:          'saintSeiyaOugonDensetsu.anyPercent.test'
[] Cycle Type:              'Rerecord'
[] Emulation Core:          'QuickNES'
[] ROM File:                'roms/Saint Seiya - Ougon Densetsu (J) [!].nes'
[] Controller Types:        'Joypad' / 'None'
[] Sequence File:           'saintSeiyaKanketsuHen.anyPercent.sol'
[] Sequence Length:         86170
[] ********** Running Test **********
[] Elapsed time:            5.371s
[] Performance:             16044.526 inputs / s
[] Final State Hash:        0xF891041923962228B2D1BD71F3CB6933
[] -----------------------------------------
[] Running Script:          'ninjaGaiden.pacifist.test'
[] Cycle Type:              'Rerecord'
[] Emulation Core:          'QuickerNES'
[] ROM File:                'roms/Ninja Gaiden (U) [!].nes'
[] Controller Types:        'Joypad' / 'None'
[] Sequence File:           'ninjaGaiden.pacifist.sol'
[] Sequence Length:         40680
[] ********** Running Test **********
[] Elapsed time:            2.202s
[] Performance:             18472.385 inputs / s
[] Final State Hash:        0x1DF238FAFC8365E2AAFB8939142B57E3
[] -----------------------------------------
[] Running Script:          'ninjaGaiden.pacifist.test'
[] Cycle Type:              'Rerecord'
[] Emulation Core:          'QuickNES'
[] ROM File:                'roms/Ninja Gaiden (U) [!].nes'
[] Controller Types:        'Joypad' / 'None'
[] Sequence File:           'ninjaGaiden.pacifist.sol'
[] Sequence Length:         40680
[] ********** Running Test **********
[] Elapsed time:            2.716s
[] Performance:             14976.724 inputs / s
[] Final State Hash:        0x1DF238FAFC8365E2AAFB8939142B57E3
[] -----------------------------------------
[] Running Script:          'arkanoid.warpless.test'
[] Cycle Type:              'Rerecord'
[] Emulation Core:          'QuickerNES'
[] ROM File:                'roms/Arkanoid (U) [!].nes'
[] Controller Types:        'Joypad' / 'None'
[] Sequence File:           'arkanoid.warpless.sol'
[] Sequence Length:         39431
[] ********** Running Test **********
[] Elapsed time:            1.604s
[] Performance:             24580.635 inputs / s
[] Final State Hash:        0xF171C41A41D40ECA759F61EE8F76546C
[] -----------------------------------------
[] Running Script:          'arkanoid.warpless.test'
[] Cycle Type:              'Rerecord'
[] Emulation Core:          'QuickNES'
[] ROM File:                'roms/Arkanoid (U) [!].nes'
[] Controller Types:        'Joypad' / 'None'
[] Sequence File:           'arkanoid.warpless.sol'
[] Sequence Length:         39431
[] ********** Running Test **********
[] Elapsed time:            2.278s
[] Performance:             17307.374 inputs / s
[] Final State Hash:        0xF171C41A41D40ECA759F61EE8F76546C
[] -----------------------------------------
[] Running Script:          'saiyuukiWorld.anyPercent.test'
[] Cycle Type:              'Rerecord'
[] Emulation Core:          'QuickerNES'
[] ROM File:                'roms/Saiyuuki World (J).nes'
[] Controller Types:        'Joypad' / 'None'
[] Sequence File:           'saiyuukiWorld.anyPercent.sol'
[] Sequence Length:         44671
[] ********** Running Test **********
[] Elapsed time:            1.998s
[] Performance:             22356.944 inputs / s
[] Final State Hash:        0xFD21EDE2578F91B7322A8D1806E9540A
[] -----------------------------------------
[] Running Script:          'saiyuukiWorld.anyPercent.test'
[] Cycle Type:              'Rerecord'
[] Emulation Core:          'QuickNES'
[] ROM File:                'roms/Saiyuuki World (J).nes'
[] Controller Types:        'Joypad' / 'None'
[] Sequence File:           'saiyuukiWorld.anyPercent.sol'
[] Sequence Length:         44671
[] ********** Running Test **********
[] Elapsed time:            3.184s
[] Performance:             14029.225 inputs / s
[] Final State Hash:        0xFD21EDE2578F91B7322A8D1806E9540A
[] -----------------------------------------
[] Running Script:          'arkanoid.warps.test'
[] Cycle Type:              'Rerecord'
[] Emulation Core:          'QuickerNES'
[] ROM File:                'roms/Arkanoid (U) [!].nes'
[] Controller Types:        'Joypad' / 'None'
[] Sequence File:           'arkanoid.warps.sol'
[] Sequence Length:         15806
[] ********** Running Test **********
[] Elapsed time:            0.584s
[] Performance:             27086.056 inputs / s
[] Final State Hash:        0xC4606B277B02E785AA318DB8C47A9FA6
[] -----------------------------------------
[] Running Script:          'arkanoid.warps.test'
[] Cycle Type:              'Rerecord'
[] Emulation Core:          'QuickNES'
[] ROM File:                'roms/Arkanoid (U) [!].nes'
[] Controller Types:        'Joypad' / 'None'
[] Sequence File:           'arkanoid.warps.sol'
[] Sequence Length:         15806
[] ********** Running Test **********
[] Elapsed time:            0.810s
[] Performance:             19525.200 inputs / s
[] Final State Hash:        0xC4606B277B02E785AA318DB8C47A9FA6
[] -----------------------------------------
[] Running Script:          'metroid.playaround.test'
[] Cycle Type:              'Rerecord'
[] Emulation Core:          'QuickerNES'
[] ROM File:                'roms/Metroid (U) (PRG0) [!].nes'
[] Controller Types:        'Joypad' / 'None'
[] Sequence File:           'metroid.playaround.sol'
[] Sequence Length:         1729
[] ********** Running Test **********
[] Elapsed time:            0.082s
[] Performance:             21016.490 inputs / s
[] Final State Hash:        0xEF1D2EB61759C6677BDBB8DB49E2F01D
[] -----------------------------------------
[] Running Script:          'metroid.playaround.test'
[] Cycle Type:              'Rerecord'
[] Emulation Core:          'QuickNES'
[] ROM File:                'roms/Metroid (U) (PRG0) [!].nes'
[] Controller Types:        'Joypad' / 'None'
[] Sequence File:           'metroid.playaround.sol'
[] Sequence Length:         1729
[] ********** Running Test **********
[] Elapsed time:            0.137s
[] Performance:             12647.511 inputs / s
[] Final State Hash:        0xEF1D2EB61759C6677BDBB8DB49E2F01D
[] -----------------------------------------
[] Running Script:          'sprilo.anyPercent.test'
[] Cycle Type:              'Rerecord'
[] Emulation Core:          'QuickerNES'
[] ROM File:                'roms/sprilo.nes'
[] Controller Types:        'Joypad' / 'None'
[] Sequence File:           'sprilo.anyPercent.sol'
[] Sequence Length:         4572
[] ********** Running Test **********
[] Elapsed time:            0.233s
[] Performance:             19610.906 inputs / s
[] Final State Hash:        0x52BA974E9C731E19A1126E042F883CA8
[] -----------------------------------------
[] Running Script:          'sprilo.anyPercent.test'
[] Cycle Type:              'Rerecord'
[] Emulation Core:          'QuickNES'
[] ROM File:                'roms/sprilo.nes'
[] Controller Types:        'Joypad' / 'None'
[] Sequence File:           'sprilo.anyPercent.sol'
[] Sequence Length:         4572
[] ********** Running Test **********
[] Elapsed time:            0.286s
[] Performance:             15994.542 inputs / s
[] Final State Hash:        0x52BA974E9C731E19A1126E042F883CA8
[] -----------------------------------------
[] Running Script:          'ninjaGaiden.anyPercent.test'
[] Cycle Type:              'Rerecord'
[] Emulation Core:          'QuickerNES'
[] ROM File:                'roms/Ninja Gaiden (U) [!].nes'
[] Controller Types:        'Joypad' / 'None'
[] Sequence File:           'ninjaGaiden.anyPercent.sol'
[] Sequence Length:         39111
[] ********** Running Test **********
[] Elapsed time:            2.098s
[] Performance:             18639.887 inputs / s
[] Final State Hash:        0x85B6AD9D544C1725A29751ADDC9782B
[] -----------------------------------------
[] Running Script:          'ninjaGaiden.anyPercent.test'
[] Cycle Type:              'Rerecord'
[] Emulation Core:          'QuickNES'
[] ROM File:                'roms/Ninja Gaiden (U) [!].nes'
[] Controller Types:        'Joypad' / 'None'
[] Sequence File:           'ninjaGaiden.anyPercent.sol'
[] Sequence Length:         39111
[] ********** Running Test **********
[] Elapsed time:            2.606s
[] Performance:             15005.845 inputs / s
[] Final State Hash:        0x85B6AD9D544C1725A29751ADDC9782B
[] -----------------------------------------
[] Running Script:          'rcProAmII.race1.test'
[] Cycle Type:              'Rerecord'
[] Emulation Core:          'QuickerNES'
[] ROM File:                'roms/R.C. Pro-Am II (U) [!].nes'
[] Controller Types:        'FourScore1' / 'FourScore2'
[] Sequence File:           'rcProAmII.race1.sol'
[] Sequence Length:         5482
[] ********** Running Test **********
[] Elapsed time:            0.425s
[] Performance:             12887.581 inputs / s
[] Final State Hash:        0x1A10A9CC4622787D5D0A5491FA0C59DD
[] -----------------------------------------
[] Running Script:          'rcProAmII.race1.test'
[] Cycle Type:              'Rerecord'
[] Emulation Core:          'QuickNES'
[] ROM File:                'roms/R.C. Pro-Am II (U) [!].nes'
[] Controller Types:        'FourScore1' / 'FourScore2'
[] Sequence File:           'rcProAmII.race1.sol'
[] Sequence Length:         5482
[] ********** Running Test **********
[] Elapsed time:            0.541s
[] Performance:             10139.485 inputs / s
[] Final State Hash:        0x1A10A9CC4622787D5D0A5491FA0C59DD
[] -----------------------------------------
[] Running Script:          'superMarioBros.warps.test'
[] Cycle Type:              'Rerecord'
[] Emulation Core:          'QuickerNES'
[] ROM File:                'roms/Super Mario Bros. (W) [!].nes'
[] Controller Types:        'Joypad' / 'None'
[] Sequence File:           'superMarioBros.warps.sol'
[] Sequence Length:         17867
[] ********** Running Test **********
[] Elapsed time:            1.098s
[] Performance:             16270.545 inputs / s
[] Final State Hash:        0x40DA7F047B4BD3D0263D7DD80336C997
[] -----------------------------------------
[] Running Script:          'superMarioBros.warps.test'
[] Cycle Type:              'Rerecord'
[] Emulation Core:          'QuickNES'
[] ROM File:                'roms/Super Mario Bros. (W) [!].nes'
[] Controller Types:        'Joypad' / 'None'
[] Sequence File:           'superMarioBros.warps.sol'
[] Sequence Length:         17867
[] ********** Running Test **********
[] Elapsed time:            1.318s
[] Performance:             13557.585 inputs / s
[] Final State Hash:        0x40DA7F047B4BD3D0263D7DD80336C997
[] -----------------------------------------
[] Running Script:          'superOffroad.anyPercent.test'
[] Cycle Type:              'Rerecord'
[] Emulation Core:          'QuickerNES'
[] ROM File:                'roms/Ivan 'Ironman' Stewart's Super Off Road (USA).nes'
[] Controller Types:        'Joypad' / 'Joypad'
[] Sequence File:           'superOffroad.anyPercent.sol'
[] Sequence Length:         182180
[] ********** Running Test **********
[] Elapsed time:            10.258s
[] Performance:             17760.479 inputs / s
[] Final State Hash:        0x481F7F8B447D5B4385605B12A1E12508
[] -----------------------------------------
[] Running Script:          'superOffroad.anyPercent.test'
[] Cycle Type:              'Rerecord'
[] Emulation Core:          'QuickNES'
[] ROM File:                'roms/Ivan 'Ironman' Stewart's Super Off Road (USA).nes'
[] Controller Types:        'Joypad' / 'Joypad'
[] Sequence File:           'superOffroad.anyPercent.sol'
[] Sequence Length:         182180
[] ********** Running Test **********
[] Elapsed time:            15.490s
[] Performance:             11760.928 inputs / s
[] Final State Hash:        0x481F7F8B447D5B4385605B12A1E12508
[] -----------------------------------------
[] Running Script:          'superMarioBros.warpless.test'
[] Cycle Type:              'Rerecord'
[] Emulation Core:          'QuickerNES'
[] ROM File:                'roms/Super Mario Bros. (W) [!].nes'
[] Controller Types:        'Joypad' / 'None'
[] Sequence File:           'superMarioBros.warpless.sol'
[] Sequence Length:         67115
[] ********** Running Test **********
[] Elapsed time:            4.159s
[] Performance:             16137.037 inputs / s
[] Final State Hash:        0x9E717F0E9B65A4AD8E13C26896EBC787
[] -----------------------------------------
[] Running Script:          'superMarioBros.warpless.test'
[] Cycle Type:              'Rerecord'
[] Emulation Core:          'QuickNES'
[] ROM File:                'roms/Super Mario Bros. (W) [!].nes'
[] Controller Types:        'Joypad' / 'None'
[] Sequence File:           'superMarioBros.warpless.sol'
[] Sequence Length:         67115
[] ********** Running Test **********
[] Elapsed time:            4.981s
[] Performance:             13473.516 inputs / s
[] Final State Hash:        0x9E717F0E9B65A4AD8E13C26896EBC787
[] -----------------------------------------
[] Running Script:          'castlevania1.pacifist.test'
[] Cycle Type:              'Rerecord'
[] Emulation Core:          'QuickerNES'
[] ROM File:                'roms/Castlevania (U) (PRG0) [!].nes'
[] Controller Types:        'Joypad' / 'None'
[] Sequence File:           'castlevania1.pacifist.sol'
[] Sequence Length:         39555
[] ********** Running Test **********
[] Elapsed time:            1.887s
[] Performance:             20958.263 inputs / s
[] Final State Hash:        0xA01EBFEDC465ED75C02A6A3CCED94CDC
[] -----------------------------------------
[] Running Script:          'castlevania1.pacifist.test'
[] Cycle Type:              'Rerecord'
[] Emulation Core:          'QuickNES'
[] ROM File:                'roms/Castlevania (U) (PRG0) [!].nes'
[] Controller Types:        'Joypad' / 'None'
[] Sequence File:           'castlevania1.pacifist.sol'
[] Sequence Length:         39555
[] ********** Running Test **********
[] Elapsed time:            3.178s
[] Performance:             12446.968 inputs / s
[] Final State Hash:        0xA01EBFEDC465ED75C02A6A3CCED94CDC
[] -----------------------------------------
[] Running Script:          'ironSword.anyPercent.test'
[] Cycle Type:              'Rerecord'
[] Emulation Core:          'QuickerNES'
[] ROM File:                'roms/Ironsword - Wizards & Warriors II (U) [!].nes'
[] Controller Types:        'Joypad' / 'None'
[] Sequence File:           'ironSword.anyPercent.sol'
[] Sequence Length:         25785
[] ********** Running Test **********
[] Elapsed time:            1.390s
[] Performance:             18553.428 inputs / s
[] Final State Hash:        0xD3425F809FEC99F37EBE09F101F193E2
[] -----------------------------------------
[] Running Script:          'ironSword.anyPercent.test'
[] Cycle Type:              'Rerecord'
[] Emulation Core:          'QuickNES'
[] ROM File:                'roms/Ironsword - Wizards & Warriors II (U) [!].nes'
[] Controller Types:        'Joypad' / 'None'
[] Sequence File:           'ironSword.anyPercent.sol'
[] Sequence Length:         25785
[] ********** Running Test **********
[] Elapsed time:            2.295s
[] Performance:             11235.585 inputs / s
[] Final State Hash:        0xD3425F809FEC99F37EBE09F101F193E2
[] -----------------------------------------
[] Running Script:          'tennis.anyPercent.test'
[] Cycle Type:              'Rerecord'
[] Emulation Core:          'QuickerNES'
[] ROM File:                'roms/Tennis (JU) [!].nes'
[] Controller Types:        'Joypad' / 'None'
[] Sequence File:           'tennis.anyPercent.sol'
[] Sequence Length:         40627
[] ********** Running Test **********
[] Elapsed time:            1.611s
[] Performance:             25212.519 inputs / s
[] Final State Hash:        0x79A76E688086301B263BD4BCEB8BAD34
[] -----------------------------------------
[] Running Script:          'tennis.anyPercent.test'
[] Cycle Type:              'Rerecord'
[] Emulation Core:          'QuickNES'
[] ROM File:                'roms/Tennis (JU) [!].nes'
[] Controller Types:        'Joypad' / 'None'
[] Sequence File:           'tennis.anyPercent.sol'
[] Sequence Length:         40627
[] ********** Running Test **********
[] Elapsed time:            2.066s
[] Performance:             19665.939 inputs / s
[] Final State Hash:        0x79A76E688086301B263BD4BCEB8BAD34
[] -----------------------------------------
[] Running Script:          'saiyuukiWorld.lastHalf.test'
[] Cycle Type:              'Rerecord'
[] Emulation Core:          'QuickerNES'
[] ROM File:                'roms/Saiyuuki World (J).nes'
[] Controller Types:        'Joypad' / 'None'
[] Sequence File:           'saiyuukiWorld.lastHalf.sol'
[] Sequence Length:         8954
[] ********** Running Test **********
[] Elapsed time:            0.418s
[] Performance:             21442.852 inputs / s
[] Final State Hash:        0xFD21EDE2578F91B7322A8D1806E9540A
[] -----------------------------------------
[] Running Script:          'saiyuukiWorld.lastHalf.test'
[] Cycle Type:              'Rerecord'
[] Emulation Core:          'QuickNES'
[] ROM File:                'roms/Saiyuuki World (J).nes'
[] Controller Types:        'Joypad' / 'None'
[] Sequence File:           'saiyuukiWorld.lastHalf.sol'
[] Sequence Length:         8954
[] ********** Running Test **********
[] Elapsed time:            0.696s
[] Performance:             12872.349 inputs / s
[] Final State Hash:        0xFD21EDE2578F91B7322A8D1806E9540A
[] -----------------------------------------
[] Running Script:          'nigelMansell.anyPercent.test'
[] Cycle Type:              'Rerecord'
[] Emulation Core:          'QuickerNES'
[] ROM File:                'roms/Nigel Mansell's World Championship Challenge (U) [!].nes'
[] Controller Types:        'Joypad' / 'None'
[] Sequence File:           'nigelMansell.anyPercent.sol'
[] Sequence Length:         296590
[] ********** Running Test **********
[] Elapsed time:            17.539s
[] Performance:             16910.106 inputs / s
[] Final State Hash:        0xE0E40F5C5CEFB2468C36326F6BDCC9EF
[] -----------------------------------------
[] Running Script:          'nigelMansell.anyPercent.test'
[] Cycle Type:              'Rerecord'
[] Emulation Core:          'QuickNES'
[] ROM File:                'roms/Nigel Mansell's World Championship Challenge (U) [!].nes'
[] Controller Types:        'Joypad' / 'None'
[] Sequence File:           'nigelMansell.anyPercent.sol'
[] Sequence Length:         296590
[] ********** Running Test **********
[] Elapsed time:            22.243s
[] Performance:             13334.201 inputs / s
[] Final State Hash:        0xE0E40F5C5CEFB2468C36326F6BDCC9EF
[] -----------------------------------------
[] Running Script:          'galaga.anyPercent.test'
[] Cycle Type:              'Rerecord'
[] Emulation Core:          'QuickerNES'
[] ROM File:                'roms/Galaga - Demons of Death (U) [!].nes'
[] Controller Types:        'Joypad' / 'None'
[] Sequence File:           'galaga.anyPercent.sol'
[] Sequence Length:         29916
[] ********** Running Test **********
[] Elapsed time:            1.440s
[] Performance:             20780.535 inputs / s
[] Final State Hash:        0xB85580B5133508A7A30FBADE8E49179
[] -----------------------------------------
[] Running Script:          'galaga.anyPercent.test'
[] Cycle Type:              'Rerecord'
[] Emulation Core:          'QuickNES'
[] ROM File:                'roms/Galaga - Demons of Death (U) [!].nes'
[] Controller Types:        'Joypad' / 'None'
[] Sequence File:           'galaga.anyPercent.sol'
[] Sequence Length:         29916
[] ********** Running Test **********
[] Elapsed time:            1.821s
[] Performance:             16431.832 inputs / s
[] Final State Hash:        0xB85580B5133508A7A30FBADE8E49179
[] -----------------------------------------
[] Running Script:          'castlevania1.anyPercent.test'
[] Cycle Type:              'Rerecord'
[] Emulation Core:          'QuickerNES'
[] ROM File:                'roms/Castlevania (U) (PRG0) [!].nes'
[] Controller Types:        'Joypad' / 'None'
[] Sequence File:           'castlevania1.anyPercent.sol'
[] Sequence Length:         37338
[] ********** Running Test **********
[] Elapsed time:            1.832s
[] Performance:             20385.551 inputs / s
[] Final State Hash:        0x28B49A77255661CFF0AB580DD129EF9
[] -----------------------------------------
[] Running Script:          'castlevania1.anyPercent.test'
[] Cycle Type:              'Rerecord'
[] Emulation Core:          'QuickNES'
[] ROM File:                'roms/Castlevania (U) (PRG0) [!].nes'
[] Controller Types:        'Joypad' / 'None'
[] Sequence File:           'castlevania1.anyPercent.sol'
[] Sequence Length:         37338
[] ********** Running Test **********
[] Elapsed time:            3.029s
[] Performance:             12325.235 inputs / s
[] Final State Hash:        0x28B49A77255661CFF0AB580DD129EF9
EZGames69
He/They
Publisher, Reviewer, Expert player (4460)
Joined: 5/29/2017
Posts: 2761
Is there any accuracy that gets sacrificed from QuickNES? Or is this simply an improvement to the performance?
[14:15] <feos> WinDOES what DOSn't 12:33:44 PM <Mothrayas> "I got an oof with my game!" Mothrayas Today at 12:22: <Colin> thank you for supporting noble causes such as my feet MemoryTAS Today at 11:55 AM: you wouldn't know beauty if it slapped you in the face with a giant fish [Today at 4:51 PM] Mothrayas: although if you like your own tweets that's the online equivalent of sniffing your own farts and probably tells a lot about you as a person MemoryTAS Today at 7:01 PM: But I exert big staff energy honestly lol Samsara Today at 1:20 PM: wouldn't ACE in a real life TAS just stand for Actually Cease Existing
eien86
He/Him
Judge, Skilled player (1872)
Joined: 3/21/2021
Posts: 261
Location: Switzerland
EZGames69 wrote:
Is there any accuracy that gets sacrificed from QuickNES? Or is this simply an improvement to the performance?
There is no accuracy sacrificed, at least as far as these tests show. I tried my best to keep the emulation intact and only improve performance. Adding more games and tests should help in making sure these optimizations don't diverge from the original emulator. A small caveat for the benchmark is that I use partial save states for QuickerNES (e.g. for some games I do not preserve the nametable and sprite memory). This helps performance a bit in re-recording for botting purposes but wouldn't be useful for casual gameplay.
YoshiRulz
Any
Editor, Emulator Coder
Joined: 8/30/2020
Posts: 106
Location: Sydney, Australia
Always good to see the limits of perf being pushed. It was brought up on Discord earlier, but I've opened TASEmulators/BizHawk#3848 to discuss including your work in BizHawk.
I contribute to BizHawk as Linux/cross-platform lead, testing and automation lead, and UI designer. This year, I'm experimenting with streaming BizHawk development on Twitch. nope Links to find me elsewhere and to some of my side projects are on my personal site. I will respond on Discord faster than to PMs on this site.
Hey look buddy, I'm an engineer. That means I solve problems. Not problems like "What is software," because that would fall within the purview of your conundrums of philosophy. I solve practical problems. For instance, how am I gonna stop some high-wattage thread-ripping monster of a CPU dead in its tracks? The answer: use code. And if that don't work? Use more code.