Sonic 2 early prototype, dumped

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

  1. drx

    drx

    mfw Researcher
    2,204
    23
    18
    :rolleyes:
  2. Tweaker

    Tweaker

    Misfit
    12,389
    0
    0
    Hey guys, just noticed something.

    [​IMG]

    Upside-down spikes don't seem to hurt you... Odd, considering it isn't too hard to make them do so.
     
  3. Quickman

    Quickman

    Tech Member
    5,584
    0
    0
    :x
    omg porjcet
    Have you tried placing upsidedown spikes in open air and jumping on top of them?
     
  4. Guess Who

    Guess Who

    It's a miracle! Oldbie
    Already been done. That does hurt you IIRC.
     
  5. Rika Chou

    Rika Chou

    Tech Member
    5,214
    2
    18
    You can jump on top of them in normal gameplay, and they do cause damage. I noticed this on the first day. :P
     
  6. nineko

    nineko

    I am the Holy Cat Tech Member
  7. Qjimbo

    Qjimbo

    Your friendly neighbourhood lemming. Oldbie
    I'll add it to the comparisons page asap.
     
  8. Sazpaimon

    Sazpaimon

    Tech Member
    1,208
    0
    16
  9. drx

    drx

    mfw Researcher
    2,204
    23
    18
    :rolleyes:
    While disassembling the Tails' object, I discovered something - Tails doesn't react to water at all. Thought I'd let you all know :P

    Edit: He also doesn't have the Wall Recoil 'ability'.
     
  10. ICEknight

    ICEknight

    Researcher Researcher
    So does this mean they programmed him from scratch, rather than taking Sonic's object and modifying it, or something?
     
  11. stormislandgal

    stormislandgal

    It's not a phase! Tech Member
    4,506
    0
    16
    Married life <3
    It could be possible that they wouldn't have Sonic and Tails together, and disable the water when Tails was the character chosen. Why? I have 2 ideas:

    1, cause his sprites look a bit messed cause the peach and orange shades look different underwater.

    2, it's possible they wanted Tails to fly, so they would have to add swimming frames.

    Now, these are dumb ideas, and rediculously easy to get around. So... now that I think about it, dumb idea, but I'll leave those up there. =P


    My first theory, and it was debunked so fast. =P
     
  12. Sanky

    Sanky

    Random nobody Member
    57
    0
    0
    Czech Republic
    Nothing.
    Tails does not react to water in both prototypes.
     
  13. drx

    drx

    mfw Researcher
    2,204
    23
    18
    :rolleyes:
    No, they copied the Sonic object and removed the underwater routines deliberately.

    Sanky: oh, I didn't know that =P
     
  14. stormislandgal

    stormislandgal

    It's not a phase! Tech Member
    4,506
    0
    16
    Married life <3
    Disregard my debunked theory, then. =P
     
  15. Jenna

    Jenna

    Yeah, I'm that sexy. Oldbie
    83
    0
    0
    America
    level layouts, life
    I still can't believe we have our hands on another one. I love you drx. :P

    If you weren't so far away, I would gladly have your babies.
     
  16. drx

    drx

    mfw Researcher
    2,204
    23
    18
    :rolleyes:
    I'm hopefully soon moving to the states, however unfortunately I'm taken.
     
  17. Kampfer

    Kampfer

    Member
    1,607
    0
    16
    Wow, looks like my account still works here. Its been a while, and I was suprised to figure out Simon Wai moved on. It was a bigger suprise when I learned drx got ahold of this. Good time to check back in the Sonic Beta Community, eh?

    I'm pretty impressed that you guys got a new (older?) Beta. I can't wait to download and try it out. Good job drx.

    *goes to aborb new information like a sponge*
     
  18. Vangar

    Vangar

    Member
    Whoa, Kampfer, welcome back mate! Do you remember me? :P
     
  19. Syren

    Syren

    Member
    4,331
    0
    0
    Teesside, UK
    Reintergration
    Happy aborbing, kampfer
     
  20. drx

    drx

    mfw Researcher
    2,204
    23
    18
    :rolleyes:
    As some of you may know - I haven't stopped at doing the disassembly - I'm trying to dissect all leftovers.

    So I found the format for the 'symbol tables' and separated them in groups (some of them comes with code). There are like 25-30 separate tables, and I'll convert them to something usable later. Here's a sample of what I'm doing:

    Code (Text):
    1. bossba:
    2.         moveq   #0,d0
    3.         move.b  $24(a0),d0
    4.         move.w  bossba_move_tbl(pc,d0.w),d1
    5.         jmp bossba_move_tbl(pc,d1.w)
    6.        
    7. bossba_move_tbl:dc.w bossbainit-bossba_move_tbl
    8.         dc.w bossbamove-bossba_move_tbl
    9.         dc.w bossbatop-bossba_move_tbl
    10.         dc.w bossafb-bossba_move_tbl
    11.         dc.w bosssm-bossba_move_tbl
    12.  
    13. bossbainit:            
    14.         move.l  #$17526,4(a0)
    15.         move.w  #$2400,2(a0)
    16.         ori.b   #4,1(a0)
    17.         move.b  #$20,$19(a0); ' '
    18.         move.b  #3,$18(a0)
    19.         move.b  #$F,$20(a0)
    20.         move.b  #2,$21(a0)
    21.         addq.b  #2,$24(a0)
    22.         move.w  8(a0),$30(a0)
    23.         move.w  $C(a0),$38(a0)
    24.         move.b  $28(a0),d0
    25.         cmpi.b  #$81,d0
    26.         bne.s   _cnt$geba
    27.         addi.w  #$60,2(a0); '`'
    28.  
    29. _cnt$geba:             
    30.         jsr actionsub; external jump
    31.         bne.w   worknai$geba
    32.         move.b  #$55,0(a1); 'U'
    33.         move.l  a0,$34(a1)
    34.         move.l  a1,$34(a0)
    35.         move.l  #$17526,4(a1)
    36.         move.w  #$400,2(a1)
    37.         move.b  #4,1(a1)
    38.         move.b  #$20,$19(a1); ' '
    39.         move.b  #3,$18(a1)
    40.         move.l  8(a0),8(a1)
    41.         move.l  $C(a0),$C(a1)
    42.         addq.b  #4,$24(a1)
    43.         move.b  #1,$1C(a1)
    44.         move.b  1(a0),1(a1)
    45.         move.b  $28(a0),d0
    46.         cmpi.b  #$81,d0
    47.         bne.s   cnt2$geba
    48.         addi.w  #$60,2(a1); '`'
    49.  
    50. cnt2$geba:             
    51.         tst.b   $28(a0)
    52.         bmi.s   worknai$geba
    53.         jsr actionsub; external jump
    54.         bne.s   worknai$geba
    55.         move.b  #$55,0(a1); 'U'
    56.         move.l  a0,$34(a1)
    57.         move.l  #$1747E,4(a1)
    58.         move.w  #$4D0,2(a1)
    59.         move.b  #1,$1E(a0)
    60.         move.b  #4,1(a1)
    61.         move.b  #$20,$19(a1); ' '
    62.         move.b  #3,$18(a1)
    63.         move.l  8(a0),8(a1)
    64.         move.l  $C(a0),$C(a1)
    65.         addq.b  #6,$24(a1)
    66.         move.b  1(a0),1(a1)
    67.  
    68. worknai$geba:              
    69.         move.b  $28(a0),d0
    70.         andi.w  #$7F,d0; ''
    71.         add.w   d0,d0
    72.         add.w   d0,d0
    73.         movea.l bossbaappendage(pc,d0.w),a1
    74.         jmp (a1)
    75.        
    76. bossbaappendage:dc.l actwkchk2; external reference (hex 00000000!)
    77.         dc.l patchg; external reference
    78.  
    79. bossbamove:            
    80.         move.b  $28(a0),d0
    81.         andi.w  #$7F,d0; ''
    82.         add.w   d0,d0
    83.         add.w   d0,d0
    84.         movea.l bossbamove_tbl(pc,d0.w),a1
    85.         jsr (a1)
    86.         lea ($1751A).l,a1
    87.         jsr vacumeguy; external jump
    88.         move.b  $22(a0),d0
    89.         andi.b  #3,d0
    90.         andi.b  #$FC,1(a0)
    91.         or.b    d0,1(a0)
    92.         jmp drillerguy; external jump
    93.        
    94. bossbamove_tbl: dc.l actionsub; external reference (again, hex 00000000)
    95.         dc.l bossvac; external reference
    96.  
    97. bossbatop:             
    98.         movea.l $34(a0),a1
    99.         move.l  8(a1),8(a0)
    100.         move.l  $C(a1),$C(a0)
    101.         move.b  $22(a1),$22(a0)
    102.         move.b  1(a1),1(a0)
    103.         movea.l #$1751A,a1
    104.         jsr vacumeguy; external jump
    105.         jmp drillerguy; external jump
    106. afbtbl:     dc.b   0,$FF,  1,  0; 0
    107.  
    108. bossafb:               
    109.         btst    #7,$22(a0)
    110.         bne.s   _hurt$neba
    111.         movea.l $34(a0),a1
    112.         move.l  8(a1),8(a0)
    113.         move.l  $C(a1),$C(a0)
    114.         move.b  $22(a1),$22(a0)
    115.         move.b  1(a1),1(a0)
    116.         subq.b  #1,$1E(a0)
    117.         bpl.s   jump$neba
    118.         move.b  #1,$1E(a0)
    119.         move.b  $2A(a0),d0
    120.         addq.b  #1,d0
    121.         cmpi.b  #2,d0
    122.         ble.s   _cnt$neba
    123.         moveq   #0,d0
    124.  
    125. _cnt$neba:             
    126.         move.b  afbtbl(pc,d0.w),$1A(a0)
    127.         move.b  d0,$2A(a0)
    128.  
    129. jump$neba:             
    130.         cmpi.b  #$FF,$1A(a0)
    131.         bne.w   frameout; external branch
    132.         rts
    133.  
    134. _hurt$neba:            
    135.         movea.l $34(a0),a1
    136.         btst    #6,$2E(a1)
    137.         bne.s   _here$neba
    138.         rts
    139.  
    140. _here$neba:            
    141.         addq.b  #2,$24(a0)
    142.         move.l  #$17496,4(a0)
    143.         move.w  #$4D8,2(a0)
    144.         move.b  #0,$1A(a0)
    145.         move.b  #5,$1E(a0)
    146.         movea.l $34(a0),a1
    147.         move.w  8(a1),8(a0)
    148.         move.w  $C(a1),$C(a0)
    149.         addi.w  #4,$C(a0)
    150.         subi.w  #$28,8(a0); '('
    151.         rts
    152.  
    153. bosssm:                
    154.         subq.b  #1,$1E(a0)
    155.         bpl.s   jump$oeba
    156.         move.b  #5,$1E(a0)
    157.         addq.b  #1,$1A(a0)
    158.         cmpi.b  #4,$1A(a0)
    159.         bne.w   jump$oeba
    160.         move.b  #0,$1A(a0)
    161.         movea.l $34(a0),a1
    162.         move.b  (a1),d0
    163.         beq.w   $40E
    164.         move.w  8(a1),8(a0)
    165.         move.w  $C(a1),$C(a0)
    166.         addi.w  #4,$C(a0)
    167.         subi.w  #$28,8(a0); '('
    168.  
    169. jump$oeba:             
    170.         bra.w   frameout; external branch
    171.  
    172. billbomb:
    173.         moveq   #0,d0
    174.         move.b  $24(a0),d0
    175.         move.w  billbomb_tbl(pc,d0.w),d1
    176.         jmp billbomb_tbl(pc,d1.w)
    177.        
    178. billbomb_tbl:   dc.w billbombinit-billbomb_tbl
    179.         dc.w billbombmove-billbomb_tbl
    180.  
    181. billbombinit:              
    182.         addq.b  #2,$24(a0)
    183.         move.l  #$174C6,4(a0); external reference
    184.         move.w  #$5A0,2(a0)
    185.         move.b  #4,1(a0)
    186.         move.b  #1,$18(a0)
    187.         move.b  #0,$20(a0)
    188.         move.b  #$C,$19(a0)
    189.         move.b  #7,$1E(a0)
    190.         move.b  #0,$1A(a0)
    191.         rts
    192.  
    193. billbombmove:              
    194.         subq.b  #1,$1E(a0)
    195.         bpl.s   jump$seba
    196.         move.b  #7,$1E(a0)
    197.         addq.b  #1,$1A(a0)
    198.         cmpi.b  #7,$1A(a0)
    199.         beq.w   $40E
    200.  
    201. jump$seba:             
    202.         bra.w   frameout; external branch
    203.        
    204. bossafbpat: dc.w afbsp00-bossafbpat
    205.         dc.w afbsp01-bossafbpat
    206. afbsp00:    dc.w 1         
    207.         dc.w     5, 0,  0,   $1C; 0
    208. afbsp01:    dc.w 1         
    209.         dc.w     5, 4,  2,   $1C; 0
    210. bosssmpat:  dc.w smbsp00-bosssmpat 
    211.         dc.w smbsp01-bosssmpat
    212.         dc.w smbsp02-bosssmpat
    213.         dc.w smbsp03-bosssmpat
    214. smbsp00:    dc.w 1         
    215.         dc.w $F805, 0,  0,$FFF8; 0
    216. smbsp01:    dc.w 1         
    217.         dc.w $F805, 4,  2,$FFF8; 0
    218. smbsp02:    dc.w 1         
    219.         dc.w $F805, 8,  4,$FFF8; 0
    220. smbsp03:    dc.w 1         
    221.         dc.w $F805,   $C,   6,$FFF8; 0
    222. billbombpat:    dc.w bossbmsp00-billbombpat
    223.         dc.w bossbmsp01-billbombpat
    224.         dc.w bossbmsp02-billbombpat
    225.         dc.w bossbmsp03-billbombpat
    226.         dc.w bossbmsp04-billbombpat
    227.         dc.w bossbmsp05-billbombpat
    228.         dc.w bossbmsp06-billbombpat
    229. bossbmsp00: dc.w 1         
    230.         dc.w $F805, 0,  0,$FFF8; 0
    231. bossbmsp01: dc.w 1         
    232.         dc.w $F00F, 4,  2,$FFF0; 0
    233. bossbmsp02: dc.w 1         
    234.         dc.w $F00F,  $14,   $A,$FFF0; 0
    235. bossbmsp03: dc.w 1         
    236.         dc.w $F00F,  $24,  $12,$FFF0; 0
    237. bossbmsp04: dc.w 1         
    238.         dc.w $F00F,  $34,  $1A,$FFF0; 0
    239. bossbmsp05: dc.w 1         
    240.         dc.w $F00F,  $44,  $22,$FFF0; 0
    241. bossbmsp06: dc.w 1         
    242.         dc.w $F00F,  $54,  $2A,$FFF0; 0
    243. bossbachg:  dc.w bossbachg1-bossbachg
    244.         dc.w bossbachg2-bossbachg
    245. bossbachg1: dc.b  $F,  0,$FF; 0
    246. bossbachg2: dc.b   7,  1,  2,$FF,  0; 0
    247. bossbapat:  dc.w bossbasp00-bossbapat
    248.         dc.w bossbasp01-bossbapat
    249.         dc.w bossbasp02-bossbapat
    250. bossbasp00: dc.w 4         
    251.         dc.w $F805, 0,  0,$FFE0; 0
    252.         dc.w  $805, 4,  2,$FFE0; 4
    253.         dc.w $F80F, 8,  4,$FFF0; 8
    254.         dc.w $F807,  $18,   $C,  $10; 12
    255. bossbasp01: dc.w 4         
    256.         dc.w $E805,  $28,  $14,$FFE0; 0
    257.         dc.w $E80D,  $30,  $18,$FFF0; 4
    258.         dc.w $E805,  $24,  $12,  $10; 8
    259.         dc.w $D805,  $20,  $10,    2; 12
    260. bossbasp02: dc.w 4         
    261.         dc.w $E805,  $28,  $14,$FFE0; 0
    262.         dc.w $E80D,  $38,  $1C,$FFF0; 4
    263.         dc.w $E805,  $24,  $12,  $10; 8
    264.         dc.w $D805,  $20,  $10,    2; 12
    Note that this isn't code from the Nick Arcade beta, this is leftover compiled code from a previous build, to which I applied labels from said leftover symbol table. In fact, all the compiler leftovers (about 0x20000 bytes of leftovers!) come from an earlier build than what we have. I've so far confirmed that it had an earlier HTZ and a much different CPZ.

    Here's what I'm going to do next, in steps:

    -convert all these chunks of code to human-readable code with original labels.
    -make a breakdown of the earlier build that we have leftovers of
    -I'm thinking of making a more detailed timeline of both builds that were done in time and the order of design and implementation of certain aspects of the game that we know as Sonic 2 :P

    edit: forgot to add!

    I've figured out what vacumeguy and drillerguy were. it werent names for the bosses at all! in fact, caume means Animate, driller means Animation or Mapping OR display, and guy means sprite :PPPP

    vacume guy = animate sprite
    driller guy = display sprite

    Hilarious.