# DERP TOLL 2020 (Carnival of Derp)

Thread in 'Discussion' started by Sinewave, 26 Mar 2020.

1. ### Sinewave

OH MAN I AM NOT GOOD WITH COMPUTER PLZ TO HELP

Welcome to the Carnival of Derp. Basically, you play death mode, except in ways you shouldn't play it. At all.

Yet, here we are.

Play T.A. Death on any engine that supports it, using any ruleset except for original TAP (which goes on the main Death thread). There is a slight exception to that this time, which I will talk about later...
Both the Derp Toll (sum of the highest scores of all combinations of player and ruleset) and the Herp Toll (sum of all players' highest scores) are counted.

This time however, I will also count for a third counter, which is the "Secret Derp" Toll. The way it's calculated is as follows:
Code:
Every grade, you get 50 Secret Derp points, so Secret grade 8 would give you 100 points, 7 gives you 150, all the way up to S9 where it is 900. GM gives you 999 points.

Normally the whole table would be here but posts hate it if they're edited with multiple code blocks. lol
The specifications on what "any ruleset" means are the same as last year:
• Use a playing grid 10 cells wide, 20 cells high.
• Have a balanced randomiser.
• Respect all the delays in the Death game mode (in particular, no ARE-cancelling).
• Keep the tetromino a tetromino (4 blocks joined by edges) when rotated.
Secret Derp rules:
• Regular TAP ruleset is allowed, but only counts if you do secret grade - you are not limited to the TAP ruleset for doing secret grade, however.
• Regular levels achieved will not count for the Derp and Herp tolls. They will only count for comparison's sake on the leaderboards. If multiple people have the same grade, the person with the lower level at topout is higher up.
• Therefore, please mark whether your submission is a secret grade one or not, even if it is usually easy to tell. It just makes things easier on my part.
Doing unexpected things is very encouraged (this includes secret grade) and I look forward to submissions breaking the norm even further than before.

The Carnival of Derp will end whenever the Carnival of Death ends, except one day later. Don't tell anyone. :^)

Regular derp rankings:
Code:
Rank | Player     | Game/Engine and Ruleset    |Level| Time
===============================================================
1  | Arcorann   | NullpoMino/Autopilot-I     | 999 | 06:03:45
2  | Arcorann   | Blockdrop/The Almost Death | 500 | 03:48:36
3  | FreakyByte | TAP/All Items              | 421 | 05:26:53
4  | FreakyByte | TAP/Mirror Block           | 310 | 02:47:11
5  | Arcorann   | NullpoMino/Destroyer       | 305 | 02:56:36
6  | Arcorann   | NullpoMino/ShiraseRS       | 230 | 02:28.26

Secret derp rankings:
Code:
Rank | Player   | Game/Engine and Ruleset    | Grade | Secret Derp Points | Level
==================================================================================
1  | Arcorann | Blockdrop/The Almost Death |     2 | 400                | 412

Past Carnivals of Derp:

Last edited: 31 Mar 2020
Muf and FreakyByte like this.
2. ### FreakyByte

I think I have some fun ideas for this year... =]
For now this:

TAP All Items
Level 421 @ 5:26:53
Code:
<cheat desc="Activate Item Mode">
<parameter min="0" max="1" step="1"/>
<script state="run">
<action>maincpu.pw@6064BA4=(0200|(maincpu.pw@6064BA4 BAND ~0200))</action>
</script>
</cheat>
<cheat desc="Carnival 2019 Item">
<script state="run">
<action>maincpu.pb@6064C16=14</action>
<action>maincpu.pw@600594A=2000</action>
<action>maincpu.pw@6005B4E=0</action>
</script>
</cheat>


Same thing I did last year. It's quite fun, especially when trying to time attack at least a little bit. I kinda wanna get this to 499 or 500.

