Hey guys, just noticed something. Upside-down spikes don't seem to hurt you... Odd, considering it isn't too hard to make them do so.
You can jump on top of them in normal gameplay, and they do cause damage. I noticed this on the first day. :P
Well, I noticed this, but Tweaker told me that it's a known issue: http://youtube.com/watch?v=nyitRk_ynTU
Also when you get to adding Hill Top Zone feel free to use my page as a refrence: http://www.sonic-cult.org/dispart.php?cati...d=2&artid=7
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'.
So does this mean they programmed him from scratch, rather than taking Sonic's object and modifying it, or something?
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
No, they copied the Sonic object and removed the underwater routines deliberately. Sanky: oh, I didn't know that =P
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.
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*
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): bossba: moveq #0,d0 move.b $24(a0),d0 move.w bossba_move_tbl(pc,d0.w),d1 jmp bossba_move_tbl(pc,d1.w) bossba_move_tbl:dc.w bossbainit-bossba_move_tbl dc.w bossbamove-bossba_move_tbl dc.w bossbatop-bossba_move_tbl dc.w bossafb-bossba_move_tbl dc.w bosssm-bossba_move_tbl bossbainit: move.l #$17526,4(a0) move.w #$2400,2(a0) ori.b #4,1(a0) move.b #$20,$19(a0); ' ' move.b #3,$18(a0) move.b #$F,$20(a0) move.b #2,$21(a0) addq.b #2,$24(a0) move.w 8(a0),$30(a0) move.w $C(a0),$38(a0) move.b $28(a0),d0 cmpi.b #$81,d0 bne.s _cnt$geba addi.w #$60,2(a0); '`' _cnt$geba: jsr actionsub; external jump bne.w worknai$geba move.b #$55,0(a1); 'U' move.l a0,$34(a1) move.l a1,$34(a0) move.l #$17526,4(a1) move.w #$400,2(a1) move.b #4,1(a1) move.b #$20,$19(a1); ' ' move.b #3,$18(a1) move.l 8(a0),8(a1) move.l $C(a0),$C(a1) addq.b #4,$24(a1) move.b #1,$1C(a1) move.b 1(a0),1(a1) move.b $28(a0),d0 cmpi.b #$81,d0 bne.s cnt2$geba addi.w #$60,2(a1); '`' cnt2$geba: tst.b $28(a0) bmi.s worknai$geba jsr actionsub; external jump bne.s worknai$geba move.b #$55,0(a1); 'U' move.l a0,$34(a1) move.l #$1747E,4(a1) move.w #$4D0,2(a1) move.b #1,$1E(a0) move.b #4,1(a1) move.b #$20,$19(a1); ' ' move.b #3,$18(a1) move.l 8(a0),8(a1) move.l $C(a0),$C(a1) addq.b #6,$24(a1) move.b 1(a0),1(a1) worknai$geba: move.b $28(a0),d0 andi.w #$7F,d0; '' add.w d0,d0 add.w d0,d0 movea.l bossbaappendage(pc,d0.w),a1 jmp (a1) bossbaappendage:dc.l actwkchk2; external reference (hex 00000000!) dc.l patchg; external reference bossbamove: move.b $28(a0),d0 andi.w #$7F,d0; '' add.w d0,d0 add.w d0,d0 movea.l bossbamove_tbl(pc,d0.w),a1 jsr (a1) lea ($1751A).l,a1 jsr vacumeguy; external jump move.b $22(a0),d0 andi.b #3,d0 andi.b #$FC,1(a0) or.b d0,1(a0) jmp drillerguy; external jump bossbamove_tbl: dc.l actionsub; external reference (again, hex 00000000) dc.l bossvac; external reference bossbatop: movea.l $34(a0),a1 move.l 8(a1),8(a0) move.l $C(a1),$C(a0) move.b $22(a1),$22(a0) move.b 1(a1),1(a0) movea.l #$1751A,a1 jsr vacumeguy; external jump jmp drillerguy; external jump afbtbl: dc.b 0,$FF, 1, 0; 0 bossafb: btst #7,$22(a0) bne.s _hurt$neba movea.l $34(a0),a1 move.l 8(a1),8(a0) move.l $C(a1),$C(a0) move.b $22(a1),$22(a0) move.b 1(a1),1(a0) subq.b #1,$1E(a0) bpl.s jump$neba move.b #1,$1E(a0) move.b $2A(a0),d0 addq.b #1,d0 cmpi.b #2,d0 ble.s _cnt$neba moveq #0,d0 _cnt$neba: move.b afbtbl(pc,d0.w),$1A(a0) move.b d0,$2A(a0) jump$neba: cmpi.b #$FF,$1A(a0) bne.w frameout; external branch rts _hurt$neba: movea.l $34(a0),a1 btst #6,$2E(a1) bne.s _here$neba rts _here$neba: addq.b #2,$24(a0) move.l #$17496,4(a0) move.w #$4D8,2(a0) move.b #0,$1A(a0) move.b #5,$1E(a0) movea.l $34(a0),a1 move.w 8(a1),8(a0) move.w $C(a1),$C(a0) addi.w #4,$C(a0) subi.w #$28,8(a0); '(' rts bosssm: subq.b #1,$1E(a0) bpl.s jump$oeba move.b #5,$1E(a0) addq.b #1,$1A(a0) cmpi.b #4,$1A(a0) bne.w jump$oeba move.b #0,$1A(a0) movea.l $34(a0),a1 move.b (a1),d0 beq.w $40E move.w 8(a1),8(a0) move.w $C(a1),$C(a0) addi.w #4,$C(a0) subi.w #$28,8(a0); '(' jump$oeba: bra.w frameout; external branch billbomb: moveq #0,d0 move.b $24(a0),d0 move.w billbomb_tbl(pc,d0.w),d1 jmp billbomb_tbl(pc,d1.w) billbomb_tbl: dc.w billbombinit-billbomb_tbl dc.w billbombmove-billbomb_tbl billbombinit: addq.b #2,$24(a0) move.l #$174C6,4(a0); external reference move.w #$5A0,2(a0) move.b #4,1(a0) move.b #1,$18(a0) move.b #0,$20(a0) move.b #$C,$19(a0) move.b #7,$1E(a0) move.b #0,$1A(a0) rts billbombmove: subq.b #1,$1E(a0) bpl.s jump$seba move.b #7,$1E(a0) addq.b #1,$1A(a0) cmpi.b #7,$1A(a0) beq.w $40E jump$seba: bra.w frameout; external branch bossafbpat: dc.w afbsp00-bossafbpat dc.w afbsp01-bossafbpat afbsp00: dc.w 1 dc.w 5, 0, 0, $1C; 0 afbsp01: dc.w 1 dc.w 5, 4, 2, $1C; 0 bosssmpat: dc.w smbsp00-bosssmpat dc.w smbsp01-bosssmpat dc.w smbsp02-bosssmpat dc.w smbsp03-bosssmpat smbsp00: dc.w 1 dc.w $F805, 0, 0,$FFF8; 0 smbsp01: dc.w 1 dc.w $F805, 4, 2,$FFF8; 0 smbsp02: dc.w 1 dc.w $F805, 8, 4,$FFF8; 0 smbsp03: dc.w 1 dc.w $F805, $C, 6,$FFF8; 0 billbombpat: dc.w bossbmsp00-billbombpat dc.w bossbmsp01-billbombpat dc.w bossbmsp02-billbombpat dc.w bossbmsp03-billbombpat dc.w bossbmsp04-billbombpat dc.w bossbmsp05-billbombpat dc.w bossbmsp06-billbombpat bossbmsp00: dc.w 1 dc.w $F805, 0, 0,$FFF8; 0 bossbmsp01: dc.w 1 dc.w $F00F, 4, 2,$FFF0; 0 bossbmsp02: dc.w 1 dc.w $F00F, $14, $A,$FFF0; 0 bossbmsp03: dc.w 1 dc.w $F00F, $24, $12,$FFF0; 0 bossbmsp04: dc.w 1 dc.w $F00F, $34, $1A,$FFF0; 0 bossbmsp05: dc.w 1 dc.w $F00F, $44, $22,$FFF0; 0 bossbmsp06: dc.w 1 dc.w $F00F, $54, $2A,$FFF0; 0 bossbachg: dc.w bossbachg1-bossbachg dc.w bossbachg2-bossbachg bossbachg1: dc.b $F, 0,$FF; 0 bossbachg2: dc.b 7, 1, 2,$FF, 0; 0 bossbapat: dc.w bossbasp00-bossbapat dc.w bossbasp01-bossbapat dc.w bossbasp02-bossbapat bossbasp00: dc.w 4 dc.w $F805, 0, 0,$FFE0; 0 dc.w $805, 4, 2,$FFE0; 4 dc.w $F80F, 8, 4,$FFF0; 8 dc.w $F807, $18, $C, $10; 12 bossbasp01: dc.w 4 dc.w $E805, $28, $14,$FFE0; 0 dc.w $E80D, $30, $18,$FFF0; 4 dc.w $E805, $24, $12, $10; 8 dc.w $D805, $20, $10, 2; 12 bossbasp02: dc.w 4 dc.w $E805, $28, $14,$FFE0; 0 dc.w $E80D, $38, $1C,$FFF0; 4 dc.w $E805, $24, $12, $10; 8 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.