Esrael Assembler Editor v0.09 - Beta

Discussion in 'Engineering & Reverse Engineering' started by Esrael, Apr 28, 2009.

Thread Status:
Not open for further replies.
  1. Esrael

    Esrael

    Tech Member
    227
    80
    28
    Brazil, São Paulo, Guarulhos
    Neto Assembler Editor / Sonic 2 Delta / Neto MD-DOS
    Whats New?

    - Tile Editor now supports compressed tiles in Kosinski and Nemesis format.
    - Now you can edit up to 64 tiles in Editor.
    - Drag / Drop operation added from Editor to Browser.

    Level Tile Editor.
    - Automatic function added for blocks 16x16 (one button select and other draw).

    Other improvements and Bug Fixes.

    Edit: -> Download E.N.A.E v0.09 Beta

    Bugs. Please Comments.
     
  2. Master3k

    Master3k

    Member
    278
    0
    0
    Why no comments? :U
    Anyway, nice job. Are you using ASM68K on this version? Older ones used SNASM68K as internal compiler.
     
  3. Endri

    Endri

    Officer I don't have my drivers license with me. C Tech Member
    Oh God! Brazilian attack, oh!

    Now, seriously, I'm trying this right now. Awesome job! I'm pretty much using it in my hack. Thanks!
     
  4. Esrael

    Esrael

    Tech Member
    227
    80
    28
    Brazil, São Paulo, Guarulhos
    Neto Assembler Editor / Sonic 2 Delta / Neto MD-DOS
    The program uses Internal Compiler Based in AS, but you can set AS, ASM68K or Snasm68K as external compiler in Menu Tools -> Editor Options -> Miscellaneous....
     
  5. Spanner

    Spanner

    The Tool Member
    3,261
    62
    28
    United Kingdom
    Sonic Hacking Contest
    Interesting. Is there any way possible a collision converter could be made from Sonic 1 to Sonic 2? I've been working on porting Sonic 1 levels to Sonic 2 using your program and I find working with collision to be a pain.
     
  6. Esrael

    Esrael

    Tech Member
    227
    80
    28
    Brazil, São Paulo, Guarulhos
    Neto Assembler Editor / Sonic 2 Delta / Neto MD-DOS
    Not all Sonic 1 Angles are in Sonic 2, but you can use Collision Array, Angle and Curve data from Sonic 1 and Add some checks in your code and the game will work with both formats.

    Some code of Sonic 2 Delta:

    Code (Text):
    1.                 lea  (AngleMap), A2 ; Offset_0x02D1EA
    2. ;--------------------------------------------------------------------------------  
    3.                 cmpi.b  #$10, ($FFFFFE10).w ; Sonic 1 Levels above $10
    4.                 bhi.s   AM_S1_01             ; Sonic 1 Collision Support
    5.                 cmpi.b  #$05, ($FFFFFE10).w ; Sonic 1 - Green Hill
    6.                 bne.s   Not_AM_01           ; Sonic 1 Collision Support
    7. AM_S1_01:                                   ; Sonic 1 Collision Support
    8.                 lea  (AngleMap_S1), A2  ; Sonic 1 Collision Support  
    9. Not_AM_01:                              ; Sonic 1 Collision Support
    10. ;--------------------------------------------------------------------------------
    11.  
    12.  
    13. ........
    14.  
    15. AngleMap:; Offset_0x02D1EA:  
    16.                 incbin  'data\all\anglemap.dat'
    17. Colision_Array_1:; Offset_0x02D2EA:
    18.                 incbin  'data\all\c_array1.dat'
    19. Colision_Array_2:; Offset_0x02E2EA:
    20.                 incbin  'data\all\c_array2.dat'
    21. AngleMap_S1:; Offset_0x02D1EA:  
    22.                 incbin  'data\all\anglemap.s1'
    23. Colision_Array_S1_1:; Offset_0x02D2EA:
    24.                 incbin  'data\all\c_array1.s1'
    25. Colision_Array_S1_2:; Offset_0x02E2EA:
    26.                 incbin  'data\all\c_array2.s1'
    Hint: Change some patterns in 256x256 (editing to appear four 128x128) before converting Sonic 1 Levels to 128x128 and you will get all tiles ported like I do in Sonic 2 Delta. ex: Labyrinth in Sonic 2 Delta. The program will check if 128x128 has already converted ex: Chunk 256x256 Id "$00 has four 128x128 chunks equals and only the first one will be in converted other will be discarded. The compare method is not only visual the program will compare 16x16 property too in 256x256.
     
  7. Spanner

    Spanner

    The Tool Member
    3,261
    62
    28
    United Kingdom
    Sonic Hacking Contest
    Thanks for that information, I applied your system with a few changes (thanks to snkenjoi and Malevolence for suggesting how to make my crappy code a bit better):
    <!--g1--><div class='geshitop'>Syntax Highlighted Code: ASM</div><div class='geshimain'><!--eg1--><pre class="asm"> [color= #adadad; font-style: italic;]; other code above [/color]
    [color= #00bfff;]lea[/color] <span style="">(</span>ColCurveMap_S2<span style="">)</span>.[color= #00bfff;]l[/color],<span style="font-weight:bold;">a2</span>
    [color= #00bfff;]cmpi[/color].[color= #00bfff;]b[/color] [color= #ff0000;]#[/color][color= #ff0000;]$[/color][color= #ff0000;][color= #ff0000;]1[/color][/color], <span style="">(</span>[color= #ff0000;]$[/color][color= #ff0000;]FFFFFE10[/color]<span style="">)</span>.[color= #00bfff;]w[/color] [color= #adadad; font-style: italic;]; is it SLZ[/color]
    [color= #00bfff;]beq[/color].[color= #00bfff;]s[/color] S1AM_Setup1
    [color= #00bfff;]bra[/color].[color= #00bfff;]s[/color] S2AM_Setup1
    [color= #00bfff;]rts[/color]
    [color= #adadad; font-style: italic;]; ---------------------------------------- [/color]
    S1AM_Setup1: [color= #adadad; font-style: italic;]; Sonic 1 Angle Map[/color]
    [color= #00bfff;]lea[/color] <span style="">(</span>ColCurveMap_S1<span style="">)</span>.[color= #00bfff;]l[/color],<span style="font-weight:bold;">a2</span>
    [color= #adadad; font-style: italic;]; --------------------------------------- [/color]
    S2AM_Setup1: [color= #adadad; font-style: italic;]; Sonic 2 Angle Map[/color]
    [color= #adadad; font-style: italic;]; rest of code[/color]</pre><!--gc2--><!--ICAgICAgICA7IG90aGVyIGNvZGUgYWJvdmUJCiAgICAgICAgbGVhCShDb2xDdXJ2ZU1hcF9TMikubCxh
    MgoJY21waS5iCSMmIzAzNjsxLCAoJiMwMzY7RkZGRkZFMTApLncgOyBpcyBpdCBTTFoKCWJlcS5zCVMxQ
    U1fU2V0dXAxCglicmEucwlTMkFNX1NldHVwMQoJcnRzCjsgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS
    0tLS0tLS0tLS0tLS0tLQkKUzFBTV9TZXR1cDE6IDsgU29uaWMgMSBBbmdsZSBNYXAKCWxlYQkJKENvbEN
    1cnZlTWFwX1MxKS5sLGEyCjsgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCQpT
    MkFNX1NldHVwMTogOyBTb25pYyAyIEFuZ2xlIE1hcAogICAgICAgIDsgcmVzdCBvZiBjb2Rl--><!--egc2--><!--g2--></div><!--eg2-->
    The collision array uses a similar code as well.
    Here's how it is right now:
    [​IMG]
    I don't know what the problem is but I guess it's because Sonic 1's collision data needs to be modified further in order to get a perfect port, either that or the S2 disasm hates how the collision is only one file instead of two. Thanks for your help anyway
     
  8. Esrael

    Esrael

    Tech Member
    227
    80
    28
    Brazil, São Paulo, Guarulhos
    Neto Assembler Editor / Sonic 2 Delta / Neto MD-DOS
    <!--quoteo(post=305752:date=May 4 2009, 07:26 AM:name=SOTI)--><div class='quotetop'>QUOTE (SOTI @ May 4 2009, 07:26 AM) [​IMG]
    I don't know what the problem is but I guess it's because Sonic 1's collision data needs to be modified further in order to get a perfect port, either that or the S2 disasm hates how the collision is only one file instead of two. Thanks for your help anyway[/quote]


    If you are using Sonic 2 Nemesis disassembly. You can apply the following changes to get 2 colisions working.


    (Some code from unreleased Delta IV where All Sonic 1 Levels Start from $10)
    Code (Text):
    1.         lea (ColCurveMap).l,a2
    2. ;------------------------------------------------------------------------
    3.         cmpi.b  #$10, (Level_Id).w   ; All Sonic 1 Levels above $0F
    4.                 blt.s   Not_S1J_AngleMap_00 ;            
    5.                 lea  (S1J_AngleMap), A2  ;
    6. Not_S1J_AngleMap_00:
    7. ;------------------------------------------------------------------------
    8.   ...............
    Code (Text):
    1. ;------------------------------------------------------------------------  
    2.  
    3.         lea (ColArray).l,a2  ; Sonic 2 First Colision
    4. ;------------------------------------------------------------------------      
    5.             cmpi.b  #$10, (Level_Id).w      ; All Sonic 1 Levels above $0F
    6.                 blt.s   Not_S1J_CArray_1_00    ;               
    7.                 lea  (S1J_Colision_Array_1), A2;
    8. Not_S1J_CArray_1_00:  
    9. ;------------------------------------------------------------------------  
    10.                ..........
    Code (Text):
    1.         lea (ColArray+$1000).l,a2    ; All of +$1000 is the Second Colision
    2. ;------------------------------------------------------------------------      
    3.             cmpi.b  #$10, (Level_Id).w      ; All Sonic 1 Levels above $0F
    4.                 blt.s   Not_S1J_CArray_2_00    ;               
    5.                 lea  (S1J_Colision_Array_2), A2;
    6. Not_S1J_CArray_2_00:  
    7. ;------------------------------------------------------------------------
    8.   ...................
     
Thread Status:
Not open for further replies.