Tools, Tutorials & Resources Various tools to help you develop your hacks can be found here.

Draconius GO
Reply
 
Thread Tools
  #1    
Old July 7th, 2012 (2:41 PM). Edited July 15th, 2012 by Lin.
Lin Lin is offline
JohtoMap/ZOLE Creator
     
    Join Date: Jul 2007
    Nature: Adamant
    Posts: 51
    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
    Reply With Quote

    Relevant Advertising!

      #2    
    Old July 7th, 2012 (8:47 PM).
    Chaos Rush's Avatar
    Chaos Rush Chaos Rush is offline
       
      Join Date: May 2007
      Gender: Male
      Posts: 1,303
      I noticed that one of the features is "disassembling". Does this mean we can create a disassembly of any Game Boy game?
      __________________
      Reply With Quote
        #3    
      Old July 7th, 2012 (11:34 PM).
      Darthatron's Avatar
      Darthatron Darthatron is offline
      巨大なトロール。
      • Silver Tier
       
      Join Date: Jan 2006
      Location: Melbourne, Australia
      Age: 26
      Gender: Male
      Nature: Modest
      Posts: 1,152
      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 Lin is offline
      JohtoMap/ZOLE Creator
         
        Join Date: Jul 2007
        Nature: Adamant
        Posts: 51
        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

        Join the conversation!

        Create an account to post a reply in this thread, participate in other discussions, and more!

        Create a PokéCommunity Account

        Sponsored Links
        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

        Forum Jump


        All times are GMT -8. The time now is 1:31 PM.