The PokéCommunity Forums  

Go Back   The PokéCommunity Forums > ROM Hacking > Tools, Tutorials & Resources
Sign Up Rules/FAQ Live Battle Blogs Mark Forums Read

Notices

Tools, Tutorials & Resources Various tools to help you develop your hacks can be found here.
New threads in this forum are to be approved by a moderator before they are displayed.


Advertise here

Reply
 
Thread Tools
  #1    
Old July 7th, 2012, 02:41 PM
Lin
JohtoMap/ZOLE Creator
 
Join Date: Jul 2007
Nature: Adamant
Send a message via Windows Live Messenger to Lin

Advertise here
Note: The current version is 1.1

Hey everyone. I decided I'd release this here because some people might find it useful. It's an assembler I just finished for the GameBoy and is pretty powerful. Here's a screenshot.



Here's a full unique feature list from the read-me:

-Dynamic addressing (AKA label support, and the ability to call and jump to them)
-Code highlighting
-White space can be ignored, so instructions like " ld a , 5F" will assemble successfully. It should be noted that spaces and other characters act the same as commas, so don't feel like you need a comma just because it's proper
-Auto-indenting
-Error checking on-the-spot and highlighting
-Support for just assembling code right away without opening a ROM
-Read-only zones that prevent code from being written in certain areas
-Rewrite zones, which fill a specified area with 00s so you can safely rewrite a chunk of code
-Code previewing, which shows where your code will be written line-by-line
-Safe file IO (warnings when you would lose your code if it was unsaved)
-Code insertion - "This generates code compatible with any language that uses curcly-bracket array assigning in the case you might want to make software automatically insert your assembly into a ROM. This only generates the code containing the values, so you still have to write them to the proper addresses yourself."
-Disassembling
-Trace disassembling - the disassembler will start at a certain point and follow jumps, calls, and returns until the call stack is empty
-Bank-changing emulation - this is very weak and only emulates LD A,# and LD (####),A instructions, but when the accumulator is written to 2000-2FFF, the program will attempt to change the current bank if possible. Perhaps full emulation will come in the future

Update Log
==========
1.0 - Initial Release

1.1 - Fixed a bug that made instruction E9 appear as jp (hl) when it should just be jp hl. Also added instruction DE (sbc a,n)

Finally, here's the download:

Mediafire
My site

~Lin
__________________
Hiidoran is one of the most helpful people on here

Last edited by Lin; July 15th, 2012 at 04:23 PM. Reason: Updated to 1.1
Reply With Quote
  #2    
Old July 7th, 2012, 08:47 PM
Chaos Rush's Avatar
Chaos Rush
im sexy and i know it
 
Join Date: May 2007
Location: Taylor Swift
Gender: Male
Nature: Adamant
I noticed that one of the features is "disassembling". Does this mean we can create a disassembly of any Game Boy game?
__________________

The Chaos Emerald ROM Base (it's gonna take awhile)

DS-style 64x64 Pokémon Sprite Resource NOW COMPLETED
Custom Sugimori-style Pokémon Sprite Resource IN PROGRESS


Non-Pokémon hacks I support:
Sonic Classic Heroes
Sonic 3 Complete
Reply With Quote
  #3    
Old July 7th, 2012, 11:34 PM
Darthatron's Avatar
Darthatron
巨大なトロール。
Community Supporter Tier 2
 
Join Date: Jan 2006
Location: Melbourne, Australia
Age: 22
Gender: Male
Nature: Modest
Long time no speak, Lin! Glad to see you're still working on tools. This looks good, I hope you won't mind showing me the source. Haha.
__________________
あなた は しきしゃ です
わたし は ばか です
Reply With Quote
  #4    
Old July 8th, 2012, 12:08 AM
Lin
JohtoMap/ZOLE Creator
 
Join Date: Jul 2007
Nature: Adamant
Send a message via Windows Live Messenger to Lin
Quote:
Originally Posted by Chaos Rush View Post
I noticed that one of the features is "disassembling". Does this mean we can create a disassembly of any Game Boy game?
Because of the possibility to jump to and call the HL register, no. You could come somewhat close if a full emulator was implemented, but even then, there are procedures that depend on memory address values, which determine the value of HL. For example, the scripting system in the Oracles series. The RST 00 procedure uses a pointer table that's specified right after the command is set to be executed. There is no way to emulate every value without some sort of user input. However, this doesn't mean you can't disassemble certain procedures. For example, the procedure shown in the screenshot was the start of the graphics decompression procedure in Oracle of Ages and all I did was have it trace starting at 69C.

Quote:
Originally Posted by Darthatron View Post
Long time no speak, Lin! Glad to see you're still working on tools. ^_^ This looks good, I hope you won't mind showing me the source. Haha.
Indeed it has. I don't mind, but I'll have you know the GUI stuff isn't pretty. Here are the assembler and disassembler classes and the ugly code used to assemble (includes the dynamic labeling).

Assembler
Disassembler
Code used to do the assembling

Not the best, but it works. I definitely could've cleaned it up and optimized it, but I didn't plan on taking the program this far.
__________________
Hiidoran is one of the most helpful people on here
Reply With Quote
Reply
Quick Reply

Sponsored Links


Advertise here
Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Minimum Characters Per Post: 25



All times are UTC -8. The time now is 07:22 PM.


Style by Nymphadora, artwork by Sa-Dui.
Like our Facebook Page Follow us on Twitter © 2002 - 2014 The PokéCommunity™, pokecommunity.com.
Pokémon characters and images belong to The Pokémon Company International and Nintendo. This website is in no way affiliated with or endorsed by Nintendo, Creatures, GAMEFREAK, The Pokémon Company or The Pokémon Company International. We just love Pokémon.
All forum styles, their images (unless noted otherwise) and site designs are © 2002 - 2014 The PokéCommunity / PokéCommunity.com.
PokéCommunity™ is a trademark of The PokéCommunity. All rights reserved. Sponsor advertisements do not imply our endorsement of that product or service. User generated content remains the property of its creator.