TAP Mirror Block TAP 180 Field (why the hell did I think this was mirror block)
Level 310 @ 2:47:11
Code:
<cheat desc="Activate Item Mode">
<parameter min="0" max="1" step="1"/>
<script state="run">
<action>maincpu.pw@6064BA4=(0200|(maincpu.pw@6064BA4 BAND ~0200))</action>
</script>
</cheat>
<cheat desc="Every Item change into">
<parameter>
<item value="0x00">Nothing</item>
<item value="0x01">Death Block</item>
<item value="0x02">Negate Field</item>
<item value="0x03">Color Block</item>
<item value="0x04">Delete Field Upper</item>
<item value="0x05">Delete Field Lower</item>
<item value="0x06">Move Field Right</item>
<item value="0x07">Move Field Left</item>
<item value="0x08">Delete Even</item>
<item value="0x09">180</item>
<item value="0x0A">Shotgun</item>
<item value="0x0B">Hard Block</item>
<item value="0x0C">Laser</item>
<item value="0x0D">Roll Roll</item>
<item value="0x0E">Transform</item>
<item value="0x0F">Free Fall</item>
<item value="0x10">X-Ray</item>
<item value="0x11">Exchange Field</item>
<item value="0x12">Mirror Field</item>
<item value="0x13">Dark Block</item>
</parameter>
<script state="run">
<action>maincpu.pb@6064C17=param</action>
</script>
</cheat>


