don't click here

Sonic 2 early prototype, dumped

Discussion in 'General Sonic Discussion' started by drx, Nov 7, 2006.

  1. Heran Bago

    Heran Bago

    Ah! It's Puyo battle then. Tech Member
    =D
    Best post all year.

    Nemesis - Don't play Sonic the Hedgehog Genesis for the GBA! DON'T DO IT!
     
  2. stormislandgal

    stormislandgal

    It's not a phase! Tech Member
    4,534
    10
    18
    Married life <3
    HOLY SHIT.

    Welcome back Nemesis. I'm speechless.
     
  3. Robjoe

    Robjoe

    Member
    Unbelievable. This has even breathed life back into the legendary Nemesis. Simply wonderful to see you back here, man. Now if only we could get LOst back over here... [/wishful]
     
  4. Mr. Fox

    Mr. Fox

    Member
    559
    9
    18
    Jesus Christ. You're back!!! I've just posted your s2 colourized ending hack a while ago, thought you'll never came back. But you're back. Totally amazing!

    This beta truly has a strange power to bring all oldbies back. And yes, I wish LOst was back too.
     
  5. Abwayax

    Abwayax

    a.k.a. Adrian Malacoda Member
    97
    0
    0
    Nemesis?! I thought you were, like, a myth or something. o_O
     
  6. Sparks

    Sparks

    Member
    3,145
    183
    43
    Sondro Gomez / Kyle & Lucy
    dfljhaskgsdhdseugrfdhbjdn Its like encountering a legendary Pokemon. :D




    Well for me it is, I've never seen Nemesis before. D: And worse similie of the day.
     
  7. Tweaker

    Tweaker

    Banned
    12,387
    2
    0
    ...okay, asskissing stops here, plz. Make another topic for that or something.
     
  8. stormislandgal

    stormislandgal

    It's not a phase! Tech Member
    4,534
    10
    18
    Married life <3
    K, split and merge with my new topic in the Member's Lounge, then. =P
     
  9. belink

    belink

    Member
    19
    0
    0
    Hey, has anyone noticed that the sneaker boots speed up music normally like in the final?
     
  10. drx

    drx

    mfw Researcher
    2,254
    350
    63
    :rolleyes:
    Tweaker is just bitter that he doesn't get all the attention =)
     
  11. Tweaker

    Tweaker

    Banned
    12,387
    2
    0
    Fuck you!!!! Worship ME!!!!!!!!!!!

    Yeah, because it uses the Sonic 1 driver - in the Wai beta, they use the Z80 driver, which, at the time, was still being worked on.
     
  12. djdocsonic

    djdocsonic

    Testing YOUR Hacks Since 2005... Member
    374
    0
    0
    Emerald Hill Zone
    Looking for a Rom Hack to Test.
    Ah that explains why the PSP Genesis emulator doesn't play any sound at all when I try to use WAI's BETA on it. It plays sound but doesn't show the graphics properley on drx's proto....

    DJ
     
  13. drx

    drx

    mfw Researcher
    2,254
    350
    63
    :rolleyes:
    Btw, Nemesis, there's a new compression format to crack. Wanna team up? :rolleyes:
     
  14. nineko

    nineko

    I am the Holy Cat Tech Member
    6,308
    486
    63
    italy
    Hey, can I help too? I'm kinda skilled when it comes to find algorhythms.
    Where can I find more details on what is this new compression about? Graphics, I guess?
     
  15. drx

    drx

    mfw Researcher
    2,254
    350
    63
    :rolleyes:
    Here's the subroutine (I haven't really had a go at it, but it should be easy to write a decomperssor for it):

    Code (Text):
    1. ;----------------------------------------------------
    2. ; Unknown compression format decompression routine
    3. ;----------------------------------------------------
    4.  
    5.  
    6. UnknownDec:            
    7.         moveq   #0,d0
    8.         move.w  #$7FF,d4
    9.         moveq   #0,d5
    10.         moveq   #0,d6
    11.         move.w  a3,d7
    12.         subq.w  #1,d2
    13.         beq.w   loc_1DCC
    14.         subq.w  #1,d2
    15.         beq.w   loc_1D4E
    16.         subq.w  #1,d2
    17.         beq.w   loc_1CD0
    18.         subq.w  #1,d2
    19.         beq.w   loc_1C52
    20.         subq.w  #1,d2
    21.         beq.w   loc_1BD6
    22.         subq.w  #1,d2
    23.         beq.w   loc_1B58
    24.         subq.w  #1,d2
    25.         beq.w   loc_1ADE
    26.  
    27. loc_1A62:              
    28.         move.b  (a0)+,d1
    29.         add.b   d1,d1
    30.         bcs.s   loc_1ADC
    31.         movea.l a2,a6
    32.         add.b   d1,d1
    33.         bcs.s   loc_1A84
    34.         move.b  (a1)+,d5
    35.         suba.l  d5,a6
    36.         add.b   d1,d1
    37.         bcc.s   loc_1A78
    38.         move.b  (a6)+,(a2)+
    39.  
    40. loc_1A78:              
    41.         move.b  (a6)+,(a2)+
    42.         move.b  (a6)+,(a2)+
    43.         cmp.w   a2,d7
    44.         bls.s   loc_1ACC
    45.         bra.w   loc_1BD6
    46.  
    47. loc_1A84:              
    48.         lsl.w   #3,d1
    49.         move.w  d1,d6
    50.         and.w   d4,d6
    51.         move.b  (a1)+,d6
    52.         suba.l  d6,a6
    53.         add.b   d1,d1
    54.         bcs.s   loc_1A98
    55.         add.b   d1,d1
    56.         bcs.s   loc_1AAE
    57.         bra.s   loc_1AB0
    58.  
    59. loc_1A98:              
    60.         add.b   d1,d1
    61.         bcc.s   loc_1AAC
    62.         moveq   #0,d0
    63.         move.b  (a1)+,d0
    64.         beq.s   loc_1ABE
    65.         subq.w  #6,d0
    66.         bmi.s   loc_1AC4
    67.  
    68. loc_1AA6:              
    69.         move.b  (a6)+,(a2)+
    70.         dbf d0,loc_1AA6
    71.  
    72. loc_1AAC:              
    73.         move.b  (a6)+,(a2)+
    74.  
    75. loc_1AAE:              
    76.         move.b  (a6)+,(a2)+
    77.  
    78. loc_1AB0:              
    79.         move.b  (a6)+,(a2)+
    80.         move.b  (a6)+,(a2)+
    81.         move.b  (a6)+,(a2)+
    82.         cmp.w   a2,d7
    83.         bls.s   loc_1AD4
    84.         bra.w   loc_1DCC
    85.        
    86.  
    87. loc_1ABE:              
    88.         move.w  #0,d0
    89.         rts
    90.        
    91.  
    92. loc_1AC4:              
    93.         move.w  #$FFFF,d0
    94.         moveq   #1,d2
    95.         rts
    96.        
    97.  
    98. loc_1ACC:              
    99.         move.w  #1,d0
    100.         moveq   #5,d2
    101.         rts
    102.        
    103.  
    104. loc_1AD4:              
    105.         move.w  #1,d0
    106.         moveq   #1,d2
    107.         rts
    108.        
    109.  
    110. loc_1ADC:              
    111.         move.b  (a1)+,(a2)+
    112.  
    113. loc_1ADE:              
    114.                    
    115.         add.b   d1,d1
    116.         bcs.s   loc_1B56
    117.         movea.l a2,a6
    118.         add.b   d1,d1
    119.         bcs.s   loc_1AFE
    120.         move.b  (a1)+,d5
    121.         suba.l  d5,a6
    122.         add.b   d1,d1
    123.         bcc.s   loc_1AF2
    124.         move.b  (a6)+,(a2)+
    125.  
    126. loc_1AF2:              
    127.         move.b  (a6)+,(a2)+
    128.         move.b  (a6)+,(a2)+
    129.         cmp.w   a2,d7
    130.         bls.s   loc_1B46
    131.         bra.w   loc_1C52
    132.        
    133.  
    134. loc_1AFE:              
    135.         lsl.w   #3,d1
    136.         move.w  d1,d6
    137.         and.w   d4,d6
    138.         move.b  (a1)+,d6
    139.         suba.l  d6,a6
    140.         add.b   d1,d1
    141.         bcs.s   loc_1B12
    142.         add.b   d1,d1
    143.         bcs.s   loc_1B28
    144.         bra.s   loc_1B2A
    145.        
    146.  
    147. loc_1B12:              
    148.         add.b   d1,d1
    149.         bcc.s   loc_1B26
    150.         moveq   #0,d0
    151.         move.b  (a1)+,d0
    152.         beq.s   loc_1B38
    153.         subq.w  #6,d0
    154.         bmi.s   loc_1B3E
    155.  
    156. loc_1B20:              
    157.         move.b  (a6)+,(a2)+
    158.         dbf d0,loc_1B20
    159.  
    160. loc_1B26:              
    161.         move.b  (a6)+,(a2)+
    162.  
    163. loc_1B28:              
    164.         move.b  (a6)+,(a2)+
    165.  
    166. loc_1B2A:              
    167.         move.b  (a6)+,(a2)+
    168.         move.b  (a6)+,(a2)+
    169.         move.b  (a6)+,(a2)+
    170.         cmp.w   a2,d7
    171.         bls.s   loc_1B4E
    172.         bra.w   loc_1A62
    173.        
    174.  
    175. loc_1B38:              
    176.         move.w  #0,d0
    177.         rts
    178.        
    179.  
    180. loc_1B3E:              
    181.         move.w  #$FFFF,d0
    182.         moveq   #0,d2
    183.         rts
    184.        
    185.  
    186. loc_1B46:          
    187.         move.w  #1,d0
    188.         moveq   #4,d2
    189.         rts
    190.        
    191.  
    192. loc_1B4E:              
    193.         move.w  #1,d0
    194.         moveq   #0,d2
    195.         rts
    196.        
    197.  
    198. loc_1B56:              
    199.         move.b  (a1)+,(a2)+
    200.  
    201. loc_1B58:          
    202.                    
    203.         add.b   d1,d1
    204.         bcs.s   loc_1BD4
    205.         movea.l a2,a6
    206.         add.b   d1,d1
    207.         bcs.s   loc_1B78
    208.         move.b  (a1)+,d5
    209.         suba.l  d5,a6
    210.         add.b   d1,d1
    211.         bcc.s   loc_1B6C
    212.         move.b  (a6)+,(a2)+
    213.  
    214. loc_1B6C:              
    215.         move.b  (a6)+,(a2)+
    216.         move.b  (a6)+,(a2)+
    217.         cmp.w   a2,d7
    218.         bls.s   loc_1BC4
    219.         bra.w   loc_1CD0
    220.        
    221.  
    222. loc_1B78:              
    223.         lsl.w   #3,d1
    224.         move.w  d1,d6
    225.         and.w   d4,d6
    226.         move.b  (a1)+,d6
    227.         suba.l  d6,a6
    228.         add.b   d1,d1
    229.         bcs.s   loc_1B8E
    230.         move.b  (a0)+,d1
    231.         add.b   d1,d1
    232.         bcs.s   loc_1BA6
    233.         bra.s   loc_1BA8
    234.        
    235.  
    236. loc_1B8E:          
    237.         move.b  (a0)+,d1
    238.         add.b   d1,d1
    239.         bcc.s   loc_1BA4
    240.         moveq   #0,d0
    241.         move.b  (a1)+,d0
    242.         beq.s   loc_1BB6
    243.         subq.w  #6,d0
    244.         bmi.s   loc_1BBC
    245.  
    246. loc_1B9E:              
    247.         move.b  (a6)+,(a2)+
    248.         dbf d0,loc_1B9E
    249.  
    250. loc_1BA4:              
    251.         move.b  (a6)+,(a2)+
    252.  
    253. loc_1BA6:              
    254.         move.b  (a6)+,(a2)+
    255.  
    256. loc_1BA8:              
    257.         move.b  (a6)+,(a2)+
    258.         move.b  (a6)+,(a2)+
    259.         move.b  (a6)+,(a2)+
    260.         cmp.w   a2,d7
    261.         bls.s   loc_1BCC
    262.         bra.w   loc_1ADE
    263.        
    264.  
    265. loc_1BB6:              
    266.         move.w  #0,d0
    267.         rts
    268.        
    269.  
    270. loc_1BBC:              
    271.         move.w  #$FFFF,d0
    272.         moveq   #7,d2
    273.         rts
    274.        
    275.  
    276. loc_1BC4:              
    277.         move.w  #1,d0
    278.         moveq   #3,d2
    279.         rts
    280.        
    281.  
    282. loc_1BCC:              
    283.         move.w  #1,d0
    284.         moveq   #7,d2
    285.         rts
    286.        
    287.  
    288. loc_1BD4:              
    289.         move.b  (a1)+,(a2)+
    290.  
    291. loc_1BD6:               .
    292.         add.b   d1,d1
    293.         bcs.s   loc_1C50
    294.         movea.l a2,a6
    295.         add.b   d1,d1
    296.         bcs.s   loc_1BF6
    297.         move.b  (a1)+,d5
    298.         suba.l  d5,a6
    299.         add.b   d1,d1
    300.         bcc.s   loc_1BEA
    301.         move.b  (a6)+,(a2)+
    302.  
    303. loc_1BEA:              
    304.         move.b  (a6)+,(a2)+
    305.         move.b  (a6)+,(a2)+
    306.         cmp.w   a2,d7
    307.         bls.s   loc_1C40
    308.         bra.w   loc_1D4E
    309.        
    310.  
    311. loc_1BF6:              
    312.         lsl.w   #3,d1
    313.         move.b  (a0)+,d1
    314.         move.w  d1,d6
    315.         and.w   d4,d6
    316.         move.b  (a1)+,d6
    317.         suba.l  d6,a6
    318.         add.b   d1,d1
    319.         bcs.s   loc_1C0C
    320.         add.b   d1,d1
    321.         bcs.s   loc_1C22
    322.         bra.s   loc_1C24
    323.        
    324.  
    325. loc_1C0C:              
    326.         add.b   d1,d1
    327.         bcc.s   loc_1C20
    328.         moveq   #0,d0
    329.         move.b  (a1)+,d0
    330.         beq.s   loc_1C32
    331.         subq.w  #6,d0
    332.         bmi.s   loc_1C38
    333.  
    334. loc_1C1A:              
    335.         move.b  (a6)+,(a2)+
    336.         dbf d0,loc_1C1A
    337.  
    338. loc_1C20:              
    339.         move.b  (a6)+,(a2)+
    340.  
    341. loc_1C22:              
    342.         move.b  (a6)+,(a2)+
    343.  
    344. loc_1C24:              
    345.         move.b  (a6)+,(a2)+
    346.         move.b  (a6)+,(a2)+
    347.         move.b  (a6)+,(a2)+
    348.         cmp.w   a2,d7
    349.         bls.s   loc_1C48
    350.         bra.w   loc_1B58
    351.  
    352.  
    353. loc_1C32:
    354.         move.w  #0,d0
    355.         rts
    356.  
    357.  
    358. loc_1C38:              
    359.         move.w  #$FFFF,d0
    360.         moveq   #6,d2
    361.         rts
    362.  
    363.  
    364. loc_1C40:              
    365.         move.w  #1,d0
    366.         moveq   #2,d2
    367.         rts
    368.  
    369.  
    370. loc_1C48:              
    371.         move.w  #1,d0
    372.         moveq   #6,d2
    373.         rts
    374.  
    375.  
    376. loc_1C50:              
    377.         move.b  (a1)+,(a2)+
    378.  
    379. loc_1C52:              
    380.                    
    381.         add.b   d1,d1
    382.         bcs.s   loc_1CCE
    383.         movea.l a2,a6
    384.         add.b   d1,d1
    385.         bcs.s   loc_1C72
    386.         move.b  (a1)+,d5
    387.         suba.l  d5,a6
    388.         add.b   d1,d1
    389.         bcc.s   loc_1C66
    390.         move.b  (a6)+,(a2)+
    391.  
    392. loc_1C66:          
    393.         move.b  (a6)+,(a2)+
    394.         move.b  (a6)+,(a2)+
    395.         cmp.w   a2,d7
    396.         bls.s   loc_1CBE
    397.         bra.w   loc_1DCC
    398.  
    399.  
    400. loc_1C72:              
    401.         lsl.w   #2,d1
    402.         move.b  (a0)+,d1
    403.         add.w   d1,d1
    404.         move.w  d1,d6
    405.         and.w   d4,d6
    406.         move.b  (a1)+,d6
    407.         suba.l  d6,a6
    408.         add.b   d1,d1
    409.         bcs.s   loc_1C8A
    410.         add.b   d1,d1
    411.         bcs.s   loc_1CA0
    412.         bra.s   loc_1CA2
    413.  
    414.  
    415. loc_1C8A:              
    416.         add.b   d1,d1
    417.         bcc.s   loc_1C9E
    418.         moveq   #0,d0
    419.         move.b  (a1)+,d0
    420.         beq.s   loc_1CB0
    421.         subq.w  #6,d0
    422.         bmi.s   loc_1CB6
    423.  
    424. loc_1C98:              
    425.         move.b  (a6)+,(a2)+
    426.         dbf d0,loc_1C98
    427.  
    428. loc_1C9E:              
    429.         move.b  (a6)+,(a2)+
    430.  
    431. loc_1CA0:              
    432.         move.b  (a6)+,(a2)+
    433.  
    434. loc_1CA2:              
    435.         move.b  (a6)+,(a2)+
    436.         move.b  (a6)+,(a2)+
    437.         move.b  (a6)+,(a2)+
    438.         cmp.w   a2,d7
    439.         bls.s   loc_1CC6
    440.         bra.w   loc_1BD6
    441.  
    442.  
    443. loc_1CB0:              
    444.         move.w  #0,d0
    445.         rts
    446.  
    447.  
    448. loc_1CB6:              
    449.         move.w  #$FFFF,d0
    450.         moveq   #5,d2
    451.         rts
    452.  
    453.  
    454. loc_1CBE:              
    455.         move.w  #1,d0
    456.         moveq   #1,d2
    457.         rts
    458.  
    459.  
    460. loc_1CC6:              
    461.         move.w  #1,d0
    462.         moveq   #5,d2
    463.         rts
    464.  
    465.  
    466. loc_1CCE:              
    467.         move.b  (a1)+,(a2)+
    468.  
    469. loc_1CD0:          
    470.                    
    471.         add.b   d1,d1
    472.         bcs.s   loc_1D4C
    473.         movea.l a2,a6
    474.         add.b   d1,d1
    475.         bcs.s   loc_1CF0
    476.         move.b  (a1)+,d5
    477.         suba.l  d5,a6
    478.         add.b   d1,d1
    479.         bcc.s   loc_1CE4
    480.         move.b  (a6)+,(a2)+
    481.  
    482. loc_1CE4:              
    483.         move.b  (a6)+,(a2)+
    484.         move.b  (a6)+,(a2)+
    485.         cmp.w   a2,d7
    486.         bls.s   loc_1D3C
    487.         bra.w   loc_1A62
    488.  
    489.  
    490. loc_1CF0:              
    491.         add.w   d1,d1
    492.         move.b  (a0)+,d1
    493.         lsl.w   #2,d1
    494.         move.w  d1,d6
    495.         and.w   d4,d6
    496.         move.b  (a1)+,d6
    497.         suba.l  d6,a6
    498.         add.b   d1,d1
    499.         bcs.s   loc_1D08
    500.         add.b   d1,d1
    501.         bcs.s   loc_1D1E
    502.         bra.s   loc_1D20
    503.  
    504.  
    505. loc_1D08:              
    506.         add.b   d1,d1
    507.         bcc.s   loc_1D1C
    508.         moveq   #0,d0
    509.         move.b  (a1)+,d0
    510.         beq.s   loc_1D2E
    511.         subq.w  #6,d0
    512.         bmi.s   loc_1D34
    513.  
    514. loc_1D16:              
    515.         move.b  (a6)+,(a2)+
    516.         dbf d0,loc_1D16
    517.  
    518. loc_1D1C:              
    519.         move.b  (a6)+,(a2)+
    520.  
    521. loc_1D1E:              
    522.         move.b  (a6)+,(a2)+
    523.  
    524. loc_1D20:              
    525.         move.b  (a6)+,(a2)+
    526.         move.b  (a6)+,(a2)+
    527.         move.b  (a6)+,(a2)+
    528.         cmp.w   a2,d7
    529.         bls.s   loc_1D44
    530.         bra.w   loc_1C52
    531.  
    532.  
    533. loc_1D2E:              
    534.         move.w  #0,d0
    535.         rts
    536.  
    537.  
    538. loc_1D34:          
    539.         move.w  #$FFFF,d0
    540.         moveq   #4,d2
    541.         rts
    542.  
    543.  
    544. loc_1D3C:              
    545.         move.w  #1,d0
    546.         moveq   #8,d2
    547.         rts
    548.  
    549.  
    550. loc_1D44:              
    551.         move.w  #1,d0
    552.         moveq   #4,d2
    553.         rts
    554.  
    555.  
    556. loc_1D4C:              
    557.         move.b  (a1)+,(a2)+
    558.  
    559. loc_1D4E:              
    560.         add.b   d1,d1
    561.         bcs.s   loc_1DCA
    562.         movea.l a2,a6
    563.         add.b   d1,d1
    564.         bcs.s   loc_1D70
    565.         move.b  (a0)+,d1
    566.         move.b  (a1)+,d5
    567.         suba.l  d5,a6
    568.         add.b   d1,d1
    569.         bcc.s   loc_1D64
    570.         move.b  (a6)+,(a2)+
    571.  
    572. loc_1D64:          
    573.         move.b  (a6)+,(a2)+
    574.         move.b  (a6)+,(a2)+
    575.         cmp.w   a2,d7
    576.         bls.s   loc_1DBA
    577.         bra.w   loc_1ADE
    578.  
    579.  
    580. loc_1D70:              
    581.         move.b  (a0)+,d1
    582.         lsl.w   #3,d1
    583.         move.w  d1,d6
    584.         and.w   d4,d6
    585.         move.b  (a1)+,d6
    586.         suba.l  d6,a6
    587.         add.b   d1,d1
    588.         bcs.s   loc_1D86
    589.         add.b   d1,d1
    590.         bcs.s   loc_1D9C
    591.         bra.s   loc_1D9E
    592.  
    593.  
    594. loc_1D86:          
    595.         add.b   d1,d1
    596.         bcc.s   loc_1D9A
    597.         moveq   #0,d0
    598.         move.b  (a1)+,d0
    599.         beq.s   loc_1DAC
    600.         subq.w  #6,d0
    601.         bmi.s   loc_1DB2
    602.  
    603. loc_1D94:              
    604.         move.b  (a6)+,(a2)+
    605.         dbf d0,loc_1D94
    606.  
    607. loc_1D9A:              
    608.         move.b  (a6)+,(a2)+
    609.  
    610. loc_1D9C:              
    611.         move.b  (a6)+,(a2)+
    612.  
    613. loc_1D9E:              
    614.         move.b  (a6)+,(a2)+
    615.         move.b  (a6)+,(a2)+
    616.         move.b  (a6)+,(a2)+
    617.         cmp.w   a2,d7
    618.         bls.s   loc_1DC2
    619.         bra.w   loc_1CD0
    620.  
    621.  
    622. loc_1DAC:              
    623.         move.w  #0,d0
    624.         rts
    625.  
    626.  
    627. loc_1DB2:              
    628.         move.w  #$FFFF,d0
    629.         moveq   #3,d2
    630.         rts
    631.  
    632.  
    633. loc_1DBA:              
    634.         move.w  #1,d0
    635.         moveq   #7,d2
    636.         rts
    637.  
    638.  
    639. loc_1DC2:              
    640.         move.w  #1,d0
    641.         moveq   #3,d2
    642.         rts
    643.  
    644.  
    645. loc_1DCA:              
    646.         move.b  (a1)+,(a2)+
    647.  
    648. loc_1DCC:              
    649.         add.b   d1,d1
    650.         bcs.s   loc_1E46
    651.         move.b  (a0)+,d1
    652.         movea.l a2,a6
    653.         add.b   d1,d1
    654.         bcs.s   loc_1DEE
    655.         move.b  (a1)+,d5
    656.         suba.l  d5,a6
    657.         add.b   d1,d1
    658.         bcc.s   loc_1DE2
    659.         move.b  (a6)+,(a2)+
    660.  
    661. loc_1DE2:              
    662.         move.b  (a6)+,(a2)+
    663.         move.b  (a6)+,(a2)+
    664.         cmp.w   a2,d7
    665.         bls.s   loc_1E36
    666.         bra.w   loc_1B58
    667.  
    668.  
    669. loc_1DEE:              
    670.         lsl.w   #3,d1
    671.         move.w  d1,d6
    672.         and.w   d4,d6
    673.         move.b  (a1)+,d6
    674.         suba.l  d6,a6
    675.         add.b   d1,d1
    676.         bcs.s   loc_1E02
    677.         add.b   d1,d1
    678.         bcs.s   loc_1E18
    679.         bra.s   loc_1E1A
    680.  
    681.  
    682. loc_1E02:              
    683.         add.b   d1,d1
    684.         bcc.s   loc_1E16
    685.         moveq   #0,d0
    686.         move.b  (a1)+,d0
    687.         beq.s   loc_1E28
    688.         subq.w  #6,d0
    689.         bmi.s   loc_1E2E
    690.  
    691. loc_1E10:              
    692.         move.b  (a6)+,(a2)+
    693.         dbf d0,loc_1E10
    694.  
    695. loc_1E16:              
    696.         move.b  (a6)+,(a2)+
    697.  
    698. loc_1E18:              
    699.         move.b  (a6)+,(a2)+
    700.  
    701. loc_1E1A:              
    702.         move.b  (a6)+,(a2)+
    703.         move.b  (a6)+,(a2)+
    704.         move.b  (a6)+,(a2)+
    705.         cmp.w   a2,d7
    706.         bls.s   loc_1E3E
    707.         bra.w   loc_1D4E
    708.  
    709.  
    710. loc_1E28:              
    711.         move.w  #0,d0
    712.         rts
    713.  
    714.  
    715. loc_1E2E:              
    716.         move.w  #$FFFF,d0
    717.         moveq   #2,d2
    718.         rts
    719.  
    720.  
    721. loc_1E36:              
    722.         move.w  #1,d0
    723.         moveq   #6,d2
    724.         rts
    725.  
    726.  
    727. loc_1E3E:              
    728.         move.w  #1,d0
    729.         moveq   #2,d2
    730.         rts
    731.  
    732.  
    733. loc_1E46:              
    734.         move.b  (a1)+,(a2)+
    735.         bra.w   loc_1A62
    736. ; End of function UnknownDec
    The code that calls it:

    Code (Text):
    1.         moveq   #0,d1
    2.         moveq   #0,d2
    3.         move.w  (a0)+,d0
    4.         lea  (a0,d0.w),a1
    5.         lea  ($FFFF0000).l,a2
    6.         lea  ($FFFF8000).w,a3
    7.  
    8. loc_732C:            
    9.         bsr.w   UnknownDec
    10.         tst.w   d0
    11.         bmi.s   loc_732C
    Seems to be moduled or something. It seems pretty familiar for some reason... I'd make a decompressor/compressor, but it seems pretty pointless, since it's used for GHZ 128x128 mappings and only for that (all other mappings are uncompressed).

    Apparently they were trying out a new compression algorithm, but ended up scraping the idea.

    Edit: the a0 obviously holds the GHZ compressed 128x128 mappings address
     
  16. Nemesis

    Nemesis

    Tech Member
    Interesting. The compression format is LZ77 based, but the bit flags are split from the data. The archive starts at 0x000DD850, and has a two byte header indicating the size of the bitflag block. The archive has the following (extremely general) form:

    size (word)
    bitflags[size]
    data[?]

    The location of the bitflag block is loaded into A0, and the location of the data block is loaded into A1.

    This is probably an early implementation of Kozinski compression. It's obvious why they changed from this method. Splitting the bitflags and the data offers no advantages, adds the size of the header onto every archive, and introduces a maximum archive size due to the fixed length of the header.

    Anyway, a kozinski decompressor could be adapted to work for this archive without much difficulty. When I get home this afternoon I'll dig up my decompressor see about knocking up a modified version.
     
  17. drx

    drx

    mfw Researcher
    2,254
    350
    63
    :rolleyes:
    Yes, but why would they implement an early (as you suggested) version of Kosinski, when they already implemented the final version of it in Sonic 1?
     
  18. The BSC

    The BSC

    Pending Member
    1
    0
    0
    I just want to say that this is exciting news and I will be willing to lend a hand in anyway I can...
     
  19. Nemesis

    Nemesis

    Tech Member
    They did? I don't recall Kozinski being used anywhere in Sonic 1. There doesn't seem to be anything in my notes, so if there is any data compressed using Kozinski in Sonic 1, I never found it.
     
  20. Nemesis

    Nemesis

    Tech Member
    Scratch that, Kozinski is indeed used in Sonic 1. I keep forgetting how horribly dated my guides are. I don't think we even had a compressor for Kozinski, or even used the name Kozinski, when I wrote those things.

    Anyway, on the spur of the moment, I just wrote a program to locate and decompress all potential kozinski archives within a rom, similar to the nemsrch program I wrote ages back. This one isn't quite as reliable yet (it gives a few false positives), but it does the job reasonably well. Anyone working on S3/S&K might find it useful. You can download it from http://www.bestsharing.com/files/ms0011831...ozsrch.rar.html