Giter Site home page Giter Site logo

haven1433 / hexmaniacadvance Goto Github PK

View Code? Open in Web Editor NEW
171.0 10.0 41.0 14.8 MB

A tool for editing tables, text, scripts, images, and other data in Pokemon GBA games

License: MIT License

C# 99.86% Assembly 0.08% Python 0.03% Shell 0.02%
hex-editor pokemon-gba-games

hexmaniacadvance's Introduction

Hex Maniac Advance

HexManiacAdvance is an all-purpose editor designed for editing Pokemon GBA games. It specifically targets the English games Ruby (AXVE), Sapphire (AXPE), FireRed (BPRE), LeafGreen (BPGE), and Emerald (BPEE). It has a reduced set of features when opening other files.

Other than standard hex editor features like view/edit, copy/paste, and diff, it also provides improved navigation, display, and editing for working with data within the files. It also has custom editors for complex data like code, images, maps, and the pokedex.

Screenshot

What Can HexManiacAdvance do for me?

Data Editing

  • Edit Pokemon, Trainers, Moves, Items, and more.
  • Use the goto tool to help you locate and edit uncommon data like SoundProof moves, trainer payout, in-game trades, and moves that can't be copied by Metronome.
  • Edit many constants within the game, such as the shiny odds, stat boost from badges, or the exp boost for lucky egg and traded pokemon.

Map Editing

  • Edit existing maps, events, connections, and warps using a separate tab.
  • Simple event scripts are converted into controls directly in the map editor, so you don't need to change your view to edit text, trainers, and more.
  • Jump quickly between related maps, scripts, and tables.

Text Editing

  • Find and edit almost any text in the game.
  • Safely and automatically repoint text that no longer fits at its original address.

Image Editing

  • Edit images and tilemaps directly within HMA, or use import/export to convert from PNG so you can use your favorite image editor.
  • Never worry about tilesets again: HMA lets you treat tilemaps just like any other sprite.
  • Edit the title screen, menus, townmap, icons, sprites, and other image data in the game.
  • Have full control over how you handle shared palettes, or ask HMA to do it for you.

Code Editing

  • View/Edit event scripts similar to how you would with XSE, but with additional macros.
  • View/Edit other types of scripts used for moves effects, move animations, and trainer ai.
  • View/Edit thumb code.

Utilities

  • Safely add the Fairy type to your game.
  • Expand your game with any number of additional moves or tutors.
  • Add abilities similar to Pixilate.
  • Create and apply patches (.ips and .ups).
  • Reorder your pokedex.
  • Export backups as you work.

Community

  • An active discord community to help with any problems you encounter
  • Frequent releases with bugfixes and new features

Here's a quote about the tool from Asith, Pokemon GBA Rom Hacker. Maker of Spectrobes GBA, judge from MAGM4, winner of MAGM5.

HexManiacAdvance is now a must-have binary hacking tool. It does what all the old tools did but better and safer, essentially being an all-in-one toolkit. You can make an entire hack using only HMA, and when that's combined with its QoL features and safety nets to not break your rom, there's no reason to use tools of the past. I'm especially impressed with how its new map and script editors have ousted AdvanceMap and XSE - tools that were the only option for a decade - by immediately being 10 times better to use. It has changed the binary hacking standard to the point where classic binary hacking and HMA hacking are completely distinct and I can't imagine working without it.

Getting Started

As a User

Go visit the releases page to grab the latest public build.

Visit the Wiki to see a user guide, tutorials, and other resources.

Visit the Discord to connect with other users.

Running HexManiacAdvance requires Windows and .Net 6.0: x64 x86

As a Developer

Clone or download the project, then open the solution with Visual Studio 2022.

Once you have the solution open in Visual Studio, you can find the XUnit automated tests in the test explorer window. Note that some tests expect you to have roms in a folder called "sampleFiles" within ..\HexManiac\artifacts\HexManiac.Tests\bin\Debug\net6.0.

For information on the achitecture of the application, see the Developer Guide.

License

This project is licensed under the MIT License - see the LICENSE file for details.

hexmaniacadvance's People

