Final Fantasy Better Shops ROM Hack Pt. 2

Поделиться
HTML-код
  • Опубликовано: 29 сен 2024

Комментарии • 26

  • @xziaah6j63kx9
    @xziaah6j63kx9 2 года назад +4

    Hi. I have seizure problems. Could you make a video about how to Romhack Nes games to turn off those infamous flashing effects during NES era?

  • @EriknocTDW
    @EriknocTDW 3 года назад +7

    @12:53 "Then, I replaced the last 2 instructions of section 4 with a single instruction that jumped to the correct spot in the code. This eliminated the redundancy by having the program just reuse the same 2 instructions. More importantly, it freed up 3 bytes..."
    There are 2 more optimal ways to skip over the LDA #$0C without having to do a JMP.
    After the LDA #$13, you could:
    BNE +2
    (Using 1 less byte, saving 4 bytes total.)
    --OR--
    .byte $2C ;BIT abs instr to mask out next 2 bytes
    (Using 2 less bytes, saving 5 bytes total.)
    Of course since you didn't need that additional byte or two, your JMP does get the job done without leaving a hole in the code, which I'm assuming was why you decided to do that.

    • @NesHacker
      @NesHacker  3 года назад +2

      Yeah, I think that was just the first decent way I came up with when I was working on the hack and it seemed relatively clean so I went with it. I like your solutions though, they’re really clever :)

    • @EriknocTDW
      @EriknocTDW 3 года назад +2

      @@NesHacker Thank you. I can't take credit as I have learned those techniques from others. I am happy to pass it on though. 🙂

  • @arsenkay
    @arsenkay 2 года назад +3

    Superb video!

  • @thehollowknerd3858
    @thehollowknerd3858 Год назад +3

    Thank you for explaining a lot of this. I've really been interested in making ROM hacks of final fantasy and this really helped :)

    • @NesHacker
      @NesHacker  Год назад +1

      Awesome, hope you have fun!

  • @AT-zr9tv
    @AT-zr9tv 2 года назад +5

    Great video, once again.
    It must have been quite satisfying to manage to save exactly the 3 bytes you needed for your hacked code to fit. :)
    I've had that issue when hacking GameBoy games, and a quick and dirty trick (when possible) is to write your code in an unused section of the ROM bank. You then only need to jump to that location, which takes very few bytes.

    • @NesHacker
      @NesHacker  2 года назад +2

      Indeed, you should check out part three ;)

  • @erikhendrickson59
    @erikhendrickson59 Год назад +2

    Awesome video and awesome shirt!

  • @alieander
    @alieander 3 года назад +6

    Meet to see the code moving around!
    Can't wait for the final results!

    • @NesHacker
      @NesHacker  3 года назад

      Make sure to check out part 3, more moving code... but this time in 3D ;)

  • @hicknopunk
    @hicknopunk 3 года назад +2

    Love your videos. One day I hope to learn the 6502 enough to program simple mac games I made as a kid.

    • @NesHacker
      @NesHacker  3 года назад +2

      Nice! Yeah I just found a box that had been tucked away in my parent’s attic and it had both an Atari 2600 and an Atari 600XL in it. Can’t wait to start messing with those in the future xD

  • @riyantan9237
    @riyantan9237 3 года назад +2

    That's a fantastic video. Thank you very much for making and sharing with us!!

    • @NesHacker
      @NesHacker  3 года назад +1

      No problem :), they’re a lot of fun to make

  • @twobob
    @twobob Год назад

    i did the cheat hacking to add perma fly to your nes input contoller rom. was fun.

  • @JacklapottTv
    @JacklapottTv 2 года назад +1

    A mere question related to bank switching, how can a CPU continue execution when a bank is switched on the current active bank ? For me the CPU end up executing a random code on the newly activated bank

    • @NesHacker
      @NesHacker  2 года назад +2

      There are two banks of memory active at a time. One is always fixed to a specific bank (in this case the upper addresses fixed to the $0F bank) and the other is swapped. To make sure random code isn’t executed the bank swap code is usually placed on the fixed bank. This way the PC is executing instructions there while the other bank is swapped out.

    • @JacklapottTv
      @JacklapottTv 2 года назад +1

      @@NesHacker i see, then in this case what if my code jump to the new bank, and continue execution from there, how can i activated a 3rd bank and jump to it ?

    • @NesHacker
      @NesHacker  2 года назад +2

      @@JacklapottTv Well there is only enough address space to hold two banks. So you’ll never have three banks active at the same time. For the MMC1 mapper chip, which is used by Final Fantasy, you always have bank $0F active and one swappable one. So if you needed to access code in a third, you’d need to hop onto the fixed bank and swap the banks again. Having three active at the same time is not possible.
      A side note though. If you ensure every bank has the exact same swap code at the same locations it’s possible to perform the swap from any bank, but it’s not really needed if you structure your swap routines correctly and use parameters to tell it when to jump after it is done.

    • @JacklapottTv
      @JacklapottTv 2 года назад +1

      @@NesHacker awesome, now i understand better the need for having a fixed bank & a swapable one, thank you (y)

  • @kevinferneine553
    @kevinferneine553 3 года назад +1

    In the minute 4:27 you make Conditions, where or where is the list of all the conditions for NES? in order to carry out and understand them.

    • @NesHacker
      @NesHacker  3 года назад

      Ah, so the conditions I’m talking about there are for when you set breakpoints in the FCEUX debugger. It’s not a full list of what can be done (cause that would be very long) but you can learn how to better use the debugger and set conditional breakpoints by reading the FCEUX docs here: fceux.com/web/help/Debugger.html

  • @edmocaldas
    @edmocaldas Год назад

    Congratulations! 👏

  • @f.berger7756
    @f.berger7756 Год назад

    So basically you made a trainer 😀