magic_lobster_party

  • 0 Posts
  • 17 Comments
Joined 5 months ago
cake
Cake day: August 15th, 2024

help-circle



  • Not only that. Emulators must often ”cheat” to achieve high speeds. This means emulators doesn’t try to achieve a 1:1 replication of what’s happening inside the hardware, but something that’s gives close enough results and better tailored for modern hardware.

    The reason why N64 is particularly difficult is because each game must be optimized individually (due to the heavy reliance on microcode). The emulator must replicate the hardware at a much lower level for an accurate emulation of all games. Emulator developers can apply optimizations on each individual game, but it’s incredibly time consuming to do so for every game in the N64 library.






  • I’m not sure. I preferred MK64 back in the day.

    I think the specials make the game quite unbalanced. It’s more about picking favorite special rather than favorite character. If you don’t like a particular special, well then you will never play those characters (I’m looking at you Peach and Daisy).

    With the other MK games I just pick whatever character I feel like playing today.

    I also didn’t like how triple shells became limited to the Koopas only. Those should be accessible by everyone.




  • I love the game. Even got all the endings.

    I think all the parrying is more satisfying than all the dodge rolls in Dark Souls. It makes cool noises and look more spectacular. Dodge rolls just look weird and doesn’t make sense at all (but it’s still fun to do).

    And if you think the game is too easy, there’s a way to make it harder (before NG+). You can ring the Demon Bell found in Senpou Temple, which will trigger some form of ”hard mode”.





  • Basically it’s just an optimization of a double nested for loop. It’s a way to avoid running the inner for loop when it is known there will be no hit.

    This is useful when we for example want to find all product orders of customers in a particular country. The way we can do this is to first filter all customers by their country, and then match orders by the remaining customers. The matching step is the double for loop.

    Something like this:

    for order in orders:
        for customer in customers_in_country:
            if order.customer_id == customer.id:
                …
    

    Many orders won’t match a customer in the above query, so we want to single out these orders before we run the expensive inner for loop. The way they do it is to create a cache using a Bloom filter. I’d recommend looking it up, but it’s a probabilistic cache that’s fast and space efficient, at the cost of letting through some false positives. With this particular use case it’s ok to have some false positives. The worst thing that can happen is that the inner for loop is run more times than necessary.

    The final code is something like this:

    bloom_filter = create_bloom(customers_in_country)
    for order in orders:
        if bloom_filter.contains(order.customer_id):
            for customer in customers_in_country:
                if order.customer_id == customer.id:
                    …
    

    Edit: this comment probably contain many inaccuracies, as I’ve never done this kind of stuff in practice, so don’t rely too much on it.