Contributors

agsmgmaster64 avatar axcellerator avatar benjamin-popp avatar eliptus avatar haven1433 avatar merilec avatar phoenixbound avatar shinytilldawn avatar smig0l avatar thediamondminer avatar trainerx493 avatar yak-attack avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

hexmaniacadvance's Issues

No mechanism to detect/reload when a file changes on disk

Currently if a file changes on disk while the file is loaded by gen3hex, there is no mechanism in place to detect that change. Having a way to (semi-)automatically reload a file from disk would let me use the editor in conjunction with other editing programs, and switch between them in a more seamless way.

In my mind there are two distinct scenarios for which the behavior might need to differ. The first is when the file is clean, and the version in memory matches the old version on disk, prior to it being modified externally. Visual Studio Code handles this by automatically loading the changes from disk, but allowing you to access the previous version through undo. Visual Studio prompts you to optionally reload it, and tells you that you have no unsaved changes in that editor.

The second scenario is when the file in memory is dirty, and unsaved changes exist. It appears the Visual Studio Code does not do anything in this case, while Visual Studio alerts you that the file has been changed in both places and prompts you to optionally reload it.

Error every time a new trainer is created

This error occurs every time I drag a new trainer out of the ribbon, but I've been able to create several trainers before this.
I found out I should be using v1.0 after getting 50% done with my hack, so if it's related to that, just ignore.

Notes from crash.log:

Version Number: 0.5.6
Release Version
3/24/2024 10:06:29 AM
General Information:
Current tab count: 2
Current selected tab: 1
---
Tab is ViewPort for Pokemon - FireRed Version (USA, Europe) (Rev 1).gba
Game Code: BPRE1
Data Length: 0x1000000
Pokemon Count: 0
---
Tab is map for (0-13)
Size: 28x14
Events: 1-2-0-12
---
Exception Information:
System.ArgumentOutOfRangeException
Index was out of range. Must be non-negative and less than the size of the collection. (Parameter 'index')

   at HavenSoft.HexManiac.Core.ViewModels.Map.EventTemplate.CreateTrainer(ObjectEventViewModel objectEventModel, ModelDelta token) in D:\root\GitHub\HexManiac\src\HexManiac.Core\ViewModels\Map\EventTemplate.cs:line 0
   at HavenSoft.HexManiac.Core.ViewModels.Map.EventTemplate.ApplyTemplate(ObjectEventViewModel objectEventModel, ModelDelta token) in D:\root\GitHub\HexManiac\src\HexManiac.Core\ViewModels\Map\EventTemplate.cs:line 171
   at HavenSoft.HexManiac.Core.ViewModels.Map.MapEditorViewModel.CreateEventForCreationInteraction(EventCreationType type) in D:\root\GitHub\HexManiac\src\HexManiac.Core\ViewModels\Map\MapEditorViewModel.cs:line 1038
   at HavenSoft.HexManiac.Core.ViewModels.Map.MapEditorViewModel.EventMove(Double x, Double y) in D:\root\GitHub\HexManiac\src\HexManiac.Core\ViewModels\Map\MapEditorViewModel.cs:line 918
   at HavenSoft.HexManiac.Core.ViewModels.Map.MapEditorViewModel.PrimaryMove(Double x, Double y) in D:\root\GitHub\HexManiac\src\HexManiac.Core\ViewModels\Map\MapEditorViewModel.cs:line 764
   at HavenSoft.HexManiac.WPF.Controls.MapTab.ButtonMove(Object sender, MouseEventArgs e) in D:\root\GitHub\HexManiac\src\HexManiac.WPF\Controls\MapTab.xaml.cs:line 199
   at System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target)
   at System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)
   at System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args)
   at System.Windows.UIElement.RaiseTrustedEvent(RoutedEventArgs args)
   at System.Windows.Input.InputManager.ProcessStagingArea()
   at System.Windows.Input.InputProviderSite.ReportInput(InputReport inputReport)
   at System.Windows.Interop.HwndMouseInputProvider.ReportInput(IntPtr hwnd, InputMode mode, Int32 timestamp, RawMouseActions actions, Int32 x, Int32 y, Int32 wheel)
   at System.Windows.Interop.HwndMouseInputProvider.FilterMessage(IntPtr hwnd, WindowMessage msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
   at System.Windows.Interop.HwndSource.InputFilterMessage(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
   at MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
   at MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o)
   at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
   at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)

