Basic Questions and Answers Thread

Discussion in 'Discussion & Q&A' started by Malevolence, Jul 7, 2009.

  1. NiphFM

    NiphFM Host of the Mega Drive Music Contest Member

    Joined:
    Jun 5, 2015
    Messages:
    430
    Location:
    Music Plant Zone
    How does the art get loaded for objects? I can't find anything linking to the art file that I want (Nem_Orbinaut)
     
  2. JoenickROS

    JoenickROS ROS (bug fixing in progress) Member

    Joined:
    Feb 5, 2012
    Messages:
    929
    Well I hack s2 so I don't know where the art load cues are in s1, but it would help if I knew what disassembly you are using too, Hivebrain or the one from Github. I did work with the Github for that hyper sonic mini hack I did though, so if that's what you are using then look in the _inc folder for the pattern load cue asm file and go to this label PLC_SLZ .

    Edit: It's the same if you are using hivebrain's.
     
  3. NiphFM

    NiphFM Host of the Mega Drive Music Contest Member

    Joined:
    Jun 5, 2015
    Messages:
    430
    Location:
    Music Plant Zone
    I've applied a change that seems to work in code and compiles fine, but when you play the level, everything past the Orbinaut object (fireballs, SLZ block, breakable wall, spikes, horizontal spring & vertical spring) doesn't appear on screen at all.
    Here's the new code that I've included at the start of the Obj60:
    Code:
    Obj60_SLZMap:
                    cmpi.w  #3,($FFFFFE10).w ; check if level is SLZ
                    bne.s   Obj60_LZMap
            move.l    #Map_obj60slz,4(a0)
                 
    Obj60_LZMap:
            cmpi.w  #1,($FFFFFE10).w
            bne.s   Obj60_SBZMap
                    move.l    #Map_obj60,4(a0)
                 
    Obj60_SBZMap:
                    move.l  #Map_obj60,4(a0)
    
    Hope someone can help...

    EDIT: Fixed
     
    Last edited: May 17, 2016
  4. TheStoneBanana

    TheStoneBanana banana Member

    Joined:
    Nov 27, 2013
    Messages:
    602
    Location:
    The Milky Way Galaxy
    Not related to your current issue at hand, but considering that your LZ and SBZ mappings are the same, the check for LZ is a waste of time.

    Now, for your issue... I can't really understand what you're saying. You say, "everything past the Orbinaut object," and then you don't finish with what's happening. So, that said, please do clarify.
     
  5. NiphFM

    NiphFM Host of the Mega Drive Music Contest Member

    Joined:
    Jun 5, 2015
    Messages:
    430
    Location:
    Music Plant Zone
    Oh shit, sorry about that! I guess I got carried away with something...
    The post has been fixed. Also, I put the mapping check in there because there seemed to be a problem with the mappings when I first tested everything...
     
  6. JoenickROS

    JoenickROS ROS (bug fixing in progress) Member

    Joined:
    Feb 5, 2012
    Messages:
    929
    Your missing something important, right now if it's SLZ it will be loading SBZ mappings regardless, same with when you are in LZ, but they are the same file so that one probably still loads. Also I'm pretty sure current zone is a byte, (I mean it is in s2) so the check might be being skipped anyway. If the check was for current zone and act then it would be a word.
    Edit: Confirmed, it is a byte.
     
    Last edited: May 17, 2016
  7. GenesisDoes

    GenesisDoes What Nintendont Member

    Joined:
    Jan 2, 2016
    Messages:
    159
    Location:
    Pittsburgh, PA
    At least in the S1 Github disasm, art tiles are uploaded into VRAM at a designated VRAM address in _inc/Pattern Load Cues.asm for each level . In the object code, you load a mappings file into the mappings object SST slot (for the actual tile arrangement, byte $04/"obMap" in S1 Git) and then the starting tile address for the mapping. Divide the VRAM address from _inc/Pattern Load Cues.asm by $20 to get the proper value to use in the art tile SST (byte $02/"obGFX" in S1 Git). Other bits in obGFX can change the palette line use and sprite priority.

    See bytes $02 and $04 under "Object Status Table Format" header here.
     
  8. CS2612

    CS2612 FamiTracker Trash Member

    Joined:
    Jan 23, 2015
    Messages:
    94
    Location:
    Scranton, PA
    Is there any way to grab a "complete" disassembly of Sonic 3 & Knuckles for use with SonLVL, or is it possible to fix this one at all? The latest version, the GitHub-hosted version, seems to be missing object files, as i get this upon loading Angel Island and Mushroom Hill:

    [​IMG]

    [​IMG]

    The level layout is perfectly fine, but there are those little icons where objects should be. I don't have this problem with either the latest S1 or S2 disassemblies, so am i missing something? Did i do something wrong?

    (I apologize if this has been solved before: it's been a while since i've posted here...)
     
  9. Pacca

    Pacca Having an online identity crisis since 2019 Member

    Joined:
    Jul 5, 2014
    Messages:
    1,175
    Location:
    Limbo
    Those icons are displayed in place of objects that SonLVL has no object definitions for. They can be used just fine, you can copy and paste them, change their subtype, and move them around the level, and you can check which object is which by using their object ID. The icons merely stand for a proper S3K object that SonLVL doesn't know how to display. If you really want to see the objects render in SonLVL as they do in game, you have to add new object definitions. This is totally normal though, I see it all the time when I'm adding new in game objects or, as you can see, using a disassembly with incomplete object definitions.
     
  10. CS2612

    CS2612 FamiTracker Trash Member

    Joined:
    Jan 23, 2015
    Messages:
    94
    Location:
    Scranton, PA
    That's just the problem: it's kinda hard to interact with objects when i can't see what they actually are. Sure, i may know the name, but how do i know it'll be placed correctly if i can't see it's exact dimensions?

    Pardon the extreme levels of idiocy rushing around my head right now, but how would one do that? If that's a possible solution, then yes, i'm willing to try it, but i don't know how at the moment.
     
  11. Pacca

    Pacca Having an online identity crisis since 2019 Member

    Joined:
    Jul 5, 2014
    Messages:
    1,175
    Location:
    Limbo
    In the folder with the .ini file you open with SonLVL, there are several other .ini files, often named something like obj(Zone Initials).ini. Those contain the object definitions, which point to the objects artwork and mappings, and occasionally specify things like which art compression should be used. Feel free to crack one open and poke around, there not too hard to figure out.
     
  12. CS2612

    CS2612 FamiTracker Trash Member

    Joined:
    Jan 23, 2015
    Messages:
    94
    Location:
    Scranton, PA
    Alright, i'll see what i can do. Thanks!

    EDIT: Here we come to a problem. The only .ini file with those specifications is "objMHZ.ini" which, as you probably guessed, is the object file for Mushroom Hill. Inside is the following:

    [23]xmlfile=MHZ/Mushroom Cap.xml

    This seems...off.
     
    Last edited: May 19, 2016
  13. Pacca

    Pacca Having an online identity crisis since 2019 Member

    Joined:
    Jul 5, 2014
    Messages:
    1,175
    Location:
    Limbo
    Some of the objects have special xml files so they can have more complex behaviour in SonLVL. I honestly have no idea how to work with those... Try looking at other disasemblies, though, as well as the ini that holds things like the Special Stage Ring (usually just called obj.ini). Anything you see there will work in other ini files as well. To add new Object definition files, just make a text file with object definitions for the new zone and thenn open SonLVL.ini. Under the name of each of the acts of the zone whose object definitions you want to add, add this:

    objlst=(new object.ini file here)

    that will let you define object definitions for the level.

    If you go through and do all that, feel free to share the definitions with the people working on the github disassembly, everyones been too lazy to go through and do the work themselves, and it would really help us all.
     
  14. Sinkdude

    Sinkdude He looked much leaner on TV Member

    Joined:
    May 6, 2008
    Messages:
    41
    Location:
    Michigan
    I've attempted to add a few additional properties for the Sonic 1 animal behavior list. The first two worked perfectly, but anything beyond that point resulted in a graphical garbage mess like this one:
    [​IMG]
    The mess flashes, but the game did not crash (amazingly). It might be the property limit that's causing the problem. Is there a way to expand the property limit for this object?
    And just in case it needs more looking-at, I have the code here.
    Code:
    ; ---------------------------------------------------------------------------
    ; Object E0 - Animals (Sonic 1) [Only used for ending sequence]
    ; ---------------------------------------------------------------------------
    
    ObjE0:                ; XREF: Obj_Index
            moveq    #0,d0
            move.b    routine(a0),d0
            move.w    ObjE0_Index(pc,d0.w),d1
            jmp    ObjE0_Index(pc,d1.w)
    ; ===========================================================================
    ObjE0_Index:    dc.w ObjE0_Ending-ObjE0_Index, loc_912A-ObjE0_Index
            dc.w loc_9184-ObjE0_Index, loc_91C0-ObjE0_Index
            dc.w loc_9184-ObjE0_Index, loc_9184-ObjE0_Index
            dc.w loc_9184-ObjE0_Index, loc_91C0-ObjE0_Index
            dc.w loc_9184-ObjE0_Index, loc_9240-ObjE0_Index
            dc.w loc_9260-ObjE0_Index, loc_9260-ObjE0_Index
            dc.w loc_9280-ObjE0_Index, loc_92BA-ObjE0_Index
            dc.w loc_9314-ObjE0_Index, loc_9332-ObjE0_Index
            dc.w loc_9314-ObjE0_Index, loc_9332-ObjE0_Index
            dc.w loc_9314-ObjE0_Index, loc_9370-ObjE0_Index
            dc.w loc_92D6-ObjE0_Index, loc_92BA-ObjE0_Index
                    dc.w loc_92BA-ObjE0_Index, loc_92BA-ObjE0_Index
                    dc.w loc_92BA-ObjE0_Index
    
    ObjE0_VarIndex:    dc.b 0,    5, 2, 3, 6, 3, 4, 5, 4,    1, 0, 1
    
    ObjE0_Variables:    dc.w $FE00, $FC00
            dc.l Obj28_MapUnc_11EAC
            dc.w $FE00, $FD00    ; horizontal speed, vertical speed
            dc.l Obj28_MapUnc_11E1C    ; mappings address
            dc.w $FE80, $FD00
            dc.l Obj28_MapUnc_11EAC
            dc.w $FEC0, $FE80
            dc.l Obj28_MapUnc_11E88
            dc.w $FE40, $FD00
            dc.l Obj28_MapUnc_11E64
            dc.w $FD00, $FC00
            dc.l Obj28_MapUnc_11E1C
            dc.w $FD80, $FC80
            dc.l Obj28_MapUnc_11E40
    
    ObjE0_EndSpeed:    dc.w $FBC0, $FC00, $FBC0, $FC00, $FBC0,    $FC00, $FD00, $FC00
            dc.w $FD00, $FC00, $FE80, $FD00, $FE80,    $FD00, $FEC0, $FE80
            dc.w $FE40, $FD00, $FE00, $FD00, $FD80,    $FC80, $FD80, $FC80
                    dc.w $FEC0, $FE80, $FE40, $FD00, $FE80, $FD00
    
    ObjE0_EndMap:    dc.l Obj28_MapUnc_11E1C, Obj28_MapUnc_11E1C, Obj28_MapUnc_11E1C, Obj28_MapUnc_11EAC, Obj28_MapUnc_11EAC
            dc.l Obj28_MapUnc_11EAC, Obj28_MapUnc_11EAC, Obj28_MapUnc_11E88, Obj28_MapUnc_11E64, Obj28_MapUnc_11E1C
            dc.l Obj28_MapUnc_11E40, Obj28_MapUnc_11E40, Obj28_MapUnc_11E88, Obj28_MapUnc_11E64, Obj28_MapUnc_11EAC
    
    ObjE0_EndVram:    dc.w $374, $374, $374, $320, $320, $342, $342, $354, $362
            dc.w $332, $384, $384, $354, $362, $342
    ; ===========================================================================
    
    ObjE0_Ending:    ; Routine 0
            tst.b    subtype(a0)    ; did animal come from a destroyed enemy?
            beq.w    ObjE0_FromEnemy    ; if yes, branch
            moveq    #0,d0
            move.b    subtype(a0),d0 ; move object type to d0
            add.w    d0,d0        ; multiply d0 by 2
            move.b    d0,routine(a0) ; move d0 to routine counter
            subi.w    #$14,d0
            move.w    ObjE0_EndVram(pc,d0.w),art_tile(a0)
            add.w    d0,d0
            move.l    ObjE0_EndMap(pc,d0.w),mappings(a0)
            lea    ObjE0_EndSpeed(pc),a1
            move.w    (a1,d0.w),$32(a0) ; load horizontal speed
            move.w    (a1,d0.w),x_vel(a0)
            move.w    2(a1,d0.w),$34(a0) ; load vertical speed
            move.w    2(a1,d0.w),y_vel(a0)
            move.b    #$C,y_radius(a0)
            move.b    #4,render_flags(a0)
            bset    #0,render_flags(a0)
            move.b    #6,priority(a0)
            move.b    #8,width_pixels(a0)
            move.b    #7,anim_frame_duration(a0)
            bra.w    DisplaySprite
    ; ===========================================================================
    
    ObjE0_FromEnemy:            ; XREF: ObjE0_Ending
            addq.b    #2,routine(a0)
            jsr    (RandomNumber).l
            andi.w    #1,d0
            moveq    #0,d1
            move.b    (Current_Zone).w,d1
            add.w    d1,d1
            add.w    d0,d1
            lea    ObjE0_VarIndex(pc),a1
            move.b    (a1,d1.w),d0
            move.b    d0,$30(a0)
            lsl.w    #3,d0
            lea    ObjE0_Variables(pc),a1
            adda.w    d0,a1
            move.w    (a1)+,$32(a0)    ; load horizontal speed
            move.w    (a1)+,$34(a0)    ; load vertical    speed
            move.l    (a1)+,mappings(a0)    ; load mappings
            move.w    #$580,art_tile(a0)    ; VRAM setting for 1st animal
            btst    #0,$30(a0)    ; is 1st animal    used?
            beq.s    loc_90C0    ; if yes, branch
            move.w    #$592,art_tile(a0)    ; VRAM setting for 2nd animal
    
    loc_90C0:
            move.b    #$C,y_radius(a0)
            move.b    #4,render_flags(a0)
            bset    #0,render_flags(a0)
            move.b    #6,priority(a0)
            move.b    #8,width_pixels(a0)
            move.b    #7,anim_frame_duration(a0)
            move.b    #2,mapping_frame(a0)
            move.w    #-$400,y_vel(a0)
            tst.b    objoff_38(a0)
            bne.s    loc_911C
            bsr.w    SingleObjLoad
            bne.s    ObjE0_Display
            move.b    #ObjID_Points,0(a1) ; load points object
            move.w    x_pos(a0),x_pos(a1)
            move.w    y_pos(a0),y_pos(a1)
            move.w    $3E(a0),d0
            lsr.w    #1,d0
            move.b    d0,mapping_frame(a1)
    
    ObjE0_Display:
            bra.w    DisplaySprite
    ; ===========================================================================
    
    loc_911C:
            move.b    #$12,routine(a0)
            clr.w    x_vel(a0)
            bra.w    DisplaySprite
    ; ===========================================================================
    
    loc_912A:                ; XREF: ObjE0_Index
            tst.b    render_flags(a0)
            bpl.w    DeleteObject
            bsr.w    ObjectMoveAndFall
            tst.w    y_vel(a0)
            bmi.s    loc_9180
            jsr    ObjCheckFloorDist
            tst.w    d1
            bpl.s    loc_9180
            add.w    d1,y_pos(a0)
            move.w    $32(a0),x_vel(a0)
            move.w    $34(a0),y_vel(a0)
            move.b    #1,mapping_frame(a0)
            move.b    $30(a0),d0
            add.b    d0,d0
            addq.b    #4,d0
            move.b    d0,routine(a0)
            tst.b    objoff_38(a0)
            beq.s    loc_9180
            btst    #4,(Vint_runcount+3).w
            beq.s    loc_9180
            neg.w    x_vel(a0)
            bchg    #0,render_flags(a0)
    
    loc_9180:
            bra.w    DisplaySprite
    ; ===========================================================================
    
    loc_9184:                ; XREF: ObjE0_Index
            bsr.w    ObjectMoveAndFall
            move.b    #1,mapping_frame(a0)
            tst.w    y_vel(a0)
            bmi.s    loc_91AE
            move.b    #0,mapping_frame(a0)
            jsr    ObjCheckFloorDist
            tst.w    d1
            bpl.s    loc_91AE
            add.w    d1,y_pos(a0)
            move.w    $34(a0),y_vel(a0)
    
    loc_91AE:
            tst.b    subtype(a0)
            bne.s    loc_9224
            tst.b    render_flags(a0)
            bpl.w    DeleteObject
            bra.w    DisplaySprite
    ; ===========================================================================
    
    loc_91C0:                ; XREF: ObjE0_Index
            bsr.w    ObjectMove
            addi.w    #$18,y_vel(a0)
            tst.w    y_vel(a0)
            bmi.s    loc_91FC
            jsr    ObjCheckFloorDist
            tst.w    d1
            bpl.s    loc_91FC
            add.w    d1,y_pos(a0)
            move.w    $34(a0),y_vel(a0)
            tst.b    subtype(a0)
            beq.s    loc_91FC
            cmpi.b    #$A,subtype(a0)
            beq.s    loc_91FC
            neg.w    x_vel(a0)
            bchg    #0,render_flags(a0)
    
    loc_91FC:
            subq.b    #1,anim_frame_duration(a0)
            bpl.s    loc_9212
            move.b    #1,anim_frame_duration(a0)
            addq.b    #1,mapping_frame(a0)
            andi.b    #1,mapping_frame(a0)
    
    loc_9212:
            tst.b    subtype(a0)
            bne.s    loc_9224
            tst.b    render_flags(a0)
            bpl.w    DeleteObject
            bra.w    DisplaySprite
    ; ===========================================================================
    
    loc_9224:                ; XREF: ObjE0_Index
            move.w    x_pos(a0),d0
            sub.w    (MainCharacter+x_pos).w,d0
            bcs.s    loc_923C
            subi.w    #$180,d0
            bpl.s    loc_923C
            tst.b    render_flags(a0)
            bpl.w    DeleteObject
    
    loc_923C:
            bra.w    DisplaySprite
    ; ===========================================================================
    
    loc_9240:                ; XREF: ObjE0_Index
            tst.b    render_flags(a0)
            bpl.w    DeleteObject
            subq.w    #1,$36(a0)
            bne.w    loc_925C
            move.b    #2,routine(a0)
            move.b    #3,priority(a0)
    
    loc_925C:
            bra.w    DisplaySprite
    ; ===========================================================================
    
    loc_9260:                ; XREF: ObjE0_Index
            bsr.w    sub_9404
            bcc.s    loc_927C
            move.w    $32(a0),x_vel(a0)
            move.w    $34(a0),y_vel(a0)
            move.b    #$E,routine(a0)
            bra.w    loc_91C0
    ; ===========================================================================
    
    loc_927C:
            bra.w    loc_9224
    ; ===========================================================================
    
    loc_9280:                ; XREF: ObjE0_Index
            bsr.w    sub_9404
            bpl.s    loc_92B6
            clr.w    x_vel(a0)
            clr.w    $32(a0)
            bsr.w    ObjectMove
            addi.w    #$18,y_vel(a0)
            bsr.w    loc_93C4
            bsr.w    loc_93EC
            subq.b    #1,anim_frame_duration(a0)
            bpl.s    loc_92B6
            move.b    #1,anim_frame_duration(a0)
            addq.b    #1,mapping_frame(a0)
            andi.b    #1,mapping_frame(a0)
    
    loc_92B6:
            bra.w    loc_9224
    ; ===========================================================================
    
    loc_92BA:                ; XREF: ObjE0_Index
            bsr.w    sub_9404
            bpl.s    loc_9310
            move.w    $32(a0),x_vel(a0)
            move.w    $34(a0),y_vel(a0)
            move.b    #4,routine(a0)
            bra.w    loc_9184
    ; ===========================================================================
    
    loc_92D6:                ; XREF: ObjE0_Index
            bsr.w    ObjectMoveAndFall
            move.b    #1,mapping_frame(a0)
            tst.w    y_vel(a0)
            bmi.s    loc_9310
            move.b    #0,mapping_frame(a0)
            jsr    ObjCheckFloorDist
            tst.w    d1
            bpl.s    loc_9310
            not.b    $29(a0)
            bne.s    loc_9306
            neg.w    x_vel(a0)
            bchg    #0,render_flags(a0)
    
    loc_9306:
            add.w    d1,y_pos(a0)
            move.w    $34(a0),y_vel(a0)
    
    loc_9310:
            bra.w    loc_9224
    ; ===========================================================================
    
    loc_9314:                ; XREF: ObjE0_Index
            bsr.w    sub_9404
            bpl.s    loc_932E
            clr.w    x_vel(a0)
            clr.w    $32(a0)
            bsr.w    ObjectMoveAndFall
            bsr.w    loc_93C4
            bsr.w    loc_93EC
    
    loc_932E:
            bra.w    loc_9224
    ; ===========================================================================
    
    loc_9332:                ; XREF: ObjE0_Index
            bsr.w    sub_9404
            bpl.s    loc_936C
            bsr.w    ObjectMoveAndFall
            move.b    #1,mapping_frame(a0)
            tst.w    y_vel(a0)
            bmi.s    loc_936C
            move.b    #0,mapping_frame(a0)
            jsr    ObjCheckFloorDist
            tst.w    d1
            bpl.s    loc_936C
            neg.w    x_vel(a0)
            bchg    #0,render_flags(a0)
            add.w    d1,y_pos(a0)
            move.w    $34(a0),y_vel(a0)
    
    loc_936C:
            bra.w    loc_9224
    ; ===========================================================================
    
    loc_9370:                ; XREF: ObjE0_Index
            bsr.w    sub_9404
            bpl.s    loc_93C0
            bsr.w    ObjectMove
            addi.w    #$18,y_vel(a0)
            tst.w    y_vel(a0)
            bmi.s    loc_93AA
            jsr    ObjCheckFloorDist
            tst.w    d1
            bpl.s    loc_93AA
            not.b    $29(a0)
            bne.s    loc_93A0
            neg.w    x_vel(a0)
            bchg    #0,render_flags(a0)
    
    loc_93A0:
            add.w    d1,y_pos(a0)
            move.w    $34(a0),y_vel(a0)
    
    loc_93AA:
            subq.b    #1,anim_frame_duration(a0)
            bpl.s    loc_93C0
            move.b    #1,anim_frame_duration(a0)
            addq.b    #1,mapping_frame(a0)
            andi.b    #1,mapping_frame(a0)
    
    loc_93C0:
            bra.w    loc_9224
    ; ===========================================================================
    
    loc_93C4:
            move.b    #1,mapping_frame(a0)
            tst.w    y_vel(a0)
            bmi.s    locret_93EA
            move.b    #0,mapping_frame(a0)
            jsr    ObjCheckFloorDist
            tst.w    d1
            bpl.s    locret_93EA
            add.w    d1,y_pos(a0)
            move.w    $34(a0),y_vel(a0)
    
    locret_93EA:
            rts  
    ; ===========================================================================
    
    loc_93EC:
            bset    #0,render_flags(a0)
            move.w    x_pos(a0),d0
            sub.w    (MainCharacter+x_pos).w,d0
            bcc.s    locret_9402
            bclr    #0,render_flags(a0)
    
    locret_9402:
            rts  
    
    ; ||||||||||||||| S U B    R O U T    I N E |||||||||||||||||||||||||||||||||||||||
    
    
    sub_9404:
            move.w    (MainCharacter+x_pos).w,d0
            sub.w    x_pos(a0),d0
            subi.w    #$B8,d0
            rts  
    ; End of function sub_9404
     
  15. Ashuro

    Ashuro Anti-Cosmic Metal Of Death Member

    Joined:
    Sep 27, 2014
    Messages:
    550
    Location:
    France
    I have a problem on SonLVL me too!

    I'm using the Dynamic palette (different palette for each act) tutorial, and i have changed the SonLVL.ini file like this:
    http://image.noelshack.com/fichiers/2016/20/1463949781-sans-titre.png

    I've edited the palette of the act 3 of Frozen Island (ghz3.bin palette file loaded of course), but in game, nothing was changed, like i've never made any change on SonLVL...

    So what i haven't properly do? (sorry for bad english)
     
  16. LordXernom

    LordXernom Well-Known Member Member

    Joined:
    Aug 12, 2012
    Messages:
    763
    Ehm, what I should do to make the chunk disappear from start position in Sonic 2? I tried remove other chunks, path swappers... nothing works. I haven't issues like this in the past when I edited level layout in Sonic 2. I'm using disasm from S2 Telephone hack thread, so this is very important for me, because if I'll do nothing I'll not finish it after the deadline of my turn in Telephone hack.

    Here's a video, that shows how my problem looks:

     
  17. Ashuro

    Ashuro Anti-Cosmic Metal Of Death Member

    Joined:
    Sep 27, 2014
    Messages:
    550
    Location:
    France
    Have you try to edit Sonic 2 with SonLvL?
    I think Soned2 was useless
     
  18. LordXernom

    LordXernom Well-Known Member Member

    Joined:
    Aug 12, 2012
    Messages:
    763
    I tried to convert SonED2 project files to .ini format and I did it, but after that when I tried to open SonicLVL.ini and Emerald Hill Zone - it showed me an error.
     
  19. Painto

    Painto Arthurus Paintus Erinaceus Member

    Joined:
    Mar 24, 2014
    Messages:
    321
    Location:
    Lublin, Poland
    .__.
    You have a "SonLVL INI Files" (or something like that) in the disasm. Just use it.
     
    LordXernom likes this.
  20. LordXernom

    LordXernom Well-Known Member Member

    Joined:
    Aug 12, 2012
    Messages:
    763
    I didn't notice that - I'm dumb! :D Now .INI on SonicLVL works (thank you to made me realize this Painto! :p ) , but what I should do to fix the problem with chunks on start position like I showed on video? :)