It's Death but I use a cheat to enable item mode and another cheat to turn every item block into mirror block 180 field.
It was an idea from MaryHadALittle to do this with hard block, but that's basically impossible if I don't find a way to turn down the frequency at which items spawn. With mirror block 180 Field it's quite fun.
(though probably mirror block's fun too)

And just one more thing. This unfortunately doesn't count because of the 10x20-Playfield rule, but it's so silly that I had to share it: Death Mode in Doubles.
TRUE Solo Doubles + Death
Code:
<cheat desc="Activate Death Mode">
<parameter min="0" max="99999999999" step="1"/>
<script state="run">
<action>maincpu.pw@6064BA4=(1000|(maincpu.pw@6064BA4 BAND ~1000))</action>
</script>
</cheat>


I will add the cheats I used later if anyone wants to try this themselves. done

Last edited: 1 Apr 2020
d4nin3u and Sinewave like this.
3. ### Arcorann

Blockdrop, The Almost Death
500 @ 3:47.96

Quite a bit faster than last year's run, but still not enough to break torikan.

Blockdrop, The Almost Death (secret)
2 - 412 - 3:40.10

I don't try for secret grade often, so this surprised me a bit.

Last edited: 27 Mar 2020
FreakyByte and Sinewave like this.
4. ### Arcorann

NullpoMino, Shirase Rotation System
230 - 2:28.26

Not quite as good as last year's score, hopefully someone else picks up the slack.

#### Attached Files:

• ###### 2020_03_29_21_05_15.png
File size:
506.7 KB
Views:
1
FreakyByte likes this.
5. ### Arcorann

NullpoMino, Autopilot-I
999 - 6:03.45

There's this dumb bug where if you manual lock too quickly the level won't increase properly, it messed up my attempts a lot.

NullpoMino, Destroyer
305 - 2:56.36

The drawbacks of this rule far outweigh the benefits.

Bonus:
(NullpoMino, Classic-Secret GM rule - I don't think this is allowed)
GM - 3 - 0:02.85

#### Attached Files:

File size:
559.9 KB
Views:
1
• ###### 2020_03_31_01_44_10.png
File size:
486.7 KB
Views:
1
Last edited: 30 Mar 2020
FreakyByte likes this.
6. ### Sinewave

out of pure interest, can you show me a video of that?

7. ### Arcorann

I don't have recording software on hand, but the rule's in the Oshisaure mod pack if you want to have a look at it (link on YouTube somewhere). Basically it spawns the secret grade pattern when trying to kick (?). I'll upload all the replays at the same time, most likely (since we can't attach individual ones).

Honestly, this one could go either way as to whether it's allowed or not (last year I rejected Hold F but accepted Press E).

Anyway, a few more runs that hit torikan:

NullpoMino - BONKERS
500 - 4:01.83

Improvement over last year.

NullpoMino - Standard-Hard
500 - 3:39.55

NullpoMino - Classic O-Avalanche
500 - 3:45.21

Another Oshisaure rule. Turns out being able to use O pieces to push the stack isn't quite cheesy enough for me to beat torikan.

Last edited: 31 Mar 2020
FreakyByte and Sinewave like this.
8. ### Sinewave

Ahh, fair enough. I thought you made an all new rule. Yeah, that one is legit and acceptable. I'll add these ASAP.

9. ### FreakyByte

I got none of it to work. .___.

MaryHadALittle had the amazing idea of doing the 180-Field thing but with exchange field so you really have two playfields going on, switching between them every couple pieces. In the end I couldn't do it because I would've needed a way to either put Player 2 into versus mode without activating actual versus mode or make Player 2 immortal (get the active piece out of bounds or make lock delay infinite or just make the piece disappear, anything). All of this I have cheats for on P1's side, but I didn't have the time to search for the correct memory addresses to do it on P2's side.

So, since that didn't work, I just had to do some random shit, which honestly might be what you people actually want to see.

TAP All "T"s
Level 94 @ 1:13:18
Code:
<cheat desc="Carnival 2020 - Mr. T">
<script state="run">
<action condition="maincpu.pb@6064BF7 == 2 and maincpu.pb@6064BFA==0">maincpu.pb@6064BFA=60</action>
<action condition="maincpu.pb@6064BF7 == 2 and maincpu.pb@6064BFA==1">maincpu.pb@6064BFA=61</action>
<action condition="maincpu.pb@6064BF7 == 2 and maincpu.pb@6064BFA==2">maincpu.pb@6064BFA=62</action>
<action condition="maincpu.pb@6064BF7 == 2 and maincpu.pb@6064BFA==3">maincpu.pb@6064BFA=63</action>

<action condition="maincpu.pb@6064BF7 == 3 and maincpu.pb@6064BFA==0">maincpu.pb@6064BFA=50</action>
<action condition="maincpu.pb@6064BF7 == 3 and maincpu.pb@6064BFA==1">maincpu.pb@6064BFA=51</action>
<action condition="maincpu.pb@6064BF7 == 3 and maincpu.pb@6064BFA==2">maincpu.pb@6064BFA=52</action>
<action condition="maincpu.pb@6064BF7 == 3 and maincpu.pb@6064BFA==3">maincpu.pb@6064BFA=53</action>

<action condition="maincpu.pb@6064BF7 == 4 and maincpu.pb@6064BFA==0">maincpu.pb@6064BFA=40</action>
<action condition="maincpu.pb@6064BF7 == 4 and maincpu.pb@6064BFA==1">maincpu.pb@6064BFA=41</action>
<action condition="maincpu.pb@6064BF7 == 4 and maincpu.pb@6064BFA==2">maincpu.pb@6064BFA=42</action>
<action condition="maincpu.pb@6064BF7 == 4 and maincpu.pb@6064BFA==3">maincpu.pb@6064BFA=43</action>

<action condition="maincpu.pb@6064BF7 == 5 and maincpu.pb@6064BFA==0">maincpu.pb@6064BFA=30</action>
<action condition="maincpu.pb@6064BF7 == 5 and maincpu.pb@6064BFA==1">maincpu.pb@6064BFA=31</action>
<action condition="maincpu.pb@6064BF7 == 5 and maincpu.pb@6064BFA==2">maincpu.pb@6064BFA=32</action>
<action condition="maincpu.pb@6064BF7 == 5 and maincpu.pb@6064BFA==3">maincpu.pb@6064BFA=33</action>

<action condition="maincpu.pb@6064BF7 == 6 and maincpu.pb@6064BFA==0">maincpu.pb@6064BFA=20</action>
<action condition="maincpu.pb@6064BF7 == 6 and maincpu.pb@6064BFA==1">maincpu.pb@6064BFA=21</action>
<action condition="maincpu.pb@6064BF7 == 6 and maincpu.pb@6064BFA==2">maincpu.pb@6064BFA=22</action>
<action condition="maincpu.pb@6064BF7 == 6 and maincpu.pb@6064BFA==3">maincpu.pb@6064BFA=23</action>

<action condition="maincpu.pb@6064BF7 == 7 and maincpu.pb@6064BFA==0">maincpu.pb@6064BFA=10</action>
<action condition="maincpu.pb@6064BF7 == 7 and maincpu.pb@6064BFA==1">maincpu.pb@6064BFA=11</action>
<action condition="maincpu.pb@6064BF7 == 7 and maincpu.pb@6064BFA==2">maincpu.pb@6064BFA=12</action>
<action condition="maincpu.pb@6064BF7 == 7 and maincpu.pb@6064BFA==3">maincpu.pb@6064BFA=13</action>
</script>
</cheat>


TAP All "O"s
Level 289 @ 2:35:68 (with some hilarious extra footage at the end)
Code:
<cheat desc="Carnival 2020 - Commodore O">
<script state="run">
<action condition="maincpu.pb@6064BF7 == 2 and maincpu.pb@6064BFA==0">maincpu.pb@6064BFA=50</action>
<action condition="maincpu.pb@6064BF7 == 2 and maincpu.pb@6064BFA==1">maincpu.pb@6064BFA=50</action>
<action condition="maincpu.pb@6064BF7 == 2 and maincpu.pb@6064BFA==2">maincpu.pb@6064BFA=50</action>
<action condition="maincpu.pb@6064BF7 == 2 and maincpu.pb@6064BFA==3">maincpu.pb@6064BFA=50</action>

<action condition="maincpu.pb@6064BF7 == 3 and maincpu.pb@6064BFA==0">maincpu.pb@6064BFA=40</action>
<action condition="maincpu.pb@6064BF7 == 3 and maincpu.pb@6064BFA==1">maincpu.pb@6064BFA=40</action>
<action condition="maincpu.pb@6064BF7 == 3 and maincpu.pb@6064BFA==2">maincpu.pb@6064BFA=40</action>
<action condition="maincpu.pb@6064BF7 == 3 and maincpu.pb@6064BFA==3">maincpu.pb@6064BFA=40</action>

<action condition="maincpu.pb@6064BF7 == 4 and maincpu.pb@6064BFA==0">maincpu.pb@6064BFA=30</action>
<action condition="maincpu.pb@6064BF7 == 4 and maincpu.pb@6064BFA==1">maincpu.pb@6064BFA=30</action>
<action condition="maincpu.pb@6064BF7 == 4 and maincpu.pb@6064BFA==2">maincpu.pb@6064BFA=30</action>
<action condition="maincpu.pb@6064BF7 == 4 and maincpu.pb@6064BFA==3">maincpu.pb@6064BFA=30</action>

<action condition="maincpu.pb@6064BF7 == 5 and maincpu.pb@6064BFA==0">maincpu.pb@6064BFA=20</action>
<action condition="maincpu.pb@6064BF7 == 5 and maincpu.pb@6064BFA==1">maincpu.pb@6064BFA=20</action>
<action condition="maincpu.pb@6064BF7 == 5 and maincpu.pb@6064BFA==2">maincpu.pb@6064BFA=20</action>
<action condition="maincpu.pb@6064BF7 == 5 and maincpu.pb@6064BFA==3">maincpu.pb@6064BFA=20</action>

<action condition="maincpu.pb@6064BF7 == 6 and maincpu.pb@6064BFA==0">maincpu.pb@6064BFA=10</action>
<action condition="maincpu.pb@6064BF7 == 6 and maincpu.pb@6064BFA==1">maincpu.pb@6064BFA=10</action>
<action condition="maincpu.pb@6064BF7 == 6 and maincpu.pb@6064BFA==2">maincpu.pb@6064BFA=10</action>
<action condition="maincpu.pb@6064BF7 == 6 and maincpu.pb@6064BFA==3">maincpu.pb@6064BFA=10</action>

<action condition="maincpu.pb@6064BF7 == 8 and maincpu.pb@6064BFA==0">maincpu.pb@6064BFA=F0</action>
<action condition="maincpu.pb@6064BF7 == 8 and maincpu.pb@6064BFA==1">maincpu.pb@6064BFA=F0</action>
<action condition="maincpu.pb@6064BF7 == 8 and maincpu.pb@6064BFA==2">maincpu.pb@6064BFA=F0</action>
<action condition="maincpu.pb@6064BF7 == 8 and maincpu.pb@6064BFA==3">maincpu.pb@6064BFA=F0</action>
</script>
</cheat>


Ok, what's going on here? Basically, there's a variable in the game that stores the current "rotation state" of the piece, as in which way it's rotated. Usually this variable should only take the values 0, 1, 2, or 3, but using cheats we can go beyond that. There you'll find some bizarre disjoint pieces (which I unfortunately couldn't use because a tetromino would change something which isn't quite a tetromino anymore, even if it's made of 4 blocks) and other weird stuff, but also the other tetrominos you're familiar with. So by changing the rotation state after the first frame, I'm not violating the rule regarding the balanced randomiser, but I turn everything into a T or O piece.

There is a downside though... when rotating the piece, the way I'm doing it the piece first turns back to it's normal rotation state (so a red T will go back to being an I piece etc.) for just a frame before turning into the correctly rotated T piece. This really throws off the offsets and the kicks, which means pieces get stuck inside each other and in the floor and outside the walls and stuff a lot... '
Also the cyan O for some odd reason has the hitbox of an I and turns into an I once placed. Don't ask me why, I don't get it either. It's what makes the All "O"s run suprisingly difficult. The thing is, you can rotate the O pieces and have them kick everywhere to kinda get around this... xD

All J, L, Z, S or any mixtures would also have been possible, but it's honestly just not too fun to play (which is also why I didn't grind All "O"s more). All "I"s should be very possible since they should be misbehaving far less, but I thought I'd change it up a little...

TAP G o l d
Level 999 @ 4:59:25
Code:
<cheat desc="P1 Current Piece">
<parameter min="0" max="99999999999" step="1"/>
<script state="run">
<action>maincpu.pb@6064BF7=param</action>
</script>
</cheat>


In this case, instead of changing the rotation state of a piece to an unused value after one frame, I'm changing the variable that holds the currents piece. The values 2 to 8 are the seven colorful tetrominos we all know and love, but for some reason a value of 11 will turn the current piece into an already rotated but now unrotatable golden I piece. I have no idea why that's in the game, but I like it.

An last and kinda least, I also got a slightly better score on this one:
TAP 180 Field (yes I called this mirror block before I have no idea why)
Level 329 @ 2:42:98
Code:
<cheat desc="Activate Item Mode">
<parameter min="0" max="1" step="1"/>
<script state="run">
<action>maincpu.pw@6064BA4=(0200|(maincpu.pw@6064BA4 BAND ~0200))</action>
</script>
</cheat>
<cheat desc="Every Item change into">
<parameter>
<item value="0x00">Nothing</item>
<item value="0x01">Death Block</item>
<item value="0x02">Negate Field</item>
<item value="0x03">Color Block</item>
<item value="0x04">Delete Field Upper</item>
<item value="0x05">Delete Field Lower</item>
<item value="0x06">Move Field Right</item>
<item value="0x07">Move Field Left</item>
<item value="0x08">Delete Even</item>
<item value="0x09">180</item>
<item value="0x0A">Shotgun</item>
<item value="0x0B">Hard Block</item>
<item value="0x0C">Laser</item>
<item value="0x0D">Roll Roll</item>
<item value="0x0E">Transform</item>
<item value="0x0F">Free Fall</item>
<item value="0x10">X-Ray</item>
<item value="0x11">Exchange Field</item>
<item value="0x12">Mirror Field</item>
<item value="0x13">Dark Block</item>
</parameter>
<script state="run">
<action>maincpu.pb@6064C17=param</action>
</script>
</cheat>

At least this one is pretty fun to play.

Oh, and one last fun idea: wagtehdog suggested the idea of doing the All Items thing in Death versus. So yea next time I meet up with any one of you people we have to do this.

tl;dr: mame cheats fun

d4nin3u likes this.