-------------------------------------------

HM MENU ISSUE

When I expand the move pool it seems to cause a menu issue with the HM moves where there is no text saying "CUT" or "ROCK SMASH" even though I can see the menu text telling me what these commands do.

MacOS support.

I have tried wine it doesn’t work. On mac you can build .net apps. This project uses Windows libraries that MacOS's .net doesn't support. Please switch over to non Windows dependencies.

Won't Open in Wine

Both the 32-bit and 64-bit versions crash with a stack overflow exception in Wine, and no, I can't switch to Windows.

Map editor does not work if there are new maps

Hi, I'm having issues with the map editor. I tested with a slightly modified rom and seems to work fine, but in my hack (which has new maps and new maps banks), the map editor doesn't even appear. I tried editing the .toml file of my rom to match the new amount of maps, but couldn't fix the problem.
Also, I'm only able to find the map editor (in the vanilla rom) by pressing Ctrl+G. Is that right?

Works only with Windows 10 1607 and newer

Though I am not on Windows 7, 8, nor any older, my Windows 10 hadn't been updated for a very long time, which with my bandwidth would take another few weeks at this point.
Therefore I ask, is .Net 4.7.2 really a must have or could you simply change it in project settings to any lower and compile with no trouble?

It's quite strange because Windows 7 is capable of installing newest dotnets, while all of Windows 8 and some versions of 10 are not allowed. For Windows 8 newest installable is 4.6.1. For my Windows 10 it is 4.6.2.
Now I also see that Windows 8.1 is again allowed to install everything that Windows 7 was able to.

Thank you for any answer. Tool seems to be interesting but I didn't get a chance to use it yet.

[Feature Request] Option to see colors in "0-255 Color Mode"(?)

Hi. I used HMA earlier to see the edits of my party screen colors in real time. Pretty cool feature.
However, I'm noticing that the way in which the program visualizes color codes goes from 0 to 31.

It would be super helpful if the user could enable a mode to show them in whatever color mode goes from 0 to 255. That way even people using the decompilation projects made by Pret could benefit from HMA's spriting capabilities and quickly paste over colors from HMA to the palette files used by said projects 👀

Doesn't open

Well i wanted to test this tool but it doesn't work no matter what i do.
Installed the suspicious requirement,after that i double click and it won't launch no matter how many times i launch it.
I use windows 7 (no won't update to windows 10 because i don't want spyware or NSA tools on my OS) linux version won't work on ubuntu so out of ideas.
COuld have used something like this but is just like advanca text editor that doesn't edit anything in reality.
I just need something that runs on default without requiring extra downloads using either java or VC

Legendary encounters freeze

image

While playing and trigger a legendary encounters the game freeze

I don't know if it's useful but my game is a french version

Stuck on script description when drag&dropping script into window

Hi there! I'm very new to HMA and romhacking in general, so this might be my own fault somehow.

I downloaded the last version of HMA and I'm using a clean vanilla Emerald ROM. When I drag&drop one of the default scripts (like the fairy type script, or the physical/special split) into the HMA window, the description popin that is displayed while holding remains upon release, and nothing happens:

image

What could the issue be?

Pallet Resolution for Multiple Pages Causes Error

Whenever I attempt to import an image with multiple pages, if I select any pallet resolution option other than Cautious, I get this error.

Notes from crash.log:

Version Number:0.4.5
Release Version
11/26/2022 5:35:12 AM
General Information:
Current tab count: 2
Current selected tab: 1
Tab is ViewPort for Pokemon - Radical Red - v3.1.gba
Game Code: BPRE0
Data Length: 0x2000000
Pokemon Count: 823
---
Tab is ViewPort for Moemon - Mega Fire Red - v1.2b.gba
Game Code: BPRE0
Data Length: 0x2000000
Pokemon Count: 412
---
Exception Information:
System.IndexOutOfRangeException
Index was outside the bounds of the array.
   at HavenSoft.HexManiac.Core.ViewModels.Tools.SpriteTool.WriteSpritesAndPalette(ISpriteRun spriteRun, IPaletteRun paletteRun, Int16[][] images, IReadOnlyList`1 usablePalPages) in D:\root\GitHub\HexManiac\src\HexManiac.Core\ViewModels\Tools\SpriteTool.cs:line 0
   at HavenSoft.HexManiac.Core.ViewModels.Tools.SpriteTool.ImportTallSpriteAndPalette(IFileSystem fileSystem, Int16[] image, ISpriteRun spriteRun, IPaletteRun paletteRun) in D:\root\GitHub\HexManiac\src\HexManiac.Core\ViewModels\Tools\SpriteTool.cs:line 944
   at HavenSoft.HexManiac.Core.ViewModels.Tools.SpriteTool.ImportSpriteAndPalette(IFileSystem fileSystem) in D:\root\GitHub\HexManiac\src\HexManiac.Core\ViewModels\Tools\SpriteTool.cs:line 727
   at HavenSoft.HexManiac.Core.ViewModels.Tools.SpriteTool.<.ctor>b__158_8(Object arg) in D:\root\GitHub\HexManiac\src\HexManiac.Core\ViewModels\Tools\SpriteTool.cs:line 568
   at HavenSoft.HexManiac.Core.ViewModels.Tools.SpriteElementViewModel.ExecuteSpriteToolCommand(IFileSystem fs, ICommand command) in D:\root\GitHub\HexManiac\src\HexManiac.Core\ViewModels\Tools\SpriteElementViewModel.cs:line 153
   at HavenSoft.HexManiac.Core.ViewModels.Tools.SpriteElementViewModel.ExecuteImportImage(IFileSystem fs) in D:\root\GitHub\HexManiac\src\HexManiac.Core\ViewModels\Tools\SpriteElementViewModel.cs:line 102
   at HavenSoft.HexManiac.Core.ViewModels.ViewModelCore.<>c__DisplayClass14_0`1.<StubCommand>b__0(Object arg) in D:\root\GitHub\HexManiac\src\HexManiac.Core\ViewModels\ViewModelCore.cs:line 138
   at MS.Internal.Commands.CommandHelpers.CriticalExecuteCommandSource(ICommandSource commandSource, Boolean userInitiated)
   at System.Windows.Controls.Primitives.ButtonBase.OnClick()
   at System.Windows.Controls.Primitives.ToggleButton.OnClick()
   at System.Windows.Controls.Primitives.ButtonBase.OnMouseLeftButtonUp(MouseButtonEventArgs e)
   at System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target)
   at System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)
   at System.Windows.UIElement.ReRaiseEventAs(DependencyObject sender, RoutedEventArgs args, RoutedEvent newEvent)
   at System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target)
   at System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)
   at System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args)
   at System.Windows.UIElement.RaiseTrustedEvent(RoutedEventArgs args)
   at System.Windows.Input.InputManager.ProcessStagingArea()
   at System.Windows.Input.InputProviderSite.ReportInput(InputReport inputReport)
   at System.Windows.Interop.HwndMouseInputProvider.ReportInput(IntPtr hwnd, InputMode mode, Int32 timestamp, RawMouseActions actions, Int32 x, Int32 y, Int32 wheel)
   at System.Windows.Interop.HwndMouseInputProvider.FilterMessage(IntPtr hwnd, WindowMessage msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
   at System.Windows.Interop.HwndSource.InputFilterMessage(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
   at MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
   at MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o)
   at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
   at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)

-------------------------------------------

[Request] Visual of "elevation" for front sprite like back sprite has.

