News:

Don't forget to visit the main site! There's lots of helpful docs, patches, and more!

Main Menu

Resources Thread

Started by biospark, December 15, 2016, 11:50:38 PM

Previous topic - Next topic

biospark

Many of the questions I get are about making changes that require using ASM, and I don't have the time/interest to help everyone. I've decided to share all the resources I use, which should be useful for anyone who wants to learn ASM hacking.




no$gba

A very useful debugging emulator. This allows you to set breakpoints and step through the code. You can use it to learn how different aspects of the game work and how data is used (this is how I wrote MAGE). However, you should become familiar with GBA ASM before using no$gba. Search for a guide to learn what the instructions mean.

Home page:
http://problemkaputt.de/gba-dev.htm

Useful information (especially breakpoints):
http://problemkaputt.de/gbahlp.htm




GBATEK

A comprehensive document on how the GBA works. It can be difficult to read, and most of the hardware information is not important for hacking. However, the other sections are useful references (memory map, ARM/THUMB instructions, etc).

http://problemkaputt.de/gbatek.htm




RAM and ROM maps

These are my personal maps that contain all known memory locations and their purpose/format. If you discover any new addresses and their purpose, you can post it here or send me a message.

http://labk.org/maps/




Symbols file

This is similar to the RAM/ROM maps, except that it contains all of the addresses in a single text file with a special format. This is used with no$gba, which replaces all addresses in the symbols file with their provided label. Using a symbols file can make reading a function a lot easier. The symbols file must be in the same folder as the ROM and have the same file name.

https://github.com/biosp4rk/mf-zm-info/tree/main/sym




armips

This program is used to compile ASM and insert it into a ROM. For changes to the game that require more than a simple hex tweak, you'll want to write your own ASM, whether you're modifying existing code, adding new code, or both. For example, I used armips to make the stackable beams hack.

https://github.com/Kingcom/armips/releases




VisualBoyAdvance

This is my emulator of choice. I use it for a lot of testing that I do (but not when I need to step through the code). This particular version is one made to accommodate TASing, which has some extra features. I would also recommend BizHawk, which is multi-platform and has loads of features. However, VBA runs faster than Bizhawk for GBA games.

http://tasvideos.org/EmulatorResources/VBA.html
http://tasvideos.org/Bizhawk.html




HxD

A free hex editor, which is easy to use and has all the features a hex editor needs. Useful for examining data or making small changes.

http://mh-nexus.de/en/hxd/




Notepad++

A free text editor with many more features than Notepad. Good for taking notes while hacking. I also use it to write the actual ASM files that are compiled with armips, since it has syntax highlighting and useful text manipulation tools.

http://notepad-plus-plus.org/




Programmer calculator

The calculator that comes with Windows and macOS has a Programmer mode which is very useful when hacking. It allows you to do the types of bit manipulation found in the game's code. You can also switch between hexadecimal, decimal, and binary. I often use it to add hex addresses together.




MAGE

Although you can't do ASM hacking with MAGE, it still has its uses. I primarily use it to check various values, such as sprite info or door numbers. I also use the test room feature to quickly test location specific changes.

http://forum.metroidconstruction.com/index.php/topic,3969.0.html

interdpth

Edit as I go,

I believe 03000053 is for the CoreX attack.

Xenesis

Quote from: biospark on December 15, 2016, 11:50:38 PMarmips

This program is used to compile ASM and insert it into a ROM. For changes to the game that require more than a simple hex tweak, you'll want to write your own ASM, whether you're modifying existing code, adding new code, or both. For example, I used armips to make the stackable beams hack.

http://www.romhacking.net/utilities/635/

You should really be using the up-to-date version of the compiler from Kingcom's repository https://github.com/Kingcom/armips

(The old version is really obsolete and the new version is a lot better at handling things as well as requiring consistently written code. And you can compile it to run on OSX and Linux!)

QuoteI believe macOS has a similar calculator.

It does, and it's similarly incredibly useful. (Even does bitwise operations).

biospark

