Register | Login
Views: 19364387
Main | Memberlist | Active users | ACS | Commons | Calendar | Online users
Ranks | FAQ | Color Chart | Photo album | IRC Chat
11-02-05 12:59 PM
1 user currently in Super Mario World hacking: labmaster | 3 guests
Acmlm's Board - I2 Archive - Super Mario World hacking - SMW Open Source Project | |
Add to favorites | "RSS" Feed | Next newer thread | Next older thread
User Post
HabsoluteFate

Red Paratroopa
Level: 23

Posts: 1/179
EXP: 58525
For next: 9198

Since: 03-15-04
From: Ottawa, Ontario, Canada

Since last post: 10 days
Last activity: 2 days
Posted on 03-15-04 07:51 AM Link | Quote
Official Thread for the SMW Open Source Project located at:

http://arock.redirectme.net

Quick Update:
No real update since last time, I'm still working on the latest release and hope to have it up soon


(edited by HabsoluteFate on 03-14-04 10:57 PM)
Sokarhacd

Ball and Chain Trooper
Resistance is Futile
You Will Be Assimilated
Hab SoSlI' Quch
Level: 61

Posts: 21/1757
EXP: 1799888
For next: 76708

Since: 03-15-04

Since last post: 6 days
Last activity: 4 hours
Posted on 03-15-04 08:30 AM Link | Quote
I was gonna post this thread again, but I thought, why, when I didnt start it, well hope to see the next version soon.
HabsoluteFate

Red Paratroopa
Level: 23

Posts: 7/179
EXP: 58525
For next: 9198

Since: 03-15-04
From: Ottawa, Ontario, Canada

Since last post: 10 days
Last activity: 2 days
Posted on 03-19-04 08:08 AM Link | Quote
Originally posted by Chaosflare
I was gonna post this thread again, but I thought, why, when I didnt start it, well hope to see the next version soon.


No biggy i would have forgiven you
I'm hopping to have the next version out this weekend sometime.

i have made a few important decisions that will change things quite a bit but i'm doing this keeping in mind that i have set myself the following requirements:

1. This is a tool made for SMW
2. Speed seems to be something everyone wants
3. This is a tool made for SMW
4. Did I forget to mention that this is a tool made for SMW?

Anyways, I'm repeating myself here but considering we lost the original thread i'm going to repeat myself anyways

Since speed seemed to be a problem with some people i did a complete re-write with speed in mind
This tool is made specifically for SMW, the tool will now ensure that the ROM in question is an UNALTERED original SMW rom, nothing else will work. A checksume is made on the rom to check.