I've been trying to add a section in the UI like - "
[[NamedAnchors]]
Name = '''graphics.pokemon.sprites.coordinates.back'''
Address = 0x1A92514
Format = '''[size.|t|width::|height:: yOffset. render|render=graphics.battle.background.sprites/0/battlemap/|0|0|240|112|graphics.pokemon.sprites.back|40|48||yOffset unused:]data.pokemon.names''' "
but for the changes made with - " [[NamedAnchors]]
Name = '''graphics.pokemon.sprites.elevation'''
Address = 0x1AA8F12
Format = '''[elevation.]data.pokemon.names''' "

I can remove a section and it will be removed from the UI but whenever i try to add something like - "
[[NamedAnchors]]
Name = '''graphics.pokemon.sprites.coordinates.front'''
Address = 0x1AA8F12
Format = '''[size.|t|width::|height:: yOffset. render|render=graphics.battle.background.sprites/0/battlemap/|0|0|240|112|graphics.pokemon.sprites.front|40|48||yOffset unused:]data.pokemon.names''' "
nothing seems to change.

I would like to request either a new section be added by default or the section already there also include the front sprite in the opponent's section of the battlefield. It's really annoying to have to load up the game each time to line up the front sprite for over a thousand pokemon.

I was prompted to give a bug report by the App and so I am doing as such.

I was going through the trainer back sprites and exporting them. I was exporting individually and in bulk to get a feel for how the tool worked. I'm not sure what even went wrong other than maybe exporting some of the sprites with the wrong pallet. (I hope this image copy paste embed works properly.
image

Notes from crash.log:

Version Number: 0.5.3
Debug Version
25/08/2023 3:48:05 PM
General Information:
Current tab count: 1
Current selected tab: 0
---
Tab is ViewPort for Pokemon - Emerald Version (USA, Europe).gba
Game Code: BPEE0
Data Length: 0x1000000
Pokemon Count: 412
---
Exception Information:
System.ArgumentOutOfRangeException
Index was out of range. Must be non-negative and less than the size of the collection. (Parameter 'index')

   at System.SZArrayHelper.get_Item[T](Int32 index)
   at HavenSoft.HexManiac.Core.ViewModels.Tools.SpriteElementViewModel.ExecuteExportAllImages(IFileSystem fs) in D:\root\GitHub\HexManiac\src\HexManiac.Core\ViewModels\Tools\SpriteElementViewModel.cs:line 165
   at HavenSoft.HexManiac.Core.ViewModels.ViewModelCore.<>c__DisplayClass20_0`1.<StubCommand>b__0(Object arg) in D:\root\GitHub\HexManiac\src\HexManiac.Core\ViewModels\ViewModelCore.cs:line 153
   at System.Windows.Input.StubCommand.System.Windows.Input.ICommand.Execute(Object parameter) in D:\root\GitHub\HexManiac\src\HexManiac.Core\Core\Autos\StubCommand.cs:line 30
   at MS.Internal.Commands.CommandHelpers.CriticalExecuteCommandSource(ICommandSource commandSource, Boolean userInitiated)
   at System.Windows.Controls.MenuItem.InvokeClickAfterRender(Object arg)
   at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
   at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)

-------------------------------------------

Learnset Glitch

Hi there, just started creating a FR hack, no prior coding experience.

I edited almost every trainer and updated a few pokemon in PGE, and updated some encounters in advance map, all of which transferred to HMA successfully.

In HMA, I made it so the top-most employee on the second floor of the celadon mart sold all 50 tms, instead of just the original 5. I'm guessing this overloaded some memory or something, because now every single pokemon learnset looks like this:
Screenshot (16)

Any way to fix this? I could go through and edit every learnset individually, but... yikes.

I also expanded the available moves and added 4 new moves, maybe that has something to do with it.

Thanks!

[Feature Request] Search Filters/Parameters

I just thought about a neat suggestion to make; the ability to use filters or special parameters when using the program's search function.

For example, a filter to match the whole word.

If I wanted to look up the string for "girl" in the game's intro and didn't want to deal with lots of unwanted miscellaneous results, I would like to use a filter that lets me match the text string "girl" and omit any results that contained the word as a part of a larger sentence.

Normally, things like git grep use -w, for reference. I'd type git grep -w "GIRL" in the terminal, and it would find me any usages of the word "GIRL" as is, omitting any actual sentences that use the word in the process.

Move Expandable Issue

After using the Make Move Expandable, moves always miss when used, even though they have a 100% acc rate.

[Feature Request] Ability to highlight specific chunk of code

Title.

HxD, another hex editor, has a feature that allows you to highlight/select a specific chunk of code by specifying a Start offset and an End offset.

It sounds like a basic feature that could come in handy for HMA, specially coupled with its ability to read Thumb code. Highlighting specific chunks could help copy/read specific functions of code, I imagine.

HxD64_20220808_101956006

HxD64_20220808_101958212

[Feature Request] Word wrap for the Text tab of the Content box

Title.

It would be nice if HMA could allow the user to enable Word Wrap as an option to visualize text. The feature itself is commonly present in text editors and it makes it so all the text is presented in a vertical format instead of going full horizontal.

Ex:
NewOptIllustration

I'm aware the size of the box can be modified by the user at will by resizing it from its corners, but I like the default size and having to constantly expand it back and forth would probably get quite annoying, which is what led me to suggest the feature.
It'd make easier to read text strings from within HMA, imo.

Primary tileset only displays 128x128 of the full image

No matter what, the primary tileset in HMA will only accept an 128x128 image, because of this some of my custom tiles are inaccessible
in the image editor despite other tools such as advance map exporting/importing and using the full image size just fine.

Weird constant issue.

(Please replace this section with notes about what you were doing or how to reproduce)

Notes from crash.log:

Version Number: 0.5.2
Release Version
6/8/2023 6:00:07 PM
General Information:
Current tab count: 1
Current selected tab: 0
Tab is HavenSoft.HexManiac.Core.ViewModels.Map.MapEditorViewModel
4-3 (PALLET TOWN)
---
Exception Information:
System.NullReferenceException
Object reference not set to an instance of an object.
   at HavenSoft.HexManiac.Core.MethodCommand.Execute(Object parameter) in D:\root\GitHub\HexManiac\src\HexManiac.Core\MethodCommand.cs:line 100
   at MS.Internal.Commands.CommandHelpers.CriticalExecuteCommandSource(ICommandSource commandSource, Boolean userInitiated)
   at System.Windows.Controls.Primitives.ButtonBase.OnMouseLeftButtonUp(MouseButtonEventArgs e)
   at System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target)
   at System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)
   at System.Windows.UIElement.ReRaiseEventAs(DependencyObject sender, RoutedEventArgs args, RoutedEvent newEvent)
   at System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target)
   at System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)
   at System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args)
   at System.Windows.UIElement.RaiseTrustedEvent(RoutedEventArgs args)
   at System.Windows.Input.InputManager.ProcessStagingArea()
   at System.Windows.Input.InputProviderSite.ReportInput(InputReport inputReport)
   at System.Windows.Interop.HwndMouseInputProvider.ReportInput(IntPtr hwnd, InputMode mode, Int32 timestamp, RawMouseActions actions, Int32 x, Int32 y, Int32 wheel)
   at System.Windows.Interop.HwndMouseInputProvider.FilterMessage(IntPtr hwnd, WindowMessage msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
   at System.Windows.Interop.HwndSource.InputFilterMessage(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
   at MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
   at MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o)
   at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
   at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)

-------------------------------------------

Not compatible with several characters

Hex Maniac is not compatible with several characters, such as most stressed characters (Ó, ó, Ò, ò, etc) or other special characters (Ñ, ñ, Ç, ç, ·, etc).

For this reason, any string with any of these characters will not be interpreted as text.

This issue has been detected for Pokémon Fire Red, but I suspect it will also apply to every other Generation III game.

I attach the table file I was using for WindHex32, which has had no problems inserting these characters:

[Table]
00=
01=À
02=Á
03=Â
04=Ç
05=È
06=É
07=Ê
08=Ë
09=Ì
0B=Î
0C=Ï
0D=Ò
0E=Ó
0F=Ô
10=Œ
11=Ù
12=Ú
13=Û
14=Ñ
15=ß
16=à
17=á
19=ç
1A=è
1B=é
1C=ê
1D=ë
1E=ì
20=î
21=ï
22=ò
23=ó
24=ô
25=œ
26=ù
27=ú
28=û
29=ñ
2A=º
2B=ª
2D=&
2E=+
34=[Lv]
35==
36=;
51=¿
52=¡
53=[pk]
54=[mn]
55=[po]
56=[ké]
57=[bl]
58=[oc]
59=[k]
5A=Í
5B=%
5C=(
5D=)
68=â
6F=í
79=[U]
7A=[D]
7B=[L]
7C=[R]
85=<
86=>
A1=0
A2=1
A3=2
A4=3
A5=4
A6=5
A7=6
A8=7
A9=8
AA=9
AB=!
AC=?
AD=.
AE=-
AF=·
B0=...
B1=«
B2=»
B3='
B4='
B5=|m|
B6=|f|
B7=$
B8=,
B9=*
BA=/
BB=A
BC=B
BD=C
BE=D
BF=E
C0=F
C1=G
C2=H
C3=I
C4=J
C5=K
C6=L
C7=M
C8=N
C9=O
CA=P
CB=Q
CC=R
CD=S
CE=T
CF=U
D0=V
D1=W
D2=X
D3=Y
D4=Z
D5=a
D6=b
D7=c
D8=d
D9=e
DA=f
DB=g
DC=h
DD=i
DE=j
DF=k
E0=l
E1=m
E2=n
E3=o
E4=p
E5=q
E6=r
E7=s
E8=t
E9=u
EA=v
EB=w
EC=x
ED=y
EE=z
EF=|>|
F0=:
F1=Ä
F2=Ö
F3=Ü
F4=ä
F5=ö
F6=ü
F7=|A|
F8=|V|
F9=|<|
FA=|nb|
FB=|nb2|
FC=|FC|
FD=|FD|
FE=|br|
FF=|end|

Issues scripting

Scripting is fine in npcs, but when used in actual script blocks the game locks the player (no matter if lock / lockall is used) and the player is unable to move. how do i fix it?

Trainer export error, not sure what is going on here?

(Please replace this section with notes about what you were doing or how to reproduce)

Notes from crash.log:

Version Number: 0.5.2
Release Version
6/8/2023 6:13:25 PM
General Information:
Current tab count: 1
Current selected tab: 0
Tab is ViewPort for Pokemon - Fire Red Version (U) (V1.1).gba
Game Code: BPRE1
Data Length: 0x1000000
Pokemon Count: 412
---
Exception Information:
System.ArgumentOutOfRangeException
Index was out of range. Must be non-negative and less than the size of the collection. (Parameter 'index')

   at System.SZArrayHelper.get_Item[T](Int32 index)
   at HavenSoft.HexManiac.Core.ViewModels.Tools.SpriteElementViewModel.ExecuteExportAllImages(IFileSystem fs) in D:\root\GitHub\HexManiac\src\HexManiac.Core\ViewModels\Tools\SpriteElementViewModel.cs:line 157
   at HavenSoft.HexManiac.Core.ViewModels.ViewModelCore.<>c__DisplayClass16_0`1.<StubCommand>b__0(Object arg) in D:\root\GitHub\HexManiac\src\HexManiac.Core\ViewModels\ViewModelCore.cs:line 153
   at MS.Internal.Commands.CommandHelpers.CriticalExecuteCommandSource(ICommandSource commandSource, Boolean userInitiated)
   at System.Windows.Controls.MenuItem.InvokeClickAfterRender(Object arg)
   at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
   at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)