Quote from: Xenesis on December 19, 2016, 08:05:27 PM
You should really be using the up-to-date version of the compiler from Kingcom's repository https://github.com/Kingcom/armips

I wasn't able to build it myself. Is there an .exe anywhere?

P.JBoy

I have my resources here and here, including my own no$gba symbols file

interdpth

#5
General dump of my offsets. http://interplz.warsworldnews.com/FusionOffsets.csv

If you need a datastructure, let me know.

biospark

I added ROM and RAM maps for ZM, along with a symbols file. They're a lot less complete, but since Fusion and ZM are like 90% the same, most data in Fusion can be found in ZM without too much effort.

Xenesis

Quote from: biospark on December 23, 2016, 11:39:42 PM
Quote from: Xenesis on December 19, 2016, 08:05:27 PM
You should really be using the up-to-date version of the compiler from Kingcom's repository https://github.com/Kingcom/armips

I wasn't able to build it myself. Is there an .exe anywhere?

It seems like Kingcom doesn't maintain binaries - I've only got OSX running for dev so I can only compile an OSX binary at the moment.

raygun

When I was a more active hacker I developed a symbols file for Fusion. It may be out of date its been years since I read it and a lot has developed since then, but theres about 15000 more lines in the file; I included the pointers to a lot of palletes and enemy ai's and graphics, as well as pointers to routines i was looking at(especially Arachnus). Anyone interested can use it and pm me if there are issues.

FelixWright

#9
Carryover from #essentials in MAGConst


START HERE 👇


💬 MAGConst Discord: https://discord.gg/WtekHKb
🧙‍♂️ Metroid Advance Game Editor (MAGE): https://labk.org/mage/
🕹 mGBA emulator: https://mgba.io/
🩹 Floating IPS patcher: https://www.romhacking.net/utilities/1040/
🔡 HxD Hex Editor: https://mh-nexus.de/en/downloads.php?product=HxD20


DOCUMENTATION 📄


📄 GBA Hardware Information: http://problemkaputt.de/gbatek.htm
:study: Zero Mission Wiki: https://wiki.metroidconstruction.com/doku.php?id=zero_mission
:study: Fusion Wiki:  https://wiki.metroidconstruction.com/doku.php?id=fusion
📄 MAGE Doc: (This comes with MAGE) https://labk.org/mage/doc.html
📄 MAGE Technical Doc: (This comes with MAGE) https://labk.org/mage/technical.html


ASM 👍


🧩 ARMIPS ASM assembler: https://buildbot.orphis.net/armips/
💸 NO$GBA debugger: https://problemkaputt.de/no$gba.zip
🔣 Zero Mission Symbols for NO$: https://github.com/biosp4rk/mf-zm-info/blob/main/sym/zm_u.sym
🔣 Fusion Symbols for NO$: https://github.com/biosp4rk/mf-zm-info/blob/main/sym/mf_u.sym


GRAPHICS 🎨


🔍 unLZ-GBA - compressed graphics locator/viewer: https://www.romhacking.net/utilities/362/
🖼️ YY-CHR - Graphics Editor: https://w.atwiki.jp/yychr
🍍 Tile Molester - Graphics Editor: https://www.romhacking.net/utilities/109/
:study: Tile Molester guide: https://wiki.metroidconstruction.com/doku.php?id=general:guides:tile_molester_graphics_guide
💉 tmspec.xml for Tile Molester: https://metroidconstruction.com/resource.php?id=470
💉 Tile Molester Bookmarks for 🇿 Zero Mission and 🇫 Fusion: https://metroidconstruction.com/resource.php?id=471
(put in tm resources folder, renamed after your ROMs)


TOOLS THAT R COOL 😎


🦎 Ghidra: https://ghidra-sre.org/
💻 yohann's Ghidra ZM_U Decomp: https://drive.google.com/drive/folders/1Ys3sH-dicwJw2NEAQMIrUoxUKNGSzoGu
💻 yohann's Ghidra MF_U Decomp: https://drive.google.com/drive/folders/1RMObIGoEb4DrVR4DlFN-_YS3T-VCDpM0
🌘 Eclipse Adoptium JRE/JDK (for Ghidra): https://adoptium.net/releases.html
#️⃣ OpenHashTab (Windows): https://github.com/namazso/OpenHashTab/releases/latest
#️⃣ Quickhash GUI (X-Platform): https://www.quickhash-gui.org/


