don't click here

Basic Questions & Answers thread

Discussion in 'Engineering & Reverse Engineering' started by Tweaker, May 29, 2008.

  1. SonicoOurico

    SonicoOurico

    Member
    19
    0
    0
    I'm trying to add the down attack from Sonic Mania to Sonic 2, a skill that Mighty has, but I want to make the screen shake the same as it does in Sonic Mania when it hits the ground
    Here is the code
    [/spoiler]
    Mighty_DownJump:
    tst.b $21(a0) ; is Sonic currently performing a double jump?
    bne.w loc_169C2 ; if yes, branch
    move.b ($FFFFF603).w,d0
    andi.b #$70,d0
    beq.w loc_169C2 ; if not, branch
    move.b #1,$21(a0)
    move.w #0,x_vel(a0) ; halt horizontal speed...
    move.w #0,inertia(a0) ; ...both ground and air
    move.w #$800,y_vel(a0) ; force Sonic down
    bpl.s loc_169C2
    move.b #$14,(Screen_Shaking_Flag).w
    loc_169C2:
    rts
     
  2. MainMemory

    MainMemory

    Kate the Wolf Tech Member
    4,742
    338
    63
    SonLVL
    Normally, Screen_Shaking_Flag is processed by the level's scrolling routine to produce the effect. Do you have some code set up to read the value?
     
  3. AURORA☆FIELDS

    AURORA☆FIELDS

    The cute one here Tech Member
    216
    24
    18
    Finland
    AMPS
    More importantly, that flag is never set, since the y_vel(a0) will always be positive. What I think you meant to do, is check for its value each frame to detect landing. However, in order to do this correctly and efficiently, you need to add some code checking for some flag (I assume $21(a0)), and if set, then save the value to the screen shaking flag. The routine where you should add it, is in a routine that is called whenever the player either lands on a floor or solid object. In sonic 2 Git disassembly, the routine you want is called Sonic_ResetOnFloor_Part3.
     
  4. Strike

    Strike

    Member
    5
    0
    0
    Hello everyone, this is my first real post!

    What tool can I use to convert Lost World HKX files to Gens format?
     
  5. SonicoOurico

    SonicoOurico

    Member
    19
    0
    0
    I can not make the tails carry the Sonic, the game simply hangs.
    Here is the code:
    Code (Text):
    1.  tails_Carry_sonic:
    2.        tst.b    (a2)
    3.         beq.w   loc_14534
    4.         cmpi.b  #4,routine(a1)
    5.         bcc.w   loc_14466
    6.         btst    #1,Status(a1)
    7.         beq.w   loc_1445A
    8.         move.w  ($FFFFF744).w,d1
    9.         cmp.w   x_vel(a1),d1
    10.         bne.s   loc_1445A
    11.         move.w  ($FFFFF74C).w,d1
    12.         cmp.w   y_vel(a1),d1
    13.         bne.s   loc_14460
    14.         tst.b   ($FFFFB02A).w
    15.         bmi.s   loc_1446A
    16.         andi.b  #$70,d0
    17.         beq.w   loc_14474
    18.         clr.b   ($FFFFB02A).w
    19.         clr.b   (a2)
    20.         move.b  #$12,1(a2)
    21.         andi.w  #$F00,d0
    22.         beq.w   loc_14410
    23.         move.b  #$3C,1(a2)
    24.  
    25. loc_14410:              ; CODE XREF: Tails_Carry_Sonic+4Cj
    26.         btst    #$A,d0
    27.         beq.s   loc_1441C
    28.         move.w  #-$200,x_vel(a1)
    29.  
    30. loc_1441C:              ; CODE XREF: Tails_Carry_Sonic+5Aj
    31.         btst    #$B,d0
    32.         beq.s   loc_14428
    33.         move.w  #$200,x_vel(a1)
    34.  
    35. loc_14428:              ; CODE XREF: Tails_Carry_Sonic+66j
    36.         move.w  #-$380,y_vel(a1)
    37.         bset    #1,Status(a1)
    38.         move.b  #1,jumping(a1)
    39.         move.b  #$E,y_radius(a1)
    40.         move.b  #7,x_radius(a1)
    41.         move.b  #2,anim(a1)
    42.         bset    #2,Status(a1)
    43.         bclr    #4,Status(a1)
    44.         rts
    45. ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
    46.  
    47. loc_1445A:              ; CODE XREF: Tails_Carry_Sonic+16j
    48.                     ; Tails_Carry_Sonic+22j
    49.         move.w  #-$100,y_vel(a1)
    50.  
    51. loc_14460:              ; CODE XREF: Tails_Carry_Sonic+2Cj
    52.         move.b  #0,jumping(a1)
    53.  
    54. loc_14466:              ; CODE XREF: Tails_Carry_Sonic+Cj
    55.         clr.b   ($FFFFB02A).w
    56.  
    57. loc_1446A:              ; CODE XREF: Tails_Carry_Sonic+32j
    58.         clr.b   (a2)
    59.         move.b  #$3C,1(a2)
    60.         rts
    61. ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
    62.  
    63. loc_14474:              ; CODE XREF: Tails_Carry_Sonic+38j
    64.         move.w  x_pos(a0),x_pos(a1)
    65.         move.w  y_pos(a0),y_pos(a1)
    66.         addi.w  #$1C,y_pos(a1)
    67.         andi.b  #-4,4(a1)
    68.         andi.b  #-2,Status(a1)
    69.         move.b  Status(a0),d0
    70.         andi.b  #1,d0
    71.         or.b    d0,4(a1)
    72.         or.b    d0,Status(a1)
    73.         subq.b  #1,anim_frame_duration(a1)
    74.         bpl.s   loc_144F8
    75.         move.b  #$B,anim_frame_duration(a1)
    76.         moveq   #0,d1
    77.         move.b  anim_frame(a1),d1
    78.         addq.b  #1,anim_frame(a1)
    79.         move.b  byte_14522(pc,d1.w),d0
    80.         cmpi.b  #-1,d0
    81.         bne.s   loc_144E4
    82.         move.b  #0,anim_frame(a1)
    83.         move.b  byte_14522(pc),d0
    84.  
    85. loc_144E4:              ; CODE XREF: Tails_Carry_Sonic+11Ej
    86.         move.b  d0,mapping_frame(a1)
    87.         moveq   #0,d0
    88.         move.b  mapping_frame(a1),d0
    89.         move.l  a2,-(sp)
    90.         jsr Tails_Carry_LoadPLC
    91.         movea.l (sp)+,a2
    92.  
    93. loc_144F8:              ; CODE XREF: Tails_Carry_Sonic+104j
    94.         move.w  x_Vel(a0),($FFFFB018).w
    95.         move.w  x_Vel(a0),($FFFFF744).w
    96.         move.w  y_Vel(a0),($FFFFB01A).w
    97.         move.w  y_Vel(a0),($FFFFF74C).w
    98.         movem.l d0-a6,-(sp)
    99.         lea ($FFFFB000).w,a0
    100.         bsr.w   Sonic_DoLevelCollision
    101.         movem.l (sp)+,d0-a6
    102.         rts
    103. ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
    104. byte_14522: dc.b $6B        ; DATA XREF: Tails_Carry_Sonic+126t
    105.         dc.b $6B
    106.         dc.b $6C
    107.         dc.b $6C
    108.         dc.b $6C
    109.         dc.b $6C
    110.         dc.b $6C
    111.         dc.b $6C
    112.         dc.b $6B
    113.         dc.b $6B
    114.         dc.b $6B
    115.         dc.b $6B
    116.         dc.b $6B
    117.         dc.b $6B
    118.         dc.b $6B
    119.         dc.b $6B
    120.         dc.b $FF
    121.         dc.b 0
    122. ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
    123.  
    124. loc_14534:              ; CODE XREF: Tails_Carry_Sonic+2j
    125.         tst.b   1(a2)
    126.         beq.s   loc_14542
    127.         subq.b  #1,1(a2)
    128.         bne.w   locret_1459C
    129.  
    130. loc_14542:              ; CODE XREF: Tails_Carry_Sonic+17Ej
    131.         move.w  x_pos(a1),d0
    132.         sub.w   x_pos(a0),d0
    133.         addi.w  #$10,d0
    134.         cmpi.w  #$20,d0
    135.         bcc.w   locret_1459C
    136.         move.w  y_pos(a1),d1
    137.         sub.w   y_pos(a0),d1
    138.         subi.w  #$20,d1
    139.         cmpi.w  #$10,d1
    140.         bcc.w   locret_1459C
    141.         tst.b   ($FFFFB02A).w
    142.         bne.s   locret_1459C
    143.         cmpi.b  #4,routine(a1)
    144.         bcc.s   locret_1459C
    145.         tst.w   (Debug_placement_mode).w
    146.         bne.s   locret_1459C
    147.         tst.b   spindash_flag(a1)
    148.         bne.s   locret_1459C
    149.         bsr.s   sub_1459E
    150.         moveq   #$4A,d0
    151.         jsr (PlaySound).l
    152.         move.b  #1,(a2)
    153.  
    154. locret_1459C:               ; CODE XREF: Tails_Carry_Sonic+184j
    155.                     ; Tails_Carry_Sonic+198j ...
    156.         rts
    157. ; End of function Tails_Carry_Sonic
    158.  
    159.  
    160. ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B  R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
    161.  
    162.  
    163. sub_1459E:              ; CODE XREF: ROM:00013FEAp
    164.                     ; ROM:000140F6p ...
    165.         clr.w   x_vel(a1)
    166.         clr.w   y_vel(a1)
    167.         clr.w   inertia(a1)
    168.         clr.w   angle(a1)
    169.         move.w  x_pos(a0),x_pos(a1)
    170.         move.w  y_pos(a0),y_pos(a1)
    171.         addi.w  #$1C,y_pos(a1)
    172.         move.w  #$2200,anim(a1)
    173.         move.b  #0,anim_frame_duration(a1)
    174.         move.b  #0,anim_frame(a1)
    175.         move.b  #3,($FFFFB02A).w
    176.         bset    #1,Status(a1)
    177.         bclr    #4,Status(a1)
    178.         move.b  #0,spindash_flag(a1)
    179.         andi.b  #-4,4(a1)
    180.         andi.b  #-2,Status(a1)
    181.         move.b  Status(a0),d0
    182.         andi.b  #1,d0
    183.         or.b    d0,4(a1)
    184.         or.b    d0,Status(a1)
    185.         move.w  x_vel(a0),($FFFFF744).w
    186.         move.w  x_vel(a0),x_vel(a1)
    187.         move.w  y_Vel(a0),($FFFFF74C).w
    188.         move.w  y_Vel(a0),y_Vel(a1)
    189.         eori.b  #2,4(a1)
    190.         rts
    191. ; End of function sub_1459E


    [​IMG]
     
  6. MarkeyJester

    MarkeyJester

    Original, No substitute Resident Jester
    2,200
    431
    63
    Japan
    There are a few "4(a1)" in that code, this is supposed to be the mappings pointer in Sonic 2. I assume this code is ported from Sonic 3, the 4 should be a 1, or "render_flags" as the equates appear to be.

    It would explain why the sprites are spazed all over the place, it would also explain a possible reason for the crash. There could be other reasons, but I'm sticking a bet with that for now.
     
  7. SonicoOurico

    SonicoOurico

    Member
    19
    0
    0
    I did exactly what you said, but it did not work.
     
  8. SonicoOurico

    SonicoOurico

    Member
    19
    0
    0
    Does anyone know what this line means?
    Code (Text):
    1.  move.w x_Vel(a0),($FFFFB018).w
    2.         move.w  x_Vel(a0),($FFFFF744).w
    3.         move.w  y_Vel(a0),($FFFFB01A).w
    4.         move.w  y_Vel(a0),($FFFFF74C).w
    5.  
     
  9. MarkeyJester

    MarkeyJester

    Original, No substitute Resident Jester
    2,200
    431
    63
    Japan
    These appear to be copying the X and Y speeds of an object to different RAM addresses.

    The $FFFFB018 and $FFFFB01A is within an object in Sonic 2 I believe. I assume this is Sonic's object slot since he is usually the first object in the object RAM, I would also assume that 18 is the x_Vel (X speed), and 1A is the y_Vel (Y speed). I would also assume judging by your previous post regarding tails carrying Sonic, that a0 must therefore be Tails' object slot (probably $FFFFB040), so, this must be Tails copying his X and Y speed to Sonic's X and Y speeds.

    X in mathematics is usually associated with horizontal (left/right) and Y with vertical (up/down). So the "move.w x_Vel(a0),($FFFFB018).w" and "move.w y_Vel(a0),($FFFFB01A).w" are copying Tails' Up/Down and Left/Right speed movement to Sonic, which makes sense as when Tails is to suddenly let go by perhaps landing while moving at speed, Sonic needs to move at that same speed in the same direction.

    As for the "move.w x_Vel(a0),($FFFFF744).w" and "move.w y_Vel(a0),($FFFFF74C).w", well these are keeping a copy of the X and Y speeds in these RAM slots, I am not sure what for but there's bound to be a good reason.

    Everything above I've just said is just an assumption, I am not really in any position right now to go looking through source codes to find out exactly what it's doing.
     
  10. SonicoOurico

    SonicoOurico

    Member
    19
    0
    0
    Thanks it worked
     
  11. TheKazeblade

    TheKazeblade

    "Our Life is More than a Side-Effect" Member
    I'm attempting to edit one of Generations challenge acts in Sonicglvl (#ghz202.ar.00) but for some reason it won't load terrain collision or objects. Typically it asks if I want to load terrain but with this specific stage it doesn't bother. I've attempted in both sonicglvl and libgens-sonicglvl but the results are the same.

    Most of the other challenge acts I've attempted to load seem to behave strangely compared to the main modern stages, making me wonder if there's an additional step needed to loading challenge acts. Even so, ghz202 is the only one that behaves like this specifically. I'd be grateful for any advice :)
     
  12. Strike

    Strike

    Member
    5
    0
    0
    Does anyone know where I can find Chip's data in Unleashed? He doesn't have his own AR file.
     
  13. BoardAvenger

    BoardAvenger

    Member
    3
    0
    0
    This is kind of a crap first post but it's irritating me that I don't have the knowhow to work it out myself...

    I've written a customised build of Sonic 3 Complete to a couple of M27C160 EEPROMs to solder into a cartridge once a suitable one arrives but one of the EEPROMs appears to be faulty in a very specific and minute way: it is refusing to allow one single nibble to be written properly, perhaps because it isn't erasing it properly, which means that instead of getting a D0 at that offset I'm getting a D4. Specifically, if I read the entire rom back off the EEPROM, reassemble it and then reverse the byte-swapping process, this erroneous D4 sits at offset $380278.

    So here's my question: what does the D0 byte at offset $380278 in a customised Sonic 3 Complete ROM actually do?

    I'd simply rewrite it to a fresh EEPROM if I could, but I don't have one that isn't knackered and they're not the sort of thing I can simply walk into a shop and buy (only got 2 left, this is one of them and the other flat out refuses to even write to a different address). What I figure is, this single byte being written as a D4 rather than a D0 might not make a damn bit of difference to me playing the game, given that there's a whole bunch of code in Sonic 3 Complete that I will never, ever use. For instance, if it turned out to be part of one of the Sonic & Knuckles Collection music files, that would be totally immaterial because I don't use them. Or it could be part of the level layout for the original release version of Flying Battery, which I don't play because I prefer the "prototype". You get the idea. I'm trying not to waste an EEPROM, essentially, if this isn't going to cause an issue for me. I've booted up the reassembled ROM (i.e. written to EEPROM incorrectly, read back off EEPROM and reassembled) in Bizhawk and in Kega Fusion, and have not thus far found anything obviously amiss in either but obviously it's such a teensy imperfection that it will presumably require a very specific scenario in which to bump into whatever job that byte does and potentially encounter a catastrophe.

    The standard ROM doesn't even contain this offset because the file isn't as big so doesn't extend that far, but it's there in every file the customiser spits out when I whack in some options. It isn't specific to my preferred custom options, either, because I tried to isolate it a very tedious manual way by changing every single option I'd modified in the customiser to see if any of them modified that offset but it doesn't matter what settings I use and what IPS patches are getting applied, this byte always downloads as a D0 (despite it not even being present in the un-customised 130810 ROM). I can't see what difference it makes if it's a D4.

    There might be a better place to ask this, in which case feel free to let me know. It's a very small thing I'm asking about but it requires some explanation so sorry about the length of the post; I was a bit nervous of starting a whole new topic for something so trivial. I dunno if maybe Neo might be my guy here, but I don't want to immediately show up and then PM him asking a question about a project that appears to have essentially ended some time ago.
     
  14. Fred

    Fred

    Taking a break Oldbie
    1,563
    117
    43
    Portugal
    Sonic 3 Unlocked
    1C A9 27 00 BF 0A D0 F4 D0 F8 1D F4 1E 00 2B 4C

    Assuming I checked the right build, that address lands right in the middle of the the Kosinski-compressed 128x128 chunk definitions for Launch Base Zone 2. Now, I have no clue what the implications of a random corrupted bit in a compressed archive are, but I'm pretty sure something will be wrong.
     
  15. BoardAvenger

    BoardAvenger

    Member
    3
    0
    0
    Woah, thank you so much! I guess I'll be redoing that EPROM instead of soldering it in anyway, then. Damn.

    ... I now want to play LBZ in emulation and see if anything nuts happens though.

    (I just now realised the obvious dumb flaw in what I said about that offset only being in customised builds: the offset will presumably just change because stuff got packed into the start of the file, so this code is still in the standard build except at a different offset. Sleep has value...)

    I really appreciate everything you're doing with Sonic 3 by the way, I've been following the Unlocked blog for a wee while. It's extremely helpful to see you breaking stuff down like you do!
     
  16. Moon Alien

    Moon Alien

    Member
    5
    0
    0
    Sorry if this is a stupid question,

    I was trying to fix up Sonic 2 before I make any kind of hack of it, and one of the bugs was the broken one way barrier in Chemical Plant and Death Egg. I spent a while on it and believe I'm stuck.

    It says here that the object subtype of the barrier should be $02 and not $00 (for Nemesis art decompression I presume) : https://tcrf.net/Sonic_the_Hedgehog_2_(Genesis)#CPZ.2FDEZ_Door

    The problem is that I cannot find that subtype property anywhere :

    Code (Text):
    1. ; ===========================================================================
    2. ; loc_116AC:
    3. Obj2D_Init:
    4.     addq.b  #2,routine(a0)
    5.     move.l  #Obj2D_MapUnc_11822,mappings(a0)
    6.     move.w  #make_art_tile(ArtTile_ArtNem_HtzValveBarrier,1,0),art_tile(a0)
    7.     move.b  #8,width_pixels(a0)
    8.     cmpi.b  #metropolis_zone,(Current_Zone).w
    9.     beq.s   +
    10.     cmpi.b  #metropolis_zone_2,(Current_Zone).w
    11.     bne.s   ++
    12. +
    13.     move.w  #make_art_tile(ArtTile_ArtKos_LevelArt,3,0),art_tile(a0)
    14.     move.b  #$C,width_pixels(a0)
    15. +
    16.     cmpi.b  #chemical_plant_zone,(Current_Zone).w
    17.     bne.s   +
    18.     move.w  #make_art_tile(ArtTile_ArtNem_ConstructionStripes_2,1,0),art_tile(a0)
    19.     move.b  #8,width_pixels(a0)
    20. +
    21.     cmpi.b  #death_egg_zone,(Current_Zone).w
    22.     bne.s   +
    23.     move.w  #make_art_tile(ArtTile_ArtNem_ConstructionStripes_1,1,0),art_tile(a0)
    24.     move.b  #8,width_pixels(a0)
    25. +
    26.     cmpi.b  #aquatic_ruin_zone,(Current_Zone).w
    27.     bne.s   +
    28.     move.w  #make_art_tile(ArtTile_ArtNem_ARZBarrierThing,1,0),art_tile(a0)
    29.     move.b  #8,width_pixels(a0)
    30. +
    31.     bsr.w   Adjust2PArtPointer
    32.     ori.b   #4,render_flags(a0)
    33.     move.b  #4,priority(a0)
    34.     move.w  y_pos(a0),objoff_32(a0)
    35.     move.b  subtype(a0),mapping_frame(a0)
    36.     move.w  x_pos(a0),d2
    37.     move.w  d2,d3
    38.     subi.w  #$200,d2
    39.     addi.w  #$18,d3
    40.     btst    #0,status(a0)
    41.     beq.s   +
    42.     subi.w  #-$1E8,d2
    43.     addi.w  #$1E8,d3
    44. +
    45.     move.w  d2,objoff_38(a0)
    46.     move.w  d3,objoff_3A(a0)
    47. ; loc_1175E:
    48. Obj2D_Main:
    49.     btst    #0,status(a0)
    50.     bne.s   +
    51.     move.w  objoff_38(a0),d2
    52.     move.w  x_pos(a0),d3
    53.     tst.b   routine_secondary(a0)                ; check if barrier is moving up
    54.     beq.s   ++
    55.     move.w  objoff_3A(a0),d3
    56.     bra.s   ++
    57. ; ===========================================================================
    I tried changing zeroes to twos here and there (even in the object's hex file), changing the position of some lines of code, but all it did was either change the palette, glitch up the graphics of the barrier, or freeze completely going down the slope at the beginning of CPZ2 (because the barrier loads in that area). I don't see any disassembly notes about fixing the barrier either, whereas other glitches are described in detail in the disasm.

    I'm very new to assembly, so excuse me if the answer is super obvious.
     
  17. MainMemory

    MainMemory

    Kate the Wolf Tech Member
    4,742
    338
    63
    SonLVL
    Normally you'd fix the object's subtype by editing the object layout data with SonLVL/SonED2. You can fix it in code, if you find the parts relevant to CPZ and DEZ, and insert the line: move.b #2,subtype(a0)
     
  18. Moon Alien

    Moon Alien

    Member
    5
    0
    0
    Thank you very much. So by changing the CPZ and DEZ sections like so :

    Code (Text):
    1.     cmpi.b  #chemical_plant_zone,(Current_Zone).w
    2.     bne.s   +
    3.     move.w  #make_art_tile(ArtTile_ArtNem_ConstructionStripes_2,1,0),art_tile(a0)
    4.     move.b  #8,width_pixels(a0)
    5.     move.b #2,subtype(a0)
    6. +
    7.     cmpi.b  #death_egg_zone,(Current_Zone).w
    8.     bne.s   +
    9.     move.w  #make_art_tile(ArtTile_ArtNem_ConstructionStripes_1,1,0),art_tile(a0)
    10.     move.b  #8,width_pixels(a0)
    11.     move.b #2,subtype(a0)
    It fixed the door! : https://imgur.com/a/xwz06BT
     
  19. Moon Alien

    Moon Alien

    Member
    5
    0
    0
    Excuse me for poking my head in again, but the door fix missed one door. This is the second door after Metal Sonic : https://imgur.com/gallery/rHM7siB

    I presume this particular door is part of some sort of sequence data rather than object data.

    There are many reasons I come to this conclusion, first, there is no SonLVL data about this 2nd door, it just ends up being a blank space in the editor. Then, I removed the subtype line of code for Death Egg and flipped all the doors around, didn't help (which of course, since i checked the original game after and that one door was always broken). And finally, I realized that this one door works differently to the other doors, in the sense that it doesn't go up immediately upon arrival like all the other doors, it only opens after Eggman does the scared face for a second which is in turn triggered by the arrival at the door.

    Of course, the reason why I'm here is because I can't find this sequence data anywhere in the assembly, probably because the door is a completely different object than obj2D in this instance or it's something else that's either more cryptic or way too obvious.

    Anyways, thanks again for the advice.
     
  20. MainMemory

    MainMemory

    Kate the Wolf Tech Member
    4,742
    338
    63
    SonLVL
    That door in particular is spawned as a sub-object of object C6, Eggman. It has its own mappings in objC6_b.bin, so you'll have to edit that to fix it.