-------------------------------------------

Graphics Issues

Hello, I have been happily using this software for a while but have had an issue for quite a long time with certain graphics I import or edit being garbled. This specifically happens during the copyright part of the graphics. Basically the graphics get garbled when the game is run. Sometimes when I undo and redo an edit I make on the graphics it suddenly becomes garbled again. Making basic edits on the picture sometimes changes what exactly get's garbled on the picture.

Pokedex Editor Not Working

Hello, I recently downloaded HMA in order to reorder the pokedex for the project I'm making. Unfortunately, whenever I try and open up the pokedex editor, I get notified that an error has occurred and that something might be wrong with the program, and then it tells me to close it. I'm not sure what I should do to fix this issue.

https://pastebin.com/BsYSGa7i <- Crash Report

Export all sprites not working on Moemon FireRed

I keep trying to pull all the sprites at once, when I click All Table and then select the folder this error shows up and nothing happens.

Notes from crash.log:

Version Number:0.5.1
Release Version
4/18/2023 11:09:20 AM
General Information:
Current tab count: 1
Current selected tab: 0
Tab is ViewPort for MoemonFRcopy.gba
Game Code: BPRE0
Data Length: 0x2000000
Pokemon Count: 412
---
Exception Information:
System.NullReferenceException
Object reference not set to an instance of an object.
   at HavenSoft.HexManiac.Core.ViewModels.Tools.SpriteElementViewModel.ExecuteExportAllImages(IFileSystem fs) in D:\root\GitHub\HexManiac\src\HexManiac.Core\ViewModels\Tools\SpriteElementViewModel.cs:line 155
   at HavenSoft.HexManiac.Core.ViewModels.ViewModelCore.<>c__DisplayClass16_0`1.<StubCommand>b__0(Object arg) in D:\root\GitHub\HexManiac\src\HexManiac.Core\ViewModels\ViewModelCore.cs:line 153
   at MS.Internal.Commands.CommandHelpers.CriticalExecuteCommandSource(ICommandSource commandSource, Boolean userInitiated)
   at System.Windows.Controls.MenuItem.InvokeClickAfterRender(Object arg)
   at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
   at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)

-------------------------------------------

It works with individual sprites though I'm doing it that way in the meantime.

data corruption in Pokemon Emerald

Getting random after-battle crashes in Pokemon Emerald after I make any patch that does any of the following:

  1. Edit too many Pokemon types or palettes in one patch.
  2. Change too many Pokemons' learnable TMs or tutor moves in one patch.
  3. Edit the map Route 124 or any adjacent maps or their fishing wild data in one patch.

The versions before I used HMA are all fine, but even if I try to recreate individual edits from patch history notes, I end up with a slightly different broken ROM each time in the end.
It even breaks additional data patches like the Day/Night System inserted into free data much later in the free space.

In some cases the wild Pokemon I'm seeing in HMA's editor and in-game are entirely different entities.

blue electric-type skitty (non-shiny) in editor
Clipboard02

purple psychic-type skitty (non-shiny) in-game
Clipboard01

My best guess for the cause is improper (not actually blank) offsets being used, like what AdvanceMap does.

Maybe it's just me trying to finish a jank old project, but I just wanted to get my issue out there in case it helps somebody else avoid data corruption.

support idea

I would like to know could it support pokémon black/white 2 ?

Scripts getting deleted when editing game corner scripts.

I haven't noticed this problem show up anywhere else within the program, only within the game corner scripts.

When attempting to change the pokemon that is given for each prize within the game corner, HMA seems to just set a huge chunk of memory to "FF" deleting sections of the game corner script.

I know it can sometimes automatically repoint scripts if the size changes, but I don't think that's the case here for several reasons.

  1. There isn't actually a change in size of the script, all im doing is decrementing a number by 1.
  2. I check the diff since last save tool after it FFs the huge chunk of memory and it isn't repointing it anywhere else, its only FFing the memory.

Steps to Reproduce:

  1. Open HMA 0.5.1
  2. Navigate to the game corner pokemon prize script (Use the map or go directly there with the address: <16CC00>)
  3. Change the 63 in "setvar 0x4001 63" to a 62
  4. Watch as a huge chunk of memory is deleted:

image

Diff since last save to show that it isn't simply being moved somewhere else:
image

Important Notes:

This only happens when you are editing a a script that you are not directly navigated to (its a script thats connected to the currently viewed script, usually via "goto")

image
If you edit it in the image above, it causes the huge memory chunk to get deleted.

image
If you edit it in the image above, it does not cause the huge memory chunk to get deleted.

Please let me know if you need any more info or if I should show any other screenshots.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.