MAPS 📍


🗺️ All biospark's maps here: https://labk.org/maps/app/
📄 Biospark's MF/ZM Info: https://github.com/biosp4rk/mf-zm-info
🇫 Fusion Event List: https://drive.google.com/open?id=1xtgSAgW6R93L-QcvFKGFChC2T6941411-HfjZSV3kU4
🇫 Fusion Sprite List: https://drive.google.com/open?id=1Tcem3usNfxDFJp_uoe79GgJyWZabJaLW8uKzQjwZsD8
🇫 yohann's MF_U Functions Map: https://docs.google.com/spreadsheets/d/19pUPm1dp-7IY9iCeJJA412dwgD2f1M6A1QafzlRV8ic
🇿 Zero Mission Event List: https://drive.google.com/open?id=1UKhlqMJfyZ6BmOxYyEB_5Xk9uK8ZbcrAwb-7wRPj688
🇿 Zero Mission Sprite List: https://drive.google.com/open?id=1nbO_g-b9yUFf5aAT-8vBx1zY8Wuj03uacCHCeubr6No
🇿 Zero Mission Graphics Map: https://drive.google.com/open?id=1e0yHFetyrBDNnBC6pikRvIAAzamLC9UGFj97t5vUGwA
🇿 yohann's ZM_U Functions Map: https://docs.google.com/spreadsheets/d/1X8XarD5evY8ZI7r_GQqh1pYmdVMbBcINYfRBUlogmKY
🇿 Zero Mission Decomp Repo: https://github.com/YohannDR/mzm


MUSIC 🎶


🎼 GBAtroid music importer (GMI): https://metroidconstruction.com/resource.php?resource_id=521
📝 Miepee's Music Ripping Guide: http://wiki.metroidconstruction.com/doku.php?id=zero_mission:intermediate_guides:sample_midis
🔊 Sappy: https://img.atwikiimg.com/www42.atwiki.jp/pokeds/attach/12/19/sappy12.zip
🧵 Patch for Sappy: https://www.romhacking.net/utilities/948/
📄 MPlayDef.s: https://cdn.discordapp.com/attachments/369536534569025536/388186876562898954/MPlayDef.s
💉 XML w/ZM and MF song tables:  https://cdn.discordapp.com/attachments/369536534569025536/763549693237657620/sappy.xml
:study: Sappy GUI Explained https://feuniverse.us/t/sappy-graphical-user-interface-gui-explained/1074
:study: Basic Voice Table Editing in Sappy https://feuniverse.us/t/basic-voice-table-editing-in-sappy/1075
:study: Sappy Sound Sample Format Explained https://feuniverse.us/t/sound-sample-format-explained/1080
:study: Inserting Custom Sound Samples to Sappy https://feuniverse.us/t/inserting-custom-sound-samples/1081
🐍 SapPy: https://github.com/hfmkwi/SapPy
🎹 mid2agb: https://www.hackromtools.info/sappy-mid2agb/
🎹 midi2agb (in progress) https://github.com/ipatix/midi2agb
🎹 Anvil Studio: https://anvilstudio.com/x/asinstall.exe
🎹 Sekaiju: https://openmidiproject.osdn.jp/Sekaiju_en.html
🎵 ZM Soundfonts: https://www.dropbox.com/s/xvrp3k0xe258coi/MZMSf2.zip?dl=0


ASM TUTORIALS 💪


(Some of them are pokemon-oriented)
https://www.reddit.com/r/programming/comments/3huw42/
https://www.pokecommunity.com/showthread.php?t=233645
https://www.gbadev.org/docs.php
https://patater.com/gbaguy/gbaasm.htm
https://www.dwheeler.com/gba/
http://www.loirak.com/gameboy/gbatutor.php
https://coranac.com/tonc/text/toc.htm
https://problemkaputt.de/gbatek.htm