don't click here

Dissasembly Choice For Understanding This Sonic & Knuckles Code

Discussion in 'Engineering & Reverse Engineering' started by Cokie, Nov 27, 2023.

  1. Cokie

    Cokie

    C. Okie Member
    75
    22
    8
    In the past I shortly attacked the SOZ2 Ghost related code in Sonic And Knuckles before taking a break. Want to take another crack at it. Most of the Ghost related code in Sandopolis Zone 2 is at bottom ( source from https://raw.githubusercontent.com/sonicretro/skdisasm/master/sonic3k.asm )

    First a note: Since this code is from Sonic And Knuckles, i'm assuming that it can work independent of S3k , correct me if I am wrong. I can examine this code from several sources, my question is which is the best given Pros and Cons listed below . And also assuming it can run independent as Sk.

    1. ( MOST UPDATED ) https://github.com/sonicretro/skdisasm run buildSK.bat and build a Sonic and Knuckles rom. Then Run debugging in Gensr57shell examine / compare the the .lst file as I run in gens and breakpoints. . The plus is that the labels address Loc_XXXX are the same as the rom address

    2. ( MOST UPDATED ) https://github.com/sonicretro/skdisasm run buildS3Complete.bat setting 0 or 1 as a S3k rom. Lab_xxxx wont match the rom address. As the rom address of this github matche the sonic and knuckles alone build.

    3. https://info.sonicretro.org/images/c/ca/Sonic_&_Knuckles_(IDA_Format_by_Stealth).rar Use the older Stealth IDA in IDA PRO. The plus Is I can run IDA pro LAB313RU IDA TOOL https://github.com/lab313ru/smd_ida_tools2 to debug and run in ida with his gens mod emulator. The con is it is an older build. Labels have different names that may not agree with what newer builds describe locations as. And it isn't as labeled and commented. Also the address of instructions and data in this build dont match the standalone SK build exactly. in . https://github.com/sonicretro/skdisasm with buildSK.bat

    4. Ask Clownacy if he has the latest IDA database of https://github.com/sonicretro/skdisasm would be optimum if the labels matched the rom address. The same benefits of 3 in that I could run in IDA debugger with Lab313RU IDA TOOL.

    A Lot of comes down to how updated it is with most comments , accurate and more labels. Not sure if having labels address match the address between the s3kcomplete and sk alone build of 1 and 2 matters. And if the Stealth build offsets of code and data not matching that of the sonic and knuckles standalone of the newest github build matter?

    Question - Too much preparing for this task of examine a bit of code?

    Code (Text):
    1. Obj_SOZGhosts:
    2.         move.l    #loc_8F0CA,(a0)
    3.         move.w    #$120,$10(a0)
    4.         move.w    #$A0,$14(a0)
    5.  
    6. loc_8F0CA:
    7.         cmpi.b    #2,(Player_1+character_id).w
    8.         beq.s    loc_8F0DA
    9.         tst.b    (Last_star_post_hit).w
    10.         beq.w    locret_8F436
    11.  
    12. loc_8F0DA:
    13.         moveq    #0,d0
    14.         move.b    (_unkF7C3).w,d0
    15.         beq.s    loc_8F112
    16.         move.b    byte_8F118(pc,d0.w),d0
    17.         move.b    (_unkFAAD).w,d1
    18.         cmp.b    d0,d1
    19.         bhs.w    locret_8F436
    20.         subq.w    #1,$3A(a0)
    21.         bpl.w    locret_8F436
    22.         addq.b    #1,d1
    23.         move.b    d1,(_unkFAAD).w
    24.         cmp.b    d0,d1
    25.         bhs.s    loc_8F108
    26.         move.w    #$3F,$3A(a0)
    27.  
    28. loc_8F108:
    29.         lea    ChildObjDat_8F674(pc),a2
    30.         jmp    (CreateChild6_Simple).l
    31. ; ---------------------------------------------------------------------------
    32.  
    33. loc_8F112:
    34.         clr.b    (_unkFAAD).w
    35.         rts
    36. ; ---------------------------------------------------------------------------
    37. byte_8F118:    dc.b 0
    38.         dc.b 1
    39.         dc.b 2
    40.         dc.b 2
    41.         dc.b 3
    42.         dc.b 3
    43. ; ---------------------------------------------------------------------------
    44.  
    45. loc_8F11E:
    46.         moveq    #0,d0
    47.         move.b    5(a0),d0
    48.         move.w    off_8F19A(pc,d0.w),d1
    49.         jsr    off_8F19A(pc,d1.w)
    50.         lea    DPLCPtr_SOZGhosts(pc),a2
    51.         jsr    (Perform_DPLC).l
    52.         tst.b    4(a0)
    53.         bpl.s    loc_8F16A
    54.         tst.b    (_unkF7C3).w
    55.         beq.s    loc_8F174
    56.         jsr    (Check_PlayerCollision).l
    57.         beq.s    loc_8F15E
    58.         jsr    (Check_PlayerAttack).l
    59.         bne.s    loc_8F174
    60.         tst.b    $34(a1)
    61.         bne.s    loc_8F15E
    62.         jsr    (HurtCharacter_Directly).l
    63.  
    64. loc_8F15E:
    65.         jsr    (Add_SpriteToCollisionResponseList).l
    66.         jmp    (Draw_Sprite).l
    67. ; ---------------------------------------------------------------------------
    68.  
    69. loc_8F16A:
    70.         subq.b    #1,(_unkFAAD).w
    71.         jmp    (Go_Delete_SpriteSlotted2).l
    72. ; ---------------------------------------------------------------------------
    73.  
    74. loc_8F174:
    75.         move.l    #loc_8F37A,(a0)
    76.         move.l    #loc_8F16A,$34(a0)
    77.         lea    byte_8F6BF(pc),a1
    78.         jsr    (Set_Raw_Animation).l
    79.         moveq    #signextendB(sfx_Bouncy),d0
    80.         jsr    (Play_SFX).l
    81.         jmp    (Draw_Sprite).l
    82. ; ---------------------------------------------------------------------------
    83. off_8F19A:    dc.w loc_8F1AC-off_8F19A
    84.         dc.w loc_8F1DA-off_8F19A
    85.         dc.w loc_8F1FE-off_8F19A
    86.         dc.w loc_8F226-off_8F19A
    87.         dc.w loc_8F26E-off_8F19A
    88.         dc.w loc_8F2BE-off_8F19A
    89.         dc.w loc_8F2E0-off_8F19A
    90.         dc.w loc_8F322-off_8F19A
    91.         dc.w loc_8F36E-off_8F19A
    92. ; ---------------------------------------------------------------------------
    93.  
    94. loc_8F1AC:
    95.         lea    ObjDat4_8F61C(pc),a1
    96.         jsr    (SetUp_ObjAttributesSlotted).l
    97.         bclr    #2,4(a0)
    98.         bset    #7,4(a0)
    99.         move.b    (_unkF7C3).w,$42(a0)
    100.         move.b    (_unkFAAD).w,$43(a0)
    101.         bsr.w    sub_8F538
    102.         moveq    #signextendB(sfx_GhostAppear),d0
    103.         jsr    (Play_SFX).l
    104.  
    105. loc_8F1DA:
    106.         jsr    (Animate_RawMultiDelay).l
    107.         tst.w    d2
    108.         beq.s    locret_8F1F2
    109.         cmpi.b    #5,(_unkF7C3).w
    110.         beq.s    loc_8F1F4
    111.         move.b    #4,5(a0)
    112.  
    113. locret_8F1F2:
    114.         rts
    115. ; ---------------------------------------------------------------------------
    116.  
    117. loc_8F1F4:
    118.         move.b    #$C,5(a0)
    119.         bra.w    loc_8F58E
    120. ; ---------------------------------------------------------------------------
    121.  
    122. loc_8F1FE:
    123.         jsr    (Animate_RawMultiDelay).l
    124.         jsr    (Swing_UpAndDown).l
    125.         jsr    (MoveSprite2).l
    126.         bsr.w    sub_8F4F0
    127.         move.b    (_unkF7C3).w,d0
    128.         cmp.b    $42(a0),d0
    129.         beq.s    locret_8F224
    130.         move.b    #6,5(a0)
    131.  
    132. locret_8F224:
    133.         rts
    134. ; ---------------------------------------------------------------------------
    135.  
    136. loc_8F226:
    137.         jsr    (Animate_RawMultiDelay).l
    138.         jsr    (Swing_UpAndDown).l
    139.         tst.w    d3
    140.         bne.s    loc_8F240
    141.         jsr    (MoveSprite2).l
    142.         bra.w    sub_8F4F0
    143. ; ---------------------------------------------------------------------------
    144.  
    145. loc_8F240:
    146.         move.b    #8,5(a0)
    147.         moveq    #0,d0
    148.         move.b    (_unkF7C3).w,d0
    149.         move.b    byte_8F268(pc,d0.w),d1
    150.         beq.w    locret_8F436
    151.         move.b    d0,$42(a0)
    152.         cmpi.b    #5,d0
    153.         beq.s    loc_8F1F4
    154.         move.b    #4,5(a0)
    155.         bra.w    loc_8F58E
    156. ; ---------------------------------------------------------------------------
    157. byte_8F268:    dc.b 0
    158.         dc.b 0
    159.         dc.b 0
    160.         dc.b 1
    161.         dc.b 0
    162.         dc.b 1
    163. ; ---------------------------------------------------------------------------
    164.  
    165. loc_8F26E:
    166.         jsr    (Swing_UpAndDown).l
    167.         jsr    (MoveSprite2).l
    168.         bsr.w    sub_8F4F0
    169.         jsr    (Animate_RawMultiDelay).l
    170.         beq.s    locret_8F2B0
    171.         cmpi.b    #2,$23(a0)
    172.         bne.s    locret_8F2B0
    173.         move.b    #$A,5(a0)
    174.         move.b    (_unkF7C3).w,d0
    175.         move.b    d0,$42(a0)
    176.         add.w    d0,d0
    177.         andi.w    #$C,d0
    178.         movea.l    off_8F2B2(pc,d0.w),a1
    179.         move.b    (a1),$22(a0)
    180.         jsr    (Set_Raw_Animation).l
    181.  
    182. locret_8F2B0:
    183.         rts
    184. ; ---------------------------------------------------------------------------
    185. off_8F2B2:    dc.l byte_8F6CC
    186.         dc.l byte_8F6CC
    187.         dc.l byte_8F6D4
    188. ; ---------------------------------------------------------------------------
    189.  
    190. loc_8F2BE:
    191.         jsr    (Swing_UpAndDown).l
    192.         jsr    (MoveSprite2).l
    193.         bsr.w    sub_8F4F0
    194.         jsr    (Animate_RawMultiDelay).l
    195.         tst.w    d2
    196.         beq.s    locret_8F2DE
    197.         move.b    #4,5(a0)
    198.  
    199. locret_8F2DE:
    200.         rts
    201. ; ---------------------------------------------------------------------------
    202.  
    203. loc_8F2E0:
    204.         jsr    (Animate_RawMultiDelay).l
    205.         jsr    (Swing_UpAndDown).l
    206.         jsr    (MoveSprite2).l
    207.         move.w    $10(a0),d0
    208.         tst.w    $18(a0)
    209.         bmi.s    loc_8F304
    210.         cmpi.w    #$1A0,d0
    211.         bhi.s    loc_8F30A
    212.         rts
    213. ; ---------------------------------------------------------------------------
    214.  
    215. loc_8F304:
    216.         cmpi.w    #$A0,d0
    217.         bhs.s    locret_8F320
    218.  
    219. loc_8F30A:
    220.         move.b    #$E,5(a0)
    221.         bchg    #0,4(a0)
    222.         neg.w    $18(a0)
    223.         move.w    #$3B,$2E(a0)
    224.  
    225. locret_8F320:
    226.         rts
    227. ; ---------------------------------------------------------------------------
    228.  
    229. loc_8F322:
    230.         jsr    (Animate_RawMultiDelay).l
    231.         subq.w    #1,$2E(a0)
    232.         bpl.w    locret_8F436
    233.         move.b    #$10,5(a0)
    234.         move.b    #-$29,$28(a0)
    235.         bset    #2,4(a0)
    236.         move.w    (Camera_X_pos).w,d0
    237.         move.w    $10(a0),d1
    238.         subi.w    #$80,d1
    239.         add.w    d1,d0
    240.         move.w    d0,$10(a0)
    241.         move.w    (Camera_Y_pos).w,d0
    242.         move.w    $14(a0),d1
    243.         subi.w    #$80,d1
    244.         add.w    d1,d0
    245.         move.w    d0,$14(a0)
    246.         move.w    #$100,$1A(a0)
    247.         rts
    248. ; ---------------------------------------------------------------------------
    249.  
    250. loc_8F36E:
    251.         jsr    (Animate_RawMultiDelay).l
    252.         jmp    (MoveSprite2).l
    253. ; ---------------------------------------------------------------------------
    254.  
    255. loc_8F37A:
    256.         jsr    (Animate_RawMultiDelay).l
    257.         lea    DPLCPtr_SOZGhosts(pc),a2
    258.         jsr    (Perform_DPLC).l
    259.         jmp    (Draw_Sprite).l
    260. ; ---------------------------------------------------------------------------
    261.  
    262. Obj_SOZGhostCapsuleLoadArt:
    263.         moveq    #0,d0
    264.         move.b    $2C(a0),d0
    265.         movea.l    off_8F3BE(pc,d0.w),a1
    266.         jsr    (Check_PlayerInRange).l
    267.         tst.l    d0
    268.         beq.w    locret_8F436
    269.         tst.w    d0
    270.         beq.w    locret_8F436
    271.         moveq    #0,d0
    272.         move.b    $2C(a0),d0
    273.         movea.l    off_8F3C6(pc,d0.w),a1
    274.         jsr    (a1)
    275.         jmp    (Delete_Current_Sprite).l
    276. ; ---------------------------------------------------------------------------
    277. off_8F3BE:    dc.l word_8F3CE
    278.         dc.l word_8F3D6
    279. off_8F3C6:    dc.l loc_8F3DE
    280.         dc.l loc_8F3F0
    281. word_8F3CE:    dc.w  $FFF0,   $20, $FFC0,   $80
    282. word_8F3D6:    dc.w  $FFF0,   $20, $FF80,  $100
    283. ; ---------------------------------------------------------------------------
    284.  
    285. loc_8F3DE:
    286.         lea    PLC_8F3E8(pc),a1
    287.         jmp    (Load_PLC_Raw).l
    288. ; ---------------------------------------------------------------------------
    289. PLC_8F3E8:    dc.w 0
    290.         dc.l ArtNem_EggCapsule
    291.         dc.w $A6C0
    292. ; ---------------------------------------------------------------------------
    293.  
    294. loc_8F3F0:
    295.         jmp    (LoadEnemyArt).l
    296. ; ---------------------------------------------------------------------------
    297.  
    298. Obj_SOZGhostCapsule:
    299.         lea    ObjDat3_8F62E(pc),a1
    300.         jsr    (SetUp_ObjAttributes).l
    301.         move.l    #loc_89C14,(a0)
    302.         move.b    #3,$2C(a0)
    303.         lea    ChildObjDat_8F646(pc),a2
    304.         jsr    (CreateChild1_Normal).l
    305.         tst.b    (Last_star_post_hit).w
    306.         bne.s    loc_8F424
    307.         cmpi.b    #2,(Player_1+character_id).w
    308.         bne.s    locret_8F436
    309.  
    310. loc_8F424:
    311.         move.l    #loc_89C54,(a0)
    312.         move.b    #1,$22(a0)
    313.         bset    #5,$38(a0)
    314.  
    315. locret_8F436:
    316.         rts
    317. ; ---------------------------------------------------------------------------
    318.  
    319. loc_8F438:
    320.         lea    (word_86B3E).l,a1
    321.         jsr    (SetUp_ObjAttributes3).l
    322.         move.l    #loc_8672A,(a0)
    323.         tst.b    (Last_star_post_hit).w
    324.         beq.s    locret_8F45C
    325.         move.l    #loc_86754,(a0)
    326.         move.b    #$C,$22(a0)
    327.  
    328. locret_8F45C:
    329.         rts
    330. ; ---------------------------------------------------------------------------
    331.  
    332. loc_8F45E:
    333.         moveq    #0,d0
    334.         move.b    5(a0),d0
    335.         move.w    off_8F488(pc,d0.w),d1
    336.         jsr    off_8F488(pc,d1.w)
    337.         tst.b    $2C(a0)
    338.         bne.s    loc_8F482
    339.         lea    DPLCPtr_SOZGhosts(pc),a2
    340.         jsr    (Perform_DPLC).l
    341.         jmp    (Sprite_CheckDeleteSlotted).l
    342. ; ---------------------------------------------------------------------------
    343.  
    344. loc_8F482:
    345.         jmp    (Sprite_CheckDelete).l
    346. ; ---------------------------------------------------------------------------
    347. off_8F488:    dc.w loc_8F48E-off_8F488
    348.         dc.w loc_8F4D8-off_8F488
    349.         dc.w loc_8F4E2-off_8F488
    350. ; ---------------------------------------------------------------------------
    351.  
    352. loc_8F48E:
    353.         moveq    #0,d0
    354.         move.b    $2C(a0),d0
    355.         add.w    d0,d0
    356.         lea    word_8F4C0(pc,d0.w),a1
    357.         move.w    (a1)+,$18(a0)
    358.         move.w    (a1)+,$40(a0)
    359.         jsr    (Change_FlipXWithVelocity).l
    360.         tst.w    d0
    361.         bne.s    loc_8F4B6
    362.         lea    ObjDat4_8F61C(pc),a1
    363.         jmp    (SetUp_ObjAttributesSlotted).l
    364. ; ---------------------------------------------------------------------------
    365.  
    366. loc_8F4B6:
    367.         lea    ObjDat3_8F63A(pc),a1
    368.         jmp    (SetUp_ObjAttributes).l
    369. ; ---------------------------------------------------------------------------
    370. word_8F4C0:    dc.w  $FE00, $FFE0
    371.         dc.w   $200, $FFE0
    372.         dc.w  $FD80, $FFE8
    373.         dc.w   $280, $FFE8
    374.         dc.w  $FD00, $FFF0
    375.         dc.w   $300, $FFF0
    376. ; ---------------------------------------------------------------------------
    377.  
    378. loc_8F4D8:
    379.         lea    byte_8F68E(pc),a1
    380.         jsr    (Animate_RawNoSST).l
    381.  
    382. loc_8F4E2:
    383.         move.w    $40(a0),d0
    384.         add.w    d0,$1A(a0)
    385.         jmp    (MoveSprite2).l
    386.  
    387. ; =============== S U B R O U T I N E =======================================
    388.  
    389.  
    390. sub_8F4F0:
    391.         move.w    $10(a0),d0
    392.         tst.w    $18(a0)
    393.         bmi.s    loc_8F502
    394.         cmpi.w    #$1A0,d0
    395.         bhi.s    loc_8F508
    396.         rts
    397. ; ---------------------------------------------------------------------------
    398.  
    399. loc_8F502:
    400.         cmpi.w    #$A0,d0
    401.         bhs.s    locret_8F512
    402.  
    403. loc_8F508:
    404.         bchg    #0,4(a0)
    405.         neg.w    $18(a0)
    406.  
    407. locret_8F512:
    408.         rts
    409. ; End of function sub_8F4F0
    410.  
    411. ; ---------------------------------------------------------------------------
    412.  
    413. loc_8F514:
    414.         move.b    #1,(Last_star_post_hit).w
    415.         lea    (SOZ2_Start).l,a1
    416.         move.w    (a1)+,(Saved_X_pos).w
    417.         move.w    (a1)+,(Saved_Y_pos).w
    418.         jsr    (Save_Level_Data).l
    419.         lea    ChildObjDat_8F64E(pc),a2
    420.         jmp    (CreateChild1_Normal).l
    421.  
    422. ; =============== S U B R O U T I N E =======================================
    423.  
    424.  
    425. sub_8F538:
    426.         jsr    (Random_Number).l
    427.         andi.w    #$FF,d0
    428.         subi.w    #$7F,d0
    429.         add.w    d0,$10(a0)
    430.         moveq    #0,d1
    431.         move.b    (_unkF7C3).w,d1
    432.         add.w    d1,d1
    433.         move.w    word_8F582(pc,d1.w),d2
    434.         cmpi.w    #$120,d0
    435.         bhs.s    loc_8F564
    436.         bset    #0,4(a0)
    437.         neg.w    d2
    438.  
    439. loc_8F564:
    440.         move.w    d2,$18(a0)
    441.         andi.w    #$C,d1
    442.         move.l    off_8F576(pc,d1.w),$30(a0)
    443.         bra.w    loc_8F58E
    444. ; ---------------------------------------------------------------------------
    445. off_8F576:    dc.l byte_8F682
    446.         dc.l byte_8F695
    447.         dc.l byte_8F6AA
    448. word_8F582:    dc.w $FF00
    449.         dc.w $FF00
    450.         dc.w $FF00
    451.         dc.w $FE80
    452.         dc.w $FE80
    453.         dc.w $FE00
    454. ; ---------------------------------------------------------------------------
    455.  
    456. loc_8F58E:
    457.         moveq    #0,d0
    458.         move.b    (_unkF7C3).w,d0
    459.         add.w    d0,d0
    460.         move.w    word_8F582(pc,d0.w),d1
    461.         tst.w    $18(a0)
    462.         bmi.s    loc_8F5A2
    463.         neg.w    d1
    464.  
    465. loc_8F5A2:
    466.         move.w    d1,$18(a0)
    467.         add.w    d0,d0
    468.         movea.l    off_8F5C8(pc,d0.w),a1
    469.         bclr    #0,$38(a0)
    470.         jsr    (a1)
    471.         tst.w    $1A(a0)
    472.         bpl.s    loc_8F5C2
    473.         bset    #0,$38(a0)
    474.         neg.w    d0
    475.  
    476. loc_8F5C2:
    477.         move.w    d0,$1A(a0)
    478.         rts
    479. ; End of function sub_8F538
    480.  
    481. ; ---------------------------------------------------------------------------
    482. off_8F5C8:    dc.l loc_8F5E0
    483.         dc.l loc_8F5E0
    484.         dc.l loc_8F5E0
    485.         dc.l loc_8F5F0
    486.         dc.l loc_8F5F0
    487.         dc.l loc_8F606
    488. ; ---------------------------------------------------------------------------
    489.  
    490. loc_8F5E0:
    491.         move.w    #$40,d0
    492.         move.w    d0,$3E(a0)
    493.         move.w    #4,$40(a0)
    494.         rts
    495. ; ---------------------------------------------------------------------------
    496.  
    497. loc_8F5F0:
    498.         move.w    #$80,d0
    499.         move.w    d0,$3E(a0)
    500.         move.w    #8,$40(a0)
    501.         bclr    #0,$38(a0)
    502.         rts
    503. ; ---------------------------------------------------------------------------
    504.  
    505. loc_8F606:
    506.         move.w    #$C0,d0
    507.         move.w    d0,$3E(a0)
    508.         move.w    #$10,$40(a0)
    509.         bclr    #0,$38(a0)
    510.         rts
    511. ; ---------------------------------------------------------------------------
    512. ObjDat4_8F61C:    dc.w 2
    513.         dc.w $A500
    514.         dc.w $12
    515.         dc.w 0
    516.         dc.l Map_SOZGhosts
    517.         dc.w 0
    518.         dc.b $10
    519.         dc.b $14
    520.         dc.b 0
    521.         dc.b 0
    522. ObjDat3_8F62E:    dc.l Map_EggCapsule
    523.         dc.w $8536
    524.         dc.w $180
    525.         dc.b $30
    526.         dc.b $20
    527.         dc.b 0
    528.         dc.b 0
    529. ObjDat3_8F63A:    dc.l Map_SOZGhosts
    530.         dc.w $A500
    531.         dc.w $200
    532.         dc.b $30
    533.         dc.b $20
    534.         dc.b 0
    535.         dc.b 0
    536. ChildObjDat_8F646:
    537.         dc.w 0
    538.         dc.l loc_8F438
    539.         dc.w $DC
    540. ChildObjDat_8F64E:
    541.         dc.w 5
    542.         dc.l loc_8F45E
    543.         dc.w $F8FC
    544.         dc.l loc_8F45E
    545.         dc.w $8FC
    546.         dc.l loc_8F45E
    547.         dc.w $10FC
    548.         dc.l loc_8F45E
    549.         dc.w $F0FC
    550.         dc.l loc_8F45E
    551.         dc.w $18FC
    552.         dc.l loc_8F45E
    553.         dc.w $E8FC
    554. ChildObjDat_8F674:
    555.         dc.w 0
    556.         dc.l loc_8F11E
    557. DPLCPtr_SOZGhosts:
    558.         dc.l ArtUnc_SOZGhosts
    559.         dc.l DPLC_SOZGhosts
    560. byte_8F682:    dc.b  $11,   3
    561.         dc.b  $11,   3
    562.         dc.b  $10,   3
    563.         dc.b   $F,   4
    564.         dc.b   $E,   4
    565.         dc.b  $F8,  $C
    566. byte_8F68E:    dc.b 0
    567.         dc.b 3
    568.         dc.b 1
    569.         dc.b 3
    570.         dc.b 2
    571.         dc.b 4
    572.         dc.b $FC
    573. byte_8F695:    dc.b  $11,   3
    574.         dc.b  $11,   3
    575.         dc.b  $10,   3
    576.         dc.b   $F,   4
    577.         dc.b   $E,   4
    578.         dc.b   $D,   4
    579.         dc.b  $F8,  $E
    580.         dc.b    5,   3
    581.         dc.b    6,   3
    582.         dc.b    7,   4
    583.         dc.b  $FC
    584. byte_8F6AA:    dc.b  $11,   3
    585.         dc.b  $11,   3
    586.         dc.b  $10,   3
    587.         dc.b   $F,   4
    588.         dc.b   $E,   4
    589.         dc.b   $D,   4
    590.         dc.b  $F8,  $E
    591.         dc.b   $A,   3
    592.         dc.b   $B,   3
    593.         dc.b   $C,   4
    594.         dc.b  $FC
    595. byte_8F6BF:    dc.b   $D,   4
    596.         dc.b   $D,   4
    597.         dc.b   $E,   4
    598.         dc.b   $F,   4
    599.         dc.b  $10,   3
    600.         dc.b  $11,   3
    601.         dc.b  $F4
    602. byte_8F6CC:    dc.b    3,   7
    603.         dc.b    3,   7
    604.         dc.b    4,   7
    605.         dc.b  $F8, $D7
    606. byte_8F6D4:    dc.b    8,   7
    607.         dc.b    8,   7
    608.         dc.b    9,   7
    609.         dc.b  $F8, $E4
    610. DPLC_SOZGhosts:    include "General/Sprites/SOZ Ghosts/DPLC - SOZ Ghosts.asm"
    611. ; ---------------------------------------------------------------------------
     
    Last edited: Nov 29, 2023
  2. Clownacy

    Clownacy

    Tech Member
    1,059
    602
    93
    I don't have it.
     
  3. Cokie

    Cokie

    C. Okie Member
    75
    22
    8
    Does that mean that the s3k github project doesn't update a IDB file with the .asm?
     
  4. Clownacy

    Clownacy

    Tech Member
    1,059
    602
    93
    Yes, the ASM is maintained separately.