• Our software update is now concluded. You will need to reset your password to log in. In order to do this, you will have to click "Log in" in the top right corner and then "Forgot your password?".
  • Welcome to PokéCommunity! Register now and join one of the best fan communities on the 'net to talk Pokémon and more! We are not affiliated with The Pokémon Company or Nintendo.

[Tool] BATCH EDITOR - Tool idea

3
Posts
3
Years
  • First of all, WOW!, what incredible community this is, I want to specially thank Avara for her guides which got me into this incredible hobby of ROM Hacking, without her guidance I would have never gotten as far as even changing a Pokemon name let alone making my own Hack.

    I started ROM Hacking back in 2018, none of my Hacks are worth posting here, I haven't gotten very far, I have made plenty but individually they are pure garbage, the concepts in all of them together might have a shot if they were in a single ROM… but they aren't.

    Now, I understand absolutely nothing about programming, I cant even set my microwave timer but after all this time playing around ROM Hacking I think I have come up with an idea for a tool I haven't been able to find around (if you know of any please let me know) and I think it would be AWESOME.

    In my case with my none existent knowledge of programming the only way I have to make my Hacks is using multiple tools, ie. AdvanceMap, XSE, HopelessTrainerEditor, YAPE, FSF and so on… and as much as I love those tools and appreciate and admire all the people that have put their time and effort in creating them in the long run they all are… laborious to say the least SO…

    Here's the pitch.

    BATCH EDITOR​

    Instead of having to use three different tools to say… edit an existent trainer you create a text file with all the trainers you want to edit and all their proprieties and the program edits all of them using it.

    Here's an example:
    Code:
    Trainer.edit([
      { id: '0x001', sprite: '0' name: 'SAWYER', sex: 'Male', intro_music: '11', double_battle: '', custom_held_items: '', custom_movesets: '', ai: '7', prize: '840', class: '0x2', money_rate: '10', items: ['', '', '', ''], pokemon_data: [party_offset: '0x030B62C', [species: '0x4A', name: 'GEODUDE', level: '21', ev: '0', held_item: '', attacks: ['', '', '', '']] },
      { id: '0x002', sprite: '1' name: 'GRUNT', sex: 'Male', intro_music: '6', double_battle: '', custom_held_items: '', custom_movesets: '', ai: '1', prize: '640', class: '0x3', money_rate: '5', items: ['', '', '', ''], pokemon_data: [party_offset: '0x030B634', [species: '0x11E', name: 'POOCHYENA', level: '32', ev: '0', held_item: '', attacks: ['', '', '', '']] },
    ]);

    For some of you the format might look familiar, i tried to base it on mongoose.

    I hope the gist of the idea is clear by now… so instead of having to edit multiple trainers individually you can import a ".txt" file into the program with all the trainers you want to modify with the above mentioned format and the program would modify them all.

    Now I could go on and make another example like the one above for Creating a new trainer, modifying encounters in an existent map, modifying pokemon proprieties or items but I think by now doing so would be redundant.

    That's all, if you got this far I thank you for reading this and if this idea seems cool, doable and/or useful for any of you and would like to talk more about it I would more than gladly do so.

    THANK YOU ALL FOR ALL YOU HAVE DONE.

    SERIOUSLY.​

    I love the franchise, I love being able to have fun fiddling around with the ROM's and making my own stuff and NONE of it would be possible without the hardcore devotion from all the people from this and many other communities around that make it possible.
     

    Asith

    Uwao
    237
    Posts
    3
    Years
    • Seen May 8, 2024
    Yeah you don't really use all those tools anymore haha. HexManiacAdvance came around and replaced almost all of them. It's much less fiddly, doesn't break the game, handles all the annoying stuff for you, and is just much easier to use. The only hacking tools you'd use nowadays are HMA, advancemap, and xse. HMA is being updated to replace both of those too though, so you'll only ever need 1 tool for literally everything. It's an absolute must if you're binary hacking in 2023
    More to the point, HMA also supports python scripts for batch editing. It's not exactly what you envisioned, but you can edit ALL the information a trainer needs (even more than you've listed) from a single menu and even automate it using python if you want to save time on multiple edits
     

    haven1433

    Modder / Programmer
    42
    Posts
    10
    Years
    • Seen Jan 16, 2024
    Here's an example of what the 'batch edit' from your example would look like using HMA's python automation:

    Code:
    sawyer = data.trainers.stats[3]
    sawyer.name = "SAWYER"
    sawyer.introMusicAndGender.female = False
    sawyer.introMusicAndGender.music = 11
    sawyer.doubleBattle = 'Single'
    sawyer.ai.CheckBadMove = True
    sawyer['class'] = "Guitarist"
    sawyer.item1 = '???'
    sawyer.pokemonCount = 1
    sawyer.pokemon[0].mon = 'Geodude'
    sawyer.pokemon[0].level= 21

    As you can see, the syntax is a little different, but the overall result is the same: you can specify what you want as a text file, and then use HMA to insert it. This works for any table data in the game, and since it's python, it also lets you do more automated things. One common request is making every pokemon very easy to catch:

    Code:
    for mon in data.pokemon.stats:
      mon.catchRate = 255
     

    X_Zenith

    Banned
    145
    Posts
    3
    Years
  • Here's an example of what the 'batch edit' from your example would look like using HMA's python automation:

    Code:
    sawyer = data.trainers.stats[3]
    sawyer.name = "SAWYER"
    sawyer.introMusicAndGender.female = False
    sawyer.introMusicAndGender.music = 11
    sawyer.doubleBattle = 'Single'
    sawyer.ai.CheckBadMove = True
    sawyer['class'] = "Guitarist"
    sawyer.item1 = '???'
    sawyer.pokemonCount = 1
    sawyer.pokemon[0].mon = 'Geodude'
    sawyer.pokemon[0].level= 21

    As you can see, the syntax is a little different, but the overall result is the same: you can specify what you want as a text file, and then use HMA to insert it. This works for any table data in the game, and since it's python, it also lets you do more automated things. One common request is making every pokemon very easy to catch:

    Code:
    for mon in data.pokemon.stats:
      mon.catchRate = 255

    Hey haven how it would be a music editor in hma? As adding music is a very sleepy work.
     

    haven1433

    Modder / Programmer
    42
    Posts
    10
    Years
    • Seen Jan 16, 2024
    how it would be a music editor
    It wouldn't be, the question was about automating trainer data.

    adding music is a very sleepy work
    HMA has two feature lists that guide development: the green list, which are expected future features, and the red list, which are features that are specifically avoided to prevent scope creep. Music editing is a big crazy thing with tons of detail involved, it's on the red list because making a music editor would take a lot of time that could be better spent on other features and bugfixes.
     

    X_Zenith

    Banned
    145
    Posts
    3
    Years
  • It wouldn't be, the question was about automating trainer data.


    HMA has two feature lists that guide development: the green list, which are expected future features, and the red list, which are features that are specifically avoided to prevent scope creep. Music editing is a big crazy thing with tons of detail involved, it's on the red list because making a music editor would take a lot of time that could be better spent on other features and bugfixes.

    Agree ...
     
    Back
    Top