This probably is a problem for some considering most of you have already edited the original rom. not to fear, i will add IPS patch support later on, you will still need the original rom but you will also be able to include your patch and have it applied dynamically to it (i'll explain better when its actually out).

Another important change to the code is that the decompiled code created will assume the entire rom is DATA. There will be a properties file that will define what parts are code, at the beginning most of the rom will be assumed to be data but hopefully with everyone's contribution eventually most of the rom will be mapped out and will decompile data & code seperately. I will include some original information to the properties file so that some of the code is mapped out.

Why did I decide to do this? Well I did write code that decompiles it by following subroutines, unfortunately
this method is not 100% accurate; in some cases there is a possibility of wrongfully flagging parts of the
rom as code or part of it as data when the opposite should be true. Using a properties file might not include
all data either but at least its going to be 100% accurate; speed should also improve.

The compiled code will also now be using a JAR file.

To summarise the changes:
-Attemps to seperate code & data (previously the entire ROM was assumed to be code)
-Speed improvements
-Only accepts the original SMW rom
-Compiled code within a JAR file

The format might change later on but here is the temptative format within the properties
file, this example is the program's main sub routine

8000.RoutineName=Main
8000.RoutineDescription=ROM's Main Sub Routine
8000.mFlag=true
8000.EndRoutine=8BFF

RoutineName: Mandatory
RoutineDescription: Optional
mFlag: Optional. Can either be true or false. Defaults to true if not provided

the mFlag is required to properfly define whether or not we're going to use 8 bit or 16 bit
numbers for certain op codes

8BFF might be incorrect (if anyone knows please let me know!).
I came up with this number by looking for the first STP instruction after
address 8000

Delivery Date: Update should be up on the site sometime this weekend (or earlier)

Added March 18, 2004:

I have decided to use a windows interface for the next release, here is a small preview screenshot of a download prompt. This download prompt appears when the application loads up if jSmwDev.ini is missing (notice the name change from jSnesDev to jSmwDev). This allows the user to automatically download the file (at some point in time there will be an update feature for the entire application...not right away though)

Screenshot:

HyperLamer
<||bass> and this was the soloution i thought of that was guarinteed to piss off the greatest amount of people

Sesshomaru
Tamaranian

Level: 118

Posts: 101/8210
EXP: 18171887
For next: 211027

Since: 03-15-04
From: Canada, w00t!
LOL FAD

Since last post: 2 hours
Last activity: 2 hours
Posted on 03-20-04 02:20 AM Link | Quote
The main routine's 3072 bytes?

Any plans for a C/C++ version, or at least something we don't need Java for?
HabsoluteFate

Red Paratroopa
Level: 23

Posts: 9/179
EXP: 58525
For next: 9198

Since: 03-15-04
From: Ottawa, Ontario, Canada

Since last post: 10 days
Last activity: 2 days
Posted on 03-22-04 08:44 AM Link | Quote
Originally posted by HyperHacker
The main routine's 3072 bytes?

Any plans for a C/C++ version, or at least something we don't need Java for?


I do have something i'm looking into for that, the source code will still be in Java but the resulting application would be a native windows executable...i dont think ill have it in place for the next update (but you never know).

Here is another screenshot, this time it shows the progress of a current download, this will appear while it downloads missing files that should be with the application (such as jSmwDev.ini) or updates (i'll have an option to update any of the existing files at some point in time automatically, for example it could download the latest file automatically that contains information about all sub routines)

Kario

In Possession of a Stolen Shovel

Level: 65

Posts: 112/2082
EXP: 2321379
For next: 14249

Since: 03-15-04
From: Texas... Yeehaw!

Since last post: 2 days
Last activity: 17 hours
Posted on 03-22-04 08:47 AM Link | Quote
Just to let you know, the link to the SMW hacking page in links goes to overclocked still...
HabsoluteFate

Red Paratroopa
Level: 23

Posts: 22/179
EXP: 58525
For next: 9198

Since: 03-15-04
From: Ottawa, Ontario, Canada

Since last post: 10 days
Last activity: 2 days
Posted on 04-05-04 08:30 AM Link | Quote
Originally posted by Kario
Just to let you know, the link to the SMW hacking page in links goes to overclocked still...


oops good catch Just changed it thanks!

Added March 25th:

Another screenshot! You can now open the ROM using an open file dialog box:





I'm finally almost completed this version! Although very limited in functionality it will
allow you to open the ROM and it will save the decompiled .asm file where you want to.
Everything is visual but keep in mind there is no actual project area yet, i kept things to a bare
minimum to allow finishing this version sooner, this does mean another version will follow
(hopefully soon after). The program also currently checks the checksum of the SMW rom to make
sure it is the original ROM (IPS patch support will also come later on, when you make an edit on
the ROM it will instead either create an IPS file or use an existing one and make the changes on
there, this way the original rom is NEVER modified and you would never have to create an IPS file
for others since it will be in that form already).

Added March 27th:

Final screenshot for version 0.4, in this screen shot the user selects
the filename to save the decompiled .asm source code as:





The next update should be the release of this version and shouldn't be
too far away! I apreciate any feedback anyone might have although I realise
it is hard to give feedback until it is actually released!

Added March 28th:

I could not resist.
Here is the latest screenshot for version 0.4.
The screenshot displays the progress bar that appears when the user is decompiling the rom to a file:





As well, here is a sample decompiled line of data produced by this code (there are 10 data fields per data line of code but that could be adjusted easily):


dc.b $BD,$FE,$D3,$B0,$1E,$E1,$0F,$04,$EA,$F1


At this point, I only need to re-integrate the decompilation code I've already created and then I'm
done. This should be sometime this week...I can then begin working on the next version and it will be
critical at this point that i have people's feedback so I can improve and if you have any feature requests
please ask!

Added April 4th:

0.4 has now been released (Finally!)


jSmwDev version 0.4 has finally been released!


Application now uses a GUI interface
Application now has a .ini configuration file
Properties file now also contains information about what part of code is code in the ROM
A checksum is now done on the ROM being decompiled to make sure it is the original unaltered ROM
src directory within release contains source code
class files are now within a jar file


The Properties file supports the following:
.RoutineName Name of sub routine
.RoutineDescription Description of Sub Routine
.mFlag Status of m Flag for the start of this sub routine
.EndRoutine End address for this sub routine
.LineComment Comments related to this line of code


Example:

D062.RoutineName=PerformCurrUserSpecialMove
D062.RoutineDescription=Performs a special move depending on which character is being used\n; (IE Fireballs, or Spinning the cape) if button is pressed
D062.mFlag=true
D062.EndRoutine=D0AD
D062.LineComment=Load into accumulator Mario used
D064.LineComment=Compare accumulator with constant CapeMario
D081.LineComment=Compare accumulator with constant FireMario


The following is a sample decompiled output (other than line D066 this is actual decompiled output).
I modified D066 on purpose so you could see that jumps automatically will include the sub routine
name instead of the address automatically now.


dc.b $13,$E2,$20,$60


; Performs a special move depending on which character is being used
; (IE Fireballs, or Spinning the cape) if button is pressed
PerformCurrUserSpecialMove:
LDA $19 ; D062: Load into accumulator Mario used
CMP #$02 ; D064: Compare accumulator with constant CapeMario
BNE DoneSPMove ; D066
.
.
.
RTS ; D0AD
; End of SubRoutine PerformCurrUserSpecialMove

dc.b $7C,$00,$80,$00,$00,$06,$00,$01,$64,$19


That's it for today! Any comments would be apreciated, suggestions, questions, and last but not least
any sub routine locations you can provide . Thanks and enjoy!



(edited by HabsoluteFate on 04-04-04 11:35 PM)
(edited by HabsoluteFate on 04-04-04 11:36 PM)
(edited by HabsoluteFate on 04-04-04 11:40 PM)
Add to favorites | "RSS" Feed | Next newer thread | Next older thread
Acmlm's Board - I2 Archive - Super Mario World hacking - SMW Open Source Project | |


ABII


AcmlmBoard vl.ol (11-01-05)
© 2000-2005 Acmlm, Emuz, et al



Page rendered in 0